1. Conduid
  2. AI
  3. Nats
MCP server · AI

Nats

A Model Context Protocol (MCP) server for NATS messaging system integration

Unclaimed Apache-2.0 ai
61Good

Scored 11 days ago · breakdown

About Nats

Nats is an MCP server published by sinadarbouy in the AI category: a Model Context Protocol (MCP) server for NATS messaging system integration.

The repository has 53 stars and 9 forks, with the last commit a month ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

Claude Code
claude mcp add nats -- npx -y @daanrongen/nats-mcp
npx
npx -y @daanrongen/nats-mcp

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about Nats

Powered by Claude · Grounded in docs

I know everything about Nats. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

Static checks derived from the repository 5 days ago. Heuristics on the source, not an audit.

  • ✓README presentThe repository ships documentation.
  • ✓License declaredUsable under a stated license.
  • ✓Tests presentA test suite exists in the repository.
  • ✓Dependencies pinnedA lockfile pins dependency versions.
  • ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

v0.1.4v0.1.4 · 1 Apr 2026Changelog aaba6b61a732cd385175681b1ff68c53df0759bd Add Helm chart and Kubernetes deployment configuration for mcp-nats 5cb7be2468f5a2596e8bdb7f6840a8e3abb408e0 Add Tilt integration for mcp-nats deployment…
v0.1.3v0.1.3 · 6 Aug 2025Changelog 4509cf87af096e972632efd3b4a6e338466b9d07 Add testing utilities and update dependencies 97011dd7277815715154b4e91636a7513a1cd0a8 Add AccountTools for NATS account management f16f744fcf0f9dcabe137fc7fc138f74dc1eb59b Add…
v0.1.2v0.1.2 · 19 May 2025Changelog 5a25358a095977091755d4092f93a4964d80bbfa Add KVTools for NATS KV Store Management 6c8280aef211559bff617eb500702fd0c5f38031 Add PublishTools for NATS message publishing Released by GoReleaser.
v0.1.1v0.1.1 · 12 May 2025Changelog ed7557deba35960434dd6d3407f67380694e1d28 Add mcp-nats-avatar.png image file 0e4effa04a59e1480ed4174de389ac6119f933c8 Add optional flags to stream commands in StreamTools ab39520fec80ce15aa0fe3532e2ea90bbda4273f Refactor NATS…
v0.1.0v0.1.0 · 10 May 2025Changelog a0bd737dbefcd51fa090e904ce115ca3423e1f68 Add .gitignore to exclude specific files and directories 369946481c9a76ff9696dfa81d1a90be36d12f11 Add Docker and GoReleaser configuration files bee3bf196135405e4ed50380780c8bb52fe175fd Add…

README

mcp-nats

Install MCP Server

A Model Context Protocol (MCP) server for NATS messaging system integration

MCP Review Certified

This MCP server is certified by MCP Review.

Overview

This project provides a Model Context Protocol (MCP) server for NATS, enabling AI models and applications to interact with NATS messaging systems through a standardized interface. It exposes a comprehensive set of tools for interacting with NATS servers, making it ideal for AI-powered applications that need to work with messaging systems.

What is MCP?

The Model Context Protocol (MCP) is an open protocol that standardizes how applications provide context to Large Language Models (LLMs). This server implements the MCP specification to provide NATS messaging capabilities to LLMs and AI applications, allowing them to:

  • Interact with NATS messaging systems in a standardized way
  • Safely inspect and monitor NATS servers and streams
  • Perform read-only operations through a secure interface
  • Integrate with other MCP-compatible clients and hosts

Features

  • Server Management (Read-only Operations)
    • List and inspect NATS servers
    • Server health monitoring and ping
    • Server information retrieval
    • Round-trip time (RTT) measurement
  • Stream Operations (Read-only Operations)
    • View and inspect NATS streams
    • Stream state and information queries
    • Message viewing and retrieval
    • Subject inspection
  • Object Store Operations
    • Create and manage object store buckets
    • Put and get files from object stores
    • List buckets and their contents
    • Delete objects and buckets
    • Watch buckets for changes
    • Seal buckets to prevent updates
  • Key-Value Operations
    • Create and manage KV buckets
    • Store and retrieve key-value pairs
    • Watch for KV updates
    • Delete keys and buckets
  • Publish Operations
    • Publish messages to NATS subjects
    • Support for different message formats
    • Asynchronous message publishing
  • Account Operations
    • View account information and metrics
    • Generate account reports (connections and statistics)
    • Create and restore account backups
    • Inspect TLS chain for connected servers
  • Multi-Account Support
    • Handle multiple NATS accounts simultaneously
    • Secure credential management
  • MCP Integration
    • Implements MCP server specification
    • Compatible with MCP clients like Claude Desktop
    • Standardized tool definitions for LLM interaction
    • Safe, read-only operations for AI interaction with NATS

Requirements

  • Go 1.25 or later
  • NATS server (accessible via URL)
  • NATS credentials for authentication
  • MCP-compatible client (e.g., Claude Desktop, or other MCP clients)

Installation

Using Go

go install github.com/sinadarbouy/mcp-nats/cmd/mcp-nats@latest

Building from Source

git clone https://github.com/sinadarbouy/mcp-nats.git
cd mcp-nats
go build -o mcp-nats ./cmd/mcp-nats

Helm chart (Kubernetes)

The chart is in deploy/charts/mcp-nats. Install guides (including OCI / GHCR and umbrella-chart dependencies), values overview, probes, and the HashiCorp Vault Agent Injector example are in deploy/charts/mcp-nats/README.md.

Quick start from the repository root:

helm install mcp-nats ./deploy/charts/mcp-nats --namespace mcp-nats --create-namespace

Published releases are also installable from OCI, for example:

helm install mcp-nats oci://ghcr.io/sinadarbouy/charts/mcp-nats --version "0.1.4" --namespace mcp-nats --create-namespace

See the chart README for Chart.yaml dependency snippets and registry login.

Container image signatures

Tagged releases push ghcr.io/sinadarbouy/mcp-nats and sign the multi-arch index (and each platform manifest) with Sigstore Cosign using keyless GitHub OIDC.

Verify a published tag:

cosign verify ghcr.io/sinadarbouy/mcp-nats:0.1.4 \
  --certificate-identity-regexp 'https://github.com/sinadarbouy/mcp-nats/.github/workflows/(release\.yml@refs/tags/v.*|sign-image\.yml@refs/heads/main)' \
  --certificate-oidc-issuer https://token.actions.githubusercontent.com

Historical tags published before signing was added can be signed from Actions → sign-image (run from main).

Tilt Integration Test (Docker Desktop Kubernetes)

Use Tilt to deploy both official NATS and the local mcp-nats chart for end-to-end auth testing.

Prerequisites:

  • Tilt installed
  • Helm installed
  • Docker Desktop Kubernetes enabled
  • Current kube context set to docker-desktop

Start the integration stack:

tilt up

This uses:

  • Tiltfile
  • deploy/tilt/nats-values.yaml
  • deploy/tilt/mcp-nats-values.yaml
  • a local image build with deploy/tilt/Dockerfile.tilt before Helm deploy

Stop and clean up:

tilt down
helm uninstall -n mcp-nats-tilt nats mcp-nats
kubectl delete namespace mcp-nats-tilt --ignore-not-found

Quick verification commands:

kubectl get pods,svc -n mcp-nats-tilt
kubectl logs -n mcp-nats-tilt deploy/mcp-nats-mcp-nats
kubectl logs -n mcp-nats-tilt statefulset/nats
kubectl port-forward -n mcp-nats-tilt svc/mcp-nats-mcp-nats 8000:8000

Auth smoke test:

  • NATS is configured with mcpuser / mcppassword in deploy/tilt/nats-values.yaml.
  • mcp-nats uses the same credentials via chart-managed secret in deploy/tilt/mcp-nats-values.yaml.
  • If credentials mismatch, mcp-nats logs will show connection/authentication failures.

Configuration

Environment Variables

  • NATS_URL: The URL of your NATS server (e.g., localhost:4222)
  • NATS_<ACCOUNT>_CREDS: Base64 encoded NATS credentials for each account
    • Example: NATS_SYS_CREDS, NATS_A_CREDS
  • NATS_NO_AUTHENTICATION: Set to "true" to enable anonymous connections (no credentials required)
  • NATS_USER: Username or token for user/password authentication
  • NATS_PASSWORD: Password for user/password authentication

Command Line Flags

  • --transport: Transport type (stdio, sse, or streamable-http), default: streamable-http
  • --address: Address for HTTP transport to listen on, default: 0.0.0.0:8000
  • --endpoint-path: Endpoint path for streamable-http transport, default: /mcp
  • --sse-address: Deprecated alias of --address
  • --log-level: Log level (debug, info, warn, error), default: info
  • --json-logs: Output logs in JSON format, default: false
  • --no-authentication: Allow anonymous connections without credentials
  • --user: NATS username or token (can also be set via NATS_USER env var)
  • --password: NATS password (can also be set via NATS_PASSWORD env var)

Health Endpoints (HTTP transports)

  • GET /livez: process liveness check (does not validate NATS dependency)
  • GET /readyz: readiness check (validates TCP connectivity to NATS_URL)
  • GET /healthz: compatibility alias for liveness

These endpoints are available when running with sse or streamable-http transport.

Helm chart probes

Default probes and lifecycle.preStop are documented in deploy/charts/mcp-nats/README.md.

Authentication Methods

The MCP NATS server supports three authentication methods:

  1. Credentials-based Authentication (default): Uses NATS credentials files

    • Set NATS_<ACCOUNT>_CREDS environment variables
    • Requires account_name parameter in all tools
  2. User/Password Authentication: Uses username and password

    • Set NATS_USER and NATS_PASSWORD environment variables or use --user and --password flags
  3. Anonymous Authentication: No authentication required

    • Set NATS_NO_AUTHENTICATION=true environment variable or use --no-authentication flag

Example Usage

# Run with Streamable HTTP transport (default) and debug logging
./mcp-nats --log-level debug

# Run with custom Streamable HTTP endpoint path
./mcp-nats --transport streamable-http --address localhost:9000 --endpoint-path /mcp

# Run with JSON logging
./mcp-nats --json-logs

# Run with SSE transport
./mcp-nats --transport sse --address localhost:9000

# Run with anonymous authentication
./mcp-nats --no-authentication

# Run with user/password authentication
./mcp-nats --user myuser --password mypass

# Run with environment variables for authentication
NATS_NO_AUTHENTICATION=true ./mcp-nats
NATS_USER=myuser NATS_PASSWORD=mypass ./mcp-nats

Using VSCode with remote MCP server

Make sure your .vscode/settings.json includes:

"mcp": {
  "servers": {
    "nats": {
      "type": "streamable-http",
      "url": "http://localhost:8000/mcp"
    }
  }
}

Cursor (mcpServers):

{
  "mcpServers": {
    "nats": {
      "env": {
        "NATS_URL": "nats://localhost:4222",
        "NATS_SYS_CREDS": "<base64 of SYS account creds>",
        "NATS_A_CREDS": "<base64 of A account creds>"
      },
      "url": "http://localhost:8000/mcp"
    }
  }
}

Anonymous Authentication:

{
  "mcpServers": {
    "nats": {
      "env": {
        "NATS_URL": "nats://localhost:4222",
        "NATS_NO_AUTHENTICATION": "true"
      },
      "url": "http://localhost:8000/mcp"
    }
  }
}

User/Password Authentication:

{
  "mcpServers": {
    "nats": {
      "env": {
        "NATS_URL": "nats://localhost:4222",
        "NATS_USER": "myuser",
        "NATS_PASSWORD": "mypass"
      },
      "url": "http://localhost:8000/mcp"
    }
  }
}

If using the binary:

{
  "mcpServers": {
    "nats": {
      "command": "mcp-nats",
      "args": [
        "--transport",
        "stdio"
      ],
      "env": {
        "NATS_URL": "nats://localhost:4222",
        "NATS_SYS_CREDS": "<base64 of SYS account creds>",
        "NATS_A_CREDS": "<base64 of A account creds>"
      }
    }
  }
}

Anonymous Authentication with Binary:

{
  "mcpServers": {
    "nats": {
      "command": "mcp-nats",
      "args": [
        "--transport",
        "stdio",
        "--no-authentication"
      ],
      "env": {
        "NATS_URL": "nats://localhost:4222"
      }
    }
  }
}

User/Password Authentication with Binary:

{
  "mcpServers": {
    "nats": {
      "command": "mcp-nats",
      "args": [
        "--transport",
        "stdio",
        "--user",
        "myuser"
      ],
      "env": {
        "NATS_URL": "nats://localhost:4222",
        "NATS_PASSWORD": "mypass"
      }
    }
  }
}

Docker Configuration:

{
  "mcpServers": {
    "nats": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--init",
        "-e",
        "NATS_URL",
        "-e",
        "NATS_SYS_CREDS",
        "ghcr.io/sinadarbouy/mcp-nats:0.1.4",
        "--transport",
        "stdio"
      ],
      "env": {
        "NATS_SYS_CREDS": "<base64 of SYS account creds>",
        "NATS_URL": "<nats url>"
      }
    }
  }
}

Development

Prerequisites

  • Go 1.25+
  • Docker (optional)
  • NATS CLI
  • Understanding of MCP specification

Available Make Commands

make help      # Print help message
make build     # Build the binary
make run       # Run in stdio mode
make run-sse   # Run with SSE transport
make lint      # Run linters

Testing with stdio Transport

For detailed instructions on how to test the MCP server using stdio transport, please refer to our Stdio Example Guide.

Resources

README fetched from the repository 5 days ago. The original is authoritative.

Questions

About Nats

How do I install Nats?

Run claude mcp add nats -- npx -y @daanrongen/nats-mcp, then add the server to your MCP client's configuration.

Is Nats safe to use with an AI agent?

Its trust score is 61 out of 100 (good). It passes 5 of the 6 static security checks run so far; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Nats still maintained?

Yes — the last commit was a month ago. The repository has 53 stars and 9 forks and 1 open issues.