返回市场
纳茨MCP服务器

纳茨MCP服务器

作者:bmorphism6 星标更新:2025-01-07

项目介绍

NATS MCP Server

这是一个提供对NATS(一种云原生消息系统)访问的MCP(模型上下文协议)服务器,通过NATS CLI进行访问。

特性

  • 使用高级选项(头部、模板、回复主题)发布消息
  • 订阅具有可配置超时和消息计数的主题
  • 支持带有头部的请求-回复模式
  • 完整的NATS CLI集成
  • 错误处理和清理

要求

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

安装NATS CLI

macOS

使用Homebrew:

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

Linux

使用snap:

snap install nats

使用apt (Debian/Ubuntu):

# 首先,添加NATS仓库
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

# 然后安装
sudo apt-get update
sudo apt-get install nats-server

使用yum (RHEL/CentOS):

# 添加NATS仓库
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

# 安装
sudo yum install nats-server

Windows

使用Chocolatey:

choco install nats-io-client

使用Scoop:

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

手动安装:

  1. NATS CLI Releases下载最新版本
  2. 解压存档
  3. 将二进制文件添加到系统PATH中

从源代码构建

如果您的系统没有可用的包:

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

验证安装

安装完成后,验证CLI是否正常工作:

# 检查版本
nats --version

# 测试连接到默认服务器
nats ping

# 列出可用命令
nats help

安装

# 从npm安装
npm install @modelcontextprotocol/nats-mcp-server

# 或者克隆并从源代码构建
git clone https://github.com/bmorphism/nats-mcp-server.git
cd nats-mcp-server
npm install
npm run build

配置

服务器可以通过环境变量进行配置:

  • NATS_URL: NATS服务器URL(默认:'nats://localhost:4222')

使用

服务器提供了以下MCP工具:

publish

向NATS主题发布带有高级选项的消息。

参数:

  • subject (必需): 发布到的NATS主题
  • message (必需): 要发布的消息
  • reply (可选): 请求-回复模式的回复主题
  • headers (可选): 消息头部数组(键值对)
  • count (可选): 要发布的消息数量
  • sleep (可选): 消息之间的睡眠时间(例如:"100ms")
  • template (可选): 启用消息中的Go模板处理

示例(使用模板):

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

示例(使用头部):

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

subscribe

订阅NATS主题并接收消息。

参数:

  • subject (必需): 订阅的NATS主题
  • timeout (可选): 订阅超时时间(毫秒,默认:5000)
  • count (可选): 接收消息的数量
  • raw (可选): 只显示消息负载

示例:

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

request

发送请求消息并等待回复。

参数:

  • subject (必需): 发送请求的NATS主题
  • message (必需): 请求消息
  • timeout (可选): 请求超时时间(毫秒,默认:5000)
  • headers (可选): 请求头部数组(键值对)

示例:

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

模板函数

当使用模板(template: true)时,可以使用以下函数:

  • Count: 消息编号
  • TimeStamp: 当前时间(RFC3339格式)
  • Unix: 自1970年以来的UTC秒数
  • UnixNano: 自1970年以来的UTC纳秒数
  • Time: 当前时间
  • ID: 唯一ID
  • Random(min, max): 在min和max长度之间生成随机字符串

示例(使用随机字符串):

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

添加到MCP配置

对于Cline (VSCode扩展)

添加到~/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"
      }
    }
  }
}

对于Claude Desktop

添加到~/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"
      }
    }
  }
}

错误处理

服务器包括对以下情况的健壮错误处理:

  • 连接失败
  • 参数无效
  • 超时
  • 网络错误
  • NATS特定错误
  • CLI执行错误

开发

要构建项目:

npm run build

构建输出将在build目录中。

贡献

  1. 分叉仓库
  2. 创建功能分支 (git checkout -b feature/amazing-feature)
  3. 提交更改 (git commit -m 'Add some amazing feature')
  4. 推送到分支 (git push origin feature/amazing-feature)
  5. 打开Pull Request

许可证

MIT

致谢