Sponsored by Deepsite.site

NATS MCP Server

Created By
bmorphisma year ago
MCP server for NATS messaging system using NATS CLI - enabling AI agents to interact with NATS messaging
Content

NATS MCP Server

An MCP (Model Context Protocol) server that provides access to NATS, a cloud native messaging system, through the NATS CLI.

Features

  • Publish messages with advanced options (headers, templates, reply subjects)
  • Subscribe to subjects with configurable timeouts and message counts
  • Request-reply pattern support with headers
  • Full NATS CLI integration
  • Error handling and cleanup

Requirements

  • Node.js >= 14.0.0
  • NATS CLI (nats)

Installing NATS CLI

macOS

Using Homebrew:

brew tap nats-io/nats-tools
brew install nats-io/nats-tools/nats

Linux

Using snap:

snap install nats

Using apt (Debian/Ubuntu):

# First, add the NATS repository
echo "deb https://dl.nats.io/nats-io/repo/deb nats release" | sudo tee /etc/apt/sources.list.d/nats.list
curl -fsSL https://dl.nats.io/nats-io/repo/deb/gpg.key | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/nats.gpg

# Then install
sudo apt-get update
sudo apt-get install nats-server

Using yum (RHEL/CentOS):

# Add the NATS repository
echo "[nats]
name=NATS Repository
baseurl=https://dl.nats.io/nats-io/repo/rpm/centos/\$releasever/\$basearch
gpgcheck=1
gpgkey=https://dl.nats.io/nats-io/repo/rpm/gpg.key
enabled=1" | sudo tee /etc/yum.repos.d/nats.repo

# Install
sudo yum install nats-server

Windows

Using Chocolatey:

choco install nats-io-client

Using Scoop:

scoop bucket add nats https://github.com/nats-io/scoop-bucket.git
scoop install nats

Manual installation:

  1. Download the latest release from NATS CLI Releases
  2. Extract the archive
  3. Add the binary to your system PATH

Building from Source

If packages are not available for your system:

# Requires Go 1.16+
go install github.com/nats-io/natscli/nats@latest

Verifying Installation

After installation, verify the CLI works:

# Check version
nats --version

# Test connection to default server
nats ping

# List available commands
nats help

Installation

# Install from npm
npm install @modelcontextprotocol/nats-mcp-server

# Or clone and build from source
git clone https://github.com/bmorphism/nats-mcp-server.git
cd nats-mcp-server
npm install
npm run build

Configuration

The server can be configured using environment variables:

  • NATS_URL: NATS server URL (default: 'nats://localhost:4222')

Usage

The server provides the following MCP tools:

publish

Publish a message to a NATS subject with advanced options.

Parameters:

  • subject (required): NATS subject to publish to
  • message (required): Message to publish
  • reply (optional): Reply subject for request-reply patterns
  • headers (optional): Array of message headers (key-value pairs)
  • count (optional): Number of messages to publish
  • sleep (optional): Sleep duration between messages (e.g., "100ms")
  • template (optional): Enable Go template processing in message

Example with templates:

const result = await mcp.useTool("nats", "publish", {
  subject: "greetings",
  message: "Message {{Count}} @ {{Time}}",
  count: 5,
  sleep: "1s",
  template: true
});

Example with headers:

const result = await mcp.useTool("nats", "publish", {
  subject: "orders",
  message: "New order received",
  headers: [
    { key: "OrderId", value: "12345" },
    { key: "Priority", value: "high" }
  ]
});

subscribe

Subscribe to a NATS subject and receive messages.

Parameters:

  • subject (required): NATS subject to subscribe to
  • timeout (optional): Subscription timeout in milliseconds (default: 5000)
  • count (optional): Number of messages to receive before exiting
  • raw (optional): Show only message payload

Example:

const result = await mcp.useTool("nats", "subscribe", {
  subject: "greetings",
  timeout: 10000,
  count: 5,
  raw: true
});

request

Send a request message and wait for a reply.

Parameters:

  • subject (required): NATS subject to send request to
  • message (required): Request message
  • timeout (optional): Request timeout in milliseconds (default: 5000)
  • headers (optional): Array of request headers (key-value pairs)

Example:

const result = await mcp.useTool("nats", "request", {
  subject: "service.time",
  message: "What time is it?",
  timeout: 3000,
  headers: [
    { key: "Locale", value: "en-US" }
  ]
});

Template Functions

When using templates (template: true), the following functions are available:

  • Count: Message number
  • TimeStamp: RFC3339 format current time
  • Unix: Seconds since 1970 in UTC
  • UnixNano: Nano seconds since 1970 in UTC
  • Time: Current time
  • ID: Unique ID
  • Random(min, max): Random string between min and max length

Example with random strings:

const result = await mcp.useTool("nats", "publish", {
  subject: "test",
  message: "Random data: {{ Random 10 100 }}",
  template: true
});

Adding to MCP Configuration

For Cline (VSCode Extension)

Add to ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json:

{
  "mcpServers": {
    "nats": {
      "command": "node",
      "args": ["/path/to/nats-mcp-server/build/index.js"],
      "env": {
        "NATS_URL": "nats://localhost:4222"
      }
    }
  }
}

For Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "nats": {
      "command": "node",
      "args": ["/path/to/nats-mcp-server/build/index.js"],
      "env": {
        "NATS_URL": "nats://localhost:4222"
      }
    }
  }
}

Error Handling

The server includes robust error handling for:

  • Connection failures
  • Invalid parameters
  • Timeouts
  • Network errors
  • NATS-specific errors
  • CLI execution errors

Development

To build the project:

npm run build

The build output will be in the build directory.

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

License

MIT

Acknowledgments

Recommend Servers
TraeBuild with Free GPT-4.1 & Claude 3.7. Fully MCP-Ready.
Amap Maps高德地图官方 MCP Server
Zhipu Web SearchZhipu Web Search MCP Server is a search engine specifically designed for large models. It integrates four search engines, allowing users to flexibly compare and switch between them. Building upon the web crawling and ranking capabilities of traditional search engines, it enhances intent recognition capabilities, returning results more suitable for large model processing (such as webpage titles, URLs, summaries, site names, site icons, etc.). This helps AI applications achieve "dynamic knowledge acquisition" and "precise scenario adaptation" capabilities.
TimeA Model Context Protocol server that provides time and timezone conversion capabilities. This server enables LLMs to get current time information and perform timezone conversions using IANA timezone names, with automatic system timezone detection.
Tavily Mcp
Context7Context7 MCP Server -- Up-to-date code documentation for LLMs and AI code editors
Howtocook Mcp基于Anduin2017 / HowToCook (程序员在家做饭指南)的mcp server,帮你推荐菜谱、规划膳食,解决“今天吃什么“的世纪难题; Based on Anduin2017/HowToCook (Programmer's Guide to Cooking at Home), MCP Server helps you recommend recipes, plan meals, and solve the century old problem of "what to eat today"
Visual Studio Code - Open Source ("Code - OSS")Visual Studio Code
MCP AdvisorMCP Advisor & Installation - Use the right MCP server for your needs
Jina AI MCP ToolsA Model Context Protocol (MCP) server that integrates with Jina AI Search Foundation APIs.
ChatWiseThe second fastest AI chatbot™
WindsurfThe new purpose-built IDE to harness magic
Serper MCP ServerA Serper MCP Server
Baidu Map百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
MiniMax MCPOfficial MiniMax Model Context Protocol (MCP) server that enables interaction with powerful Text to Speech, image generation and video generation APIs.
BlenderBlenderMCP connects Blender to Claude AI through the Model Context Protocol (MCP), allowing Claude to directly interact with and control Blender. This integration enables prompt assisted 3D modeling, scene creation, and manipulation.
EdgeOne Pages MCPAn MCP service designed for deploying HTML content to EdgeOne Pages and obtaining an accessible public URL.
DeepChatYour AI Partner on Desktop
Playwright McpPlaywright MCP server
CursorThe AI Code Editor
AiimagemultistyleA Model Context Protocol (MCP) server for image generation and manipulation using fal.ai's Stable Diffusion model.