
NATS
STDIOMCP server for NATS messaging system integration with AI models and applications.
MCP server for NATS messaging system integration with AI models and applications.
A Model Context Protocol (MCP) server for NATS messaging system integration
This MCP server is certified by MCP Review.
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.
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:
go install github.com/sinadarbouy/mcp-nats/cmd/mcp-nats@latest
git clone https://github.com/sinadarbouy/mcp-nats.git cd mcp-nats go build -o mcp-nats ./cmd/mcp-nats
NATS_URL
: The URL of your NATS server (e.g., localhost:4222
)NATS_<ACCOUNT>_CREDS
: Base64 encoded NATS credentials for each account
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 authenticationNATS_PASSWORD
: Password for user/password authentication--transport
: Transport type (stdio or sse), default: stdio--sse-address
: Address for SSE server to listen on, default: 0.0.0.0:8000--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)The MCP NATS server supports three authentication methods:
Credentials-based Authentication (default): Uses NATS credentials files
NATS_<ACCOUNT>_CREDS
environment variablesaccount_name
parameter in all toolsUser/Password Authentication: Uses username and password
NATS_USER
and NATS_PASSWORD
environment variables or use --user
and --password
flagsAnonymous Authentication: No authentication required
NATS_NO_AUTHENTICATION=true
environment variable or use --no-authentication
flag# Run with SSE transport and debug logging ./mcp-nats --transport sse --log-level debug # Run with JSON logging ./mcp-nats --json-logs # Run with custom SSE address ./mcp-nats --transport sse --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
Make sure your .vscode/settings.json includes:
"mcp": { "servers": { "nats": { "type": "sse", "url": "http://localhost:8000/sse" } } }
or cursor
{ "mcpServers": { "nats": { "env": { "NATS_URL": "nats://localhost:42222", "NATS_SYS_CREDS": "<base64 of SYS account creds>" "NATS_A_CREDS": "<base64 of A account creds>" }, "url": "http://localhost:8000/sse" } } }
Anonymous Authentication:
{ "mcpServers": { "nats": { "env": { "NATS_URL": "nats://localhost:42222", "NATS_NO_AUTHENTICATION": "true" }, "url": "http://localhost:8000/sse" } } }
User/Password Authentication:
{ "mcpServers": { "nats": { "env": { "NATS_URL": "nats://localhost:42222", "NATS_USER": "myuser", "NATS_PASSWORD": "mypass" }, "url": "http://localhost:8000/sse" } } }
If using the binary:
{ "mcpServers": { "nats": { "command": "mcp-nats", "args": [ "--transport", "stdio" ], "env": { "NATS_URL": "nats://localhost:42222", "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", "cnadb/mcp-nats", "--transport", "stdio" ], "env": { "NATS_SYS_CREDS": "<base64 of SYS account creds>", "NATS_URL": "<nats url>" } } } }
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
For detailed instructions on how to test the MCP server using stdio transport, please refer to our Stdio Example Guide.