项目简介

MCP聚合器是一个强大的中间件,旨在优化Model Context Protocol (MCP) 客户端(如Cursor)与多个后端MCP服务器之间的交互。它自身作为一个MCP服务器运行,接受来自LLM客户端的请求,然后将这些请求智能地路由到其所管理的各个后端MCP服务器。这有效地解决了LLM客户端可能存在的MCP服务器连接限制问题,并提供了一个统一、可配置的工具管理层。

主要功能点

  • 统一接口: 将多个不同的MCP服务器提供的功能(工具、资源、Prompt等)汇集到一个单一的MCP服务器接口下,LLM客户端只需连接聚合器即可访问所有功能。
  • 工具命名标准化与前缀: 自动处理后端MCP服务器工具名称中的兼容性问题(如将连字符'-'转换为下划线'_'),并为每个工具添加其来源服务器的前缀(例如,来自'shortcut'服务器的'search-stories'工具会被聚合器暴露为'shortcut_search_stories'),避免命名冲突。
  • 工具过滤与管理: 允许用户通过配置文件精确控制哪些后端工具可以被聚合器暴露给LLM客户端。这有助于避免工具数量超限,并只暴露相关或安全的工具。
  • 集中配置与凭证管理: 用户只需在聚合器的配置文件中一次性定义所有后端MCP服务器的连接信息和API凭证。LLM客户端无需直接接触这些复杂的配置或敏感信息,简化了多环境下的部署和管理。
  • 多传输协议支持: 聚合器通过标准输入/输出 (stdio) 协议进行通信,确保与各种MCP客户端的广泛兼容性。

安装步骤

推荐使用安装脚本

这是最简便的安装方式,脚本会自动检测您的操作系统和架构,下载预编译的二进制文件,并将其安装到系统PATH中。

  1. 打开您的终端或命令行界面。
  2. 运行以下命令:
    curl -fsSL https://raw.githubusercontent.com/nazar256/combine-mcp/main/install.sh | bash
    您也可以安装特定版本,例如 'v1.0.0':
    curl -fsSL https://raw.githubusercontent.com/nazar256/combine-mcp/main/install.sh | bash -s -- -v v1.0.0

使用Docker (如果您熟悉Docker)

如果您 prefer 使用容器化环境,可以通过Docker运行聚合器,无需在本地安装。

  1. 确保您的系统已安装Docker。
  2. 运行以下命令启动MCP聚合器容器:
    docker run --rm -v ~/.config/mcp:/config ghcr.io/nazar256/combine-mcp:latest
    这将启动最新版本的聚合器,并将您本地的 '~/.config/mcp' 目录挂载到容器的 '/config' 目录,用于存放配置文件。

服务器配置

MCP聚合器本身是一个MCP服务器,它需要一个JSON格式的配置文件来定义它将连接哪些后端MCP服务器。这个配置文件通常会被命名为 'config.json',并放置在一个方便的位置(例如 '~/.config/mcp/')。

以下是配置文件的示例:

{
  "mcpServers": {
    "shortcut": {
      "command": "npx",
      "args": ["-y", "@shortcut/mcp"],
      "env": {
        "SHORTCUT_API_TOKEN": "您的_shortcut_API_令牌" 
      },
      "tools": {
        "allowed": ["search-stories", "get-story", "create-story"] // (可选) 允许暴露给客户端的工具列表
      }
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_TOKEN": "您的_github_API_令牌"  
      },
      "tools": {
        "allowed": ["create-pr", "list-prs", "get-pr"] // (可选) 允许暴露给客户端的工具列表
      }
    }
  }
}

在上述配置中:

  • 'mcpServers': 这是一个包含所有后端MCP服务器配置的JSON对象。
  • '"shortcut"' 和 '"github"': 这是您为每个后端MCP服务器自定义的名称。这些名称将作为前缀用于聚合器暴露的工具,例如'shortcut_search_stories'。
  • 'command': 用于启动后端MCP服务器进程的命令(例如 'npx' 或 '/usr/local/bin/my-mcp-server')。
  • 'args': 传递给 'command' 的命令行参数列表。
  • 'env': 启动后端MCP服务器进程所需的环境变量,通常用于传递API密钥等敏感凭证。
  • 'tools.allowed': 一个可选的字符串数组,列出该后端服务器中您希望聚合器暴露给最终客户端的工具名称。如果此项不存在,则暴露该服务器的所有工具;如果为空数组,则不暴露任何工具。

基本使用方法

配置好MCP聚合器后,您的LLM客户端(如Cursor)无需再分别配置多个后端MCP服务器。相反,只需将客户端配置为连接到这个MCP聚合器即可。

以下是LLM客户端(以Cursor为例)的配置示例,假设 'combine-mcp' 已通过安装脚本安装并位于您的系统PATH中,且您的聚合器配置文件在 '~/.config/mcp/config.json':

{
  "mcpServers": {
    "aggregator": { // 您为聚合器自定义的名称,客户端将通过这个名称识别它
      "command": "combine-mcp", // 启动MCP聚合器的命令
      "env": {
        "MCP_CONFIG": "~/.config/mcp/config.json" // 指向聚合器配置文件的路径
      }
    }
  }
}

如果您选择使用Docker运行聚合器,客户端配置示例如下:

{
  "mcpServers": {
    "aggregator": {
      "command": "docker",
      "args": ["run", "--rm", "-v", "~/.config/mcp:/config", "ghcr.io/nazar256/combine-mcp:latest"],
      "env": {
        "MCP_CONFIG": "/config/config.json"
      }
    }
  }
}

通过上述配置,您的LLM客户端将只与 'combine-mcp' 聚合器通信。聚合器将负责透明地处理所有后端MCP服务器的初始化、工具发现、工具名称转换、请求路由和响应处理,为您提供一个无缝且强大的工具集成体验。

信息

分类

开发者工具