An MCP server for integrating with the NATS messaging system.
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.
Interact with RetellAI's voice services to create conversational voice AI.
A server for interacting with the Beeper communication network.
Interact with Africa's Talking airtime service and store transaction data in a local SQLite database.
Access the Waroom API through the Model Context Protocol.
Post to the Bluesky social network using the AT Protocol.
An MCP server for interacting with Slack workspaces using user tokens, without requiring bots or special permissions.
An AI-to-AI consultation system for complex problem-solving and reasoning, using OpenRouter for model access.
Connect to any function, any language, across network boundaries using AgentRPC.
A server for interacting with LinkedIn, including authentication and posting capabilities.
An open-source messaging server for client-to-client communication using MCP HTTP streaming, configurable via an external JSON file.