使用说明
NATS MCP服务器
一个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=<type> Transport type: 'stdio' (default) or 'sse'
--port=<port> HTTP port for SSE transport (default: 3000)
--host=<host> Host to bind for SSE transport (default: 0.0.0.0)
--help, -h Show help message
Claude桌面集成
添加到您的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文档”
贡献
欢迎投稿!请随时提交拉取请求。
许可证
作者
肖恩 马林卡斯@鹅)
