项目简介
该项目实现了Model Context Protocol (MCP) 服务器,旨在通过标准化的接口连接人工智能应用(特别是大型语言模型 LLM)与 NATS 消息系统。它将 NATS 的功能封装为 MCP 工具,允许 AI 安全地查询 NATS 服务器状态、查看 Streams 信息和消息等。
主要功能点
- NATS 服务器管理 (只读): 允许查看已知的 NATS 服务器列表、获取服务器详细信息和执行 Ping 测试,帮助 AI 了解 NATS 系统的健康状况和拓扑。
- NATS Stream 操作 (只读): 提供查询 Streams 列表、获取单个 Stream 的详细信息和状态、查看 Stream 中的消息(只读)、查找 Streams 以及查询 Stream 持有的主题等功能。
- 多账户支持: 支持配置和使用多个 NATS 账户,通过账户名称进行隔离和认证。
- MCP 标准集成: 完全遵循 MCP 服务器规范,暴露标准化的工具接口,可与任何兼容 MCP 的客户端(如某些 LLM 客户端或开发环境)无缝集成。
- 安全只读操作: 所有暴露的 NATS 操作都被设计为只读,确保 AI 交互的安全性,避免误操作对生产环境造成影响。
安装步骤
安装 Go 1.24 或更高版本。确保你可以访问一个 NATS 服务器,并已准备好相应的认证凭据。还需要安装 NATS CLI 工具。
可以通过以下两种方式安装服务器:
- 使用 Go 命令安装:
打开终端并运行:
这会将可执行文件安装到你的 Go bin 目录。go install github.com/sinadarbouy/mcp-nats/cmd/mcp-nats@latest - 从源代码构建:
克隆仓库:
构建项目:git clone https://github.com/sinadarbouy/mcp-nats.git cd mcp-nats
这将在当前目录生成 'mcp-nats' 可执行文件。go build -o mcp-nats ./cmd/mcp-nats
服务器配置
MCP 服务器通过环境变量和命令行参数进行配置。对于使用 MCP 的客户端(如 VS Code 或 Cursor 编辑器),你需要将 MCP 服务器的启动信息添加到客户端的设置中。
通过环境变量配置 NATS 连接:
- 'NATS_URL': 指定要连接的 NATS 服务器地址 (例如: 'nats://localhost:4222')。
- 'NATS_<账户名称>_CREDS': 为每个需要访问的 NATS 账户提供 Base64 编码的凭据文件内容。例如,'NATS_SYS_CREDS' 用于系统账户凭据,'NATS_USERA_CREDS' 用于名为 'USERA' 的账户凭据。
通过命令行参数配置服务器行为:
- '--transport': 指定服务器使用的传输协议,可以是 'stdio' 或 'sse'。默认为 'stdio'。
- '--sse-address': 当 '--transport' 设置为 'sse' 时,指定服务器监听的地址和端口。默认为 '0.0.0.0:8000'。
- '--log-level': 设置日志级别 (debug, info, warn, error)。默认为 'info'。
- '--json-logs': 如果设置为 'true',则日志将以 JSON 格式输出。
MCP 客户端配置示例 (如 VS Code 或 Cursor 的 'settings.json'):
要让你的 MCP 客户端连接到此服务器,你需要在客户端配置中指定如何启动或连接到此服务器。通常,这需要提供服务器可执行文件的路径或连接地址,以及必要的环境变量。
配置通常是一个 JSON 对象,包含服务器列表。每个服务器条目需要指定:
- 一个标识该 MCP 服务器的名称 (例如 '"nats"')。
- 连接类型和信息:
- 如果使用 'stdio' 传输:
- 'command': 服务器可执行文件的路径 (例如 '"mcp-nats"')。
- 'args': 启动服务器时需要传递的命令行参数数组 (例如 '["--transport", "stdio"]')。
- 'env': 启动服务器进程时需要设置的环境变量对象 (例如 '{ "NATS_URL": "nats://localhost:4222", "NATS_SYS_CREDS": "<你的 Base64 编码的系统账户凭据>", "NATS_USERA_CREDS": "<你的 Base64 编码的 USERA 账户凭据>" }')。
- 如果使用 'sse' 传输:
- 'type': 设置为 '"sse"'。
- 'url': 服务器监听的 SSE 地址 (例如 '"http://localhost:8000/sse"')。
- 'env': 如果需要在启动服务器前设置环境变量,可以在此提供。注意:对于 SSE,环境变量通常在服务器独立运行时设置,客户端配置中的 'env' 可能仅用于启动服务器进程(如果客户端负责启动的话)。
- 如果使用 'stdio' 传输:
基本使用方法
- 设置环境变量: 在启动 MCP 服务器之前,设置好 'NATS_URL' 和必要的 'NATS_<账户名称>_CREDS' 环境变量。
- 启动服务器:
- 如果使用 stdio 传输:在终端运行安装或构建生成的可执行文件,例如 './mcp-nats --transport stdio'。服务器将通过标准输入/输出进行通信。
- 如果使用 SSE 传输:在终端运行可执行文件并指定 SSE 地址,例如 './mcp-nats --transport sse --sse-address 0.0.0.0:8000'。服务器将在指定的地址监听连接。
- 配置 MCP 客户端: 在你的 MCP 客户端(如支持 MCP 的 AI 助手或编辑器)中,按照客户端的文档添加 MCP 服务器配置,指向你启动的 'mcp-nats' 服务器。
- 在 AI 中使用: 客户端连接成功后,AI 模型将能够发现并使用 'mcp-nats' 提供的工具来查询 NATS 服务器和 Stream 信息。
信息
分类
AI与计算