NATS MCP服务器
](https://www.npmjs.com/package/mcp-nats) ](https://www.npmjs.com/package/mcp-nats)  ](https://nodejs.org) 
一个MCP(模型上下文协议)服务器,向Claude等LLM公开NATS消息传递功能。这使AI助手能够与NATS消息传递基础设施进行交互——发布消息、订阅、执行请求-回复操作、管理JetStream流和消费者,以及使用键值存储。
特性
- 核心NATS运营:发布消息、订阅主题、请求回复模式
- 实时订阅:监听具有超时和最大消息限制的消息,通配符支持
- 急流:流管理、健康监控、持续发布并确认
- 消费者管理:创建、列出、暂停、恢复、获取和删除JetStream消费者
- 键值存储:具有过滤支持的获取、放置、删除和列出键
- 对象存储:使用元数据存储和检索大型对象
- 嵌入式文档:直接通过工具和资源访问NATS文档
- 资源:查询服务器信息、列表流、KV桶和文档
- 多个传输:Stdio(默认)或SSE用于网络可访问的HTTP服务器
需求
- Node.js 20+(或 包子 发展)
- 启用JetStream的NATS服务器
- Docker(可选,用于运行测试)
安装
通过npx(推荐)
无需安装-直接运行:
npx mcp-nats全局安装
npm install -g mcp-nats
mcp-nats来源(用于开发)
git clone https://github.com/Gooseus/mcp-nats.git
cd mcp-nats
bun install
bun run start快速开始
- 使用JetStream启动NATS服务器:
docker run -p 4222:4222 nats:latest -js- 运行MCP服务器:
# Via npx
npx mcp-nats
# Or if installed globally
mcp-nats
# Or from source
bun run start- 或者使用HTTP/SSE传输进行网络访问:
npx mcp-nats --transport=sse --port=3000
# Server will be available at http://localhost:3000/mcp- MCP检验员测试:
npx @modelcontextprotocol/inspector npx mcp-nats配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
NATS_URL | NATS服务器URL | nats://localhost:4222 |
NATS_USER | 身份验证用户名 | - |
NATS_PASS | 身份验证密码 | - |
NATS_TOKEN | 令牌身份验证 | - |
NATS_CREDS_PATH | 凭据文件路径(NGS/Synadia) | - |
使用Synadia Cloud? 看 SYNADIA.md 获取完整的设置指南。
命令行选项
bun run src/index.ts [options]
Options:
--transport= Transport type: 'stdio' (default) or 'sse'
--port=
HTTP port for SSE transport (default: 3000)
--host= Host to bind for SSE transport (default: 0.0.0.0)
--help, -h Show help messageClaude桌面集成
添加到您的Claude桌面配置(~/Library/Application Support/Claude/claude_desktop_config.json 在Mac上):
{
"mcpServers": {
"nats": {
"command": "npx",
"args": ["mcp-nats"],
"env": {
"NATS_URL": "nats://localhost:4222"
}
}
}
}或者,如果全局安装:
{
"mcpServers": {
"nats": {
"command": "mcp-nats",
"env": {
"NATS_URL": "nats://localhost:4222"
}
}
}
}或者来自Bun的消息来源:
{
"mcpServers": {
"nats": {
"command": "bun",
"args": ["/absolute/path/to/mcp-nats/src/index.ts"],
"env": {
"NATS_URL": "nats://localhost:4222"
}
}
}
}可用工具
核心NATS
| 工具 | 说明 | 参数 |
|---|---|---|
nats_publish | 向主题发布消息 | subject, payload, headers? |
nats_request | 请求回复模式 | subject, payload, timeout? |
nats_subscribe | 订阅和收集消息 | subject, timeout?, max_messages?, queue? |
nats_server_info | 获取NATS服务器连接信息 | - |
键值存储
| 工具 | 说明 | 参数 |
|---|---|---|
nats_kv_get | 从KV桶中获取值 | bucket, key |
nats_kv_put | 将价值存储在KV桶中 | bucket, key, value |
nats_kv_delete | 从KV存储桶中删除密钥 | bucket, key |
nats_kv_list_keys | 列出存储桶中的密钥 | bucket, filter? |
JetStream流
| 工具 | 说明 | 参数 |
|---|---|---|
nats_stream_list | 列出所有JetStream流 | - |
nats_stream_info | 获取流信息 | stream |
nats_stream_publish | 发布到JetStream | subject, payload |
nats_stream_get_messages | 从流中获取消息 | stream, count?, startSeq? |
nats_stream_health | 通过消费者状态获取流健康状况 | stream, lag_threshold?, ack_pending_threshold? |
JetStream消费者
| 工具 | 说明 | 参数 |
|---|---|---|
nats_consumer_create | 创造消费者 | stream, name, deliver_policy?, ack_policy?, filter_subject? |
nats_consumer_info | 获取消费者详细信息 | stream, consumer |
nats_consumer_list | 列出流媒体的消费者 | stream |
nats_consumer_delete | 删除消费者 | stream, consumer |
nats_consumer_pause | 暂停消费者 | stream, consumer, until? |
nats_consumer_resume | 恢复消费者 | stream, consumer |
nats_consumer_fetch | 从持久消费者那里获取消息 | stream, consumer, batch?, expires? |
对象存储
| 工具 | 说明 | 参数 |
|---|---|---|
nats_obj_list_buckets | 列出所有对象存储桶 | - |
nats_obj_create_bucket | 创建新的对象存储桶 | bucket, description?, max_bytes?, storage?, ttl? |
nats_obj_delete_bucket | 删除对象存储桶 | bucket |
nats_obj_list | 列出bucket中的对象 | bucket |
nats_obj_put | 存储对象 | bucket, name, data, description? |
nats_obj_get | 获取一个对象 | bucket, name |
nats_obj_delete | 删除对象 | bucket, name |
nats_obj_info | 获取对象元数据 | bucket, name |
文档
| 工具 | 说明 | 参数 |
|---|---|---|
nats_docs_list | 列出可用的NATS文档主题 | - |
nats_docs_read | 阅读有关主题的NATS文档 | topic |
可用资源
服务器资源
| 资源 | URI | 描述 |
|---|---|---|
| 溪流 | nats://streams | 列出所有带有元数据的JetStream流 |
| KV铲斗 | nats://kv | KV铲斗信息 |
| 服务器信息 | nats://server | NATS服务器连接详细信息 |
文献资源
| 资源 | URI | 描述 |
|---|---|---|
| 受试者 | nats://docs/subjects | NATS主题命名约定和通配符 |
| Acks | nats://docs/acks | NATS确认模式和语义 |
| Pub/Sub | nats://docs/pubsub | 核心NATS发布-订阅模式 |
| 请求/回复 | nats://docs/reqreply | NATS请求-应答消息模式 |
| JetStream | nats://docs/jetstream | JetStream概述和持久性 |
| 溪流 | nats://docs/streams | JetStream流配置和保留 |
| 消费者 | nats://docs/consumers | JetStream消费者类型和政策 |
| 标题 | nats://docs/headers | NATS消息头和元数据 |
| 关键价值 | nats://docs/kv | NATS键值存储指南 |
| 对象存储 | nats://docs/objectstore | NATS对象存储指南 |
苏格兰和南方能源公司运输
SSE传输允许网络客户端通过HTTP连接到MCP服务器。这使得:
- Web浏览器客户端
- 远程连接
- 多个并发客户端
- 与基于网络的人工智能工具集成
# Start with SSE transport
bun run start:sse
# Or with custom port
bun run src/index.ts --transport=sse --port=8080终点:
GET /health-健康检查POST /mcp-JSON-RPC端点(需要Accept: application/json, text/event-stream)GET /mcp-SSE流(需要Accept: text/event-stream)
发展
# Run in development mode (with watch)
bun run dev
# Run with SSE in dev mode
bun run dev:sse
# Run tests
bun run test:up # Start NATS container
bun test # Run test suite
bun run test:down # Stop NATS container
# Or all-in-one
bun run test:ci
# Build for Node.js distribution
bun run build测试
该项目使用Bun的内置测试运行器和Docker Compose用于NATS服务器:
# Start test infrastructure
docker compose up -d
# Run tests (55 tests covering all tools, resources, and transports)
bun test
# Stop test infrastructure
docker compose down示例用法
连接到Claude Desktop后,您可以要求Claude:
- “向'orders.new'主题发布包含订单详细信息的消息”
- “订阅'events.>'并收听10秒的消息”
- “检查订单流中有哪些消息”
- “在ORDERS流中创建一个只接收‘ORDERS.important’消息的消费者”
- “列出EVENTS流中的所有消费者”
- “检查订单流的运行状况”
- 将此配置存储在密钥“app.settings”下的“config”KV bucket中
- “将此大文件存储在'files'对象存储桶中”
- “列出NATS服务器中的所有流”
- “向'api.users.get'发送请求并等待响应”
- “阅读JetStream消费者的NATS文档”
贡献
欢迎投稿!请随时提交拉取请求。
- Bug报告和功能请求: 打开一个问题
- 问题和讨论:
许可证
作者
肖恩 马林卡斯@鹅)
