项目简介

该项目实现了一个网关,能够根据配置文件自动启动多个 Model Context Protocol (MCP) 服务器。这些服务器可以是基于 Stdio 协议(通过 'supergateway' 转换为 SSE)或直接基于 SSE 协议。网关启动服务器后,会将它们的网络地址写入一个运行时文件 ('mcp-runtime.json'),方便 LLM 客户端或代理程序发现和连接。

主要功能点

  • 多服务器管理: 根据一份配置启动、管理和监控多个 MCP 服务器进程。
  • 统一 SSE 接入: 将不同类型的 MCP 服务器(stdio 或原生 SSE)通过统一的 HTTP/SSE 接口暴露。
  • 运行时配置生成: 自动生成包含所有可用 MCP 服务器地址的 JSON 文件,便于客户端动态发现。
  • 支持多种工具: 包含示例 MCP 服务器,提供 VectorDB 查找、SEC EDGAR 数据访问、基本数学运算、随机词汇等多种工具能力。
  • 会话管理和能力声明: 支持 MCP 协议的基本会话管理和工具列表('list_tools')声明。

安装步骤

  1. 安装 Python 和 npm: 确保系统已安装 Python 3.8+ 和 npm。
  2. 安装 Python 依赖: 运行 'pip install fastmcp openai json5'。
  3. 安装 Node.js/npm 依赖: 运行 'npm install -g supergateway'。
  4. 设置环境变量: 项目需要 'OPENAI_API_KEY' 环境变量,某些工具可能还需要 'BRAVE_API_KEY'、'GIT_PERSONAL_KEY' 等。请根据需要设置。

服务器配置 (供网关使用)

网关通过读取一个 JSON 文件(例如 '.vscode/mcp.json')来确定需要启动哪些 MCP 服务器。这个文件通常包含一个 'servers' 对象,其中每个键代表一个服务器的名称,对应的值是一个配置对象,至少包含以下信息:

  • 'command': 要运行的可执行文件路径(例如 '"python"' 或 '"npx"')。
  • 'args': 传递给 'command' 的参数列表(例如 '["mcpServer01.py"]')。
  • 'type' (可选): 服务器的传输类型,可以是 '"stdio"' (需要通过 'supergateway' 转换) 或 '"sse"' (直接启动)。如果省略,默认假定为 '"sse"'。
  • 'env' (可选): 一个键值对对象,指定该服务器进程需要的额外环境变量。网关启动时会从当前环境中读取并设置这些变量。

网关启动后,会生成一个运行时文件(例如 'mcp-runtime.json'),其中包含服务器名称到其可连接 URL 的映射。MCP 客户端应读取这个运行时文件来获取服务器的连接信息。

基本使用方法

  1. 配置服务器: 编辑或创建 '.vscode/mcp.json' 文件,定义您希望启动的 MCP 服务器及其配置。
  2. 启动网关: 运行 'python SseServer/gateway_runner.py'。网关将启动所有配置的 MCP 服务器,并打印运行时文件 ('.vscode/mcp-runtime.json') 的位置。
  3. 客户端连接: 运行示例客户端或代理程序(例如 'python SseServer/agent.py'),这些程序会读取 'mcp-runtime.json' 文件,自动连接到所有列出的 MCP 服务器,并利用它们提供的工具与 LLM 进行交互。
  4. 停止网关: 在运行 'gateway_runner.py' 的终端按 'Ctrl+C' 即可停止网关及所有子进程。

信息

分类

网页与API