项目简介

该项目实现了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 工具。

可以通过以下两种方式安装服务器:

  1. 使用 Go 命令安装: 打开终端并运行:
    go install github.com/sinadarbouy/mcp-nats/cmd/mcp-nats@latest
    这会将可执行文件安装到你的 Go bin 目录。
  2. 从源代码构建: 克隆仓库:
    git clone https://github.com/sinadarbouy/mcp-nats.git
    cd mcp-nats
    构建项目:
    go build -o mcp-nats ./cmd/mcp-nats
    这将在当前目录生成 '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' 可能仅用于启动服务器进程(如果客户端负责启动的话)。

基本使用方法

  1. 设置环境变量: 在启动 MCP 服务器之前,设置好 'NATS_URL' 和必要的 'NATS_<账户名称>_CREDS' 环境变量。
  2. 启动服务器:
    • 如果使用 stdio 传输:在终端运行安装或构建生成的可执行文件,例如 './mcp-nats --transport stdio'。服务器将通过标准输入/输出进行通信。
    • 如果使用 SSE 传输:在终端运行可执行文件并指定 SSE 地址,例如 './mcp-nats --transport sse --sse-address 0.0.0.0:8000'。服务器将在指定的地址监听连接。
  3. 配置 MCP 客户端: 在你的 MCP 客户端(如支持 MCP 的 AI 助手或编辑器)中,按照客户端的文档添加 MCP 服务器配置,指向你启动的 'mcp-nats' 服务器。
  4. 在 AI 中使用: 客户端连接成功后,AI 模型将能够发现并使用 'mcp-nats' 提供的工具来查询 NATS 服务器和 Stream 信息。

信息

分类

AI与计算