使用说明

项目简介

MCP Host CLI 是一个基于 Node.js 开发的 MCP 主机应用程序,它本身不是 MCP 服务器,而是一个MCP 服务器的管理和代理工具。它可以帮助用户连接和管理多个独立的 MCP 服务器,并通过统一的 HTTP API 接口,对外提供这些 MCP 服务器所提供的工具和资源访问能力。您可以将 MCP Host CLI 理解为一个 MCP 服务器的网关或者聚合层

主要功能点

  • 统一管理多个 MCP 服务器: 通过 JSON 配置文件集中管理多个 MCP 服务器连接,支持同时连接多种类型的 MCP 服务器。
  • 支持多种传输协议: 支持 STDIO 和 SSE 两种 MCP 服务器客户端与服务器端的通信方式。
  • 统一 HTTP API 接口: 提供简洁的 HTTP API,用于获取所有托管服务器的工具和资源列表,以及调用特定服务器上的工具和读取资源。
  • 动态更新服务器连接: 无需重启 Host CLI,即可通过 API 动态更新服务器连接配置,方便灵活地调整和扩展后端 MCP 服务器。

安装步骤

推荐使用 'npx' 直接运行,无需本地构建:

npx mcp-host-cli

或者,您也可以选择本地构建:

  1. 克隆仓库到本地:
    git clone https://github.com/liujilongObject/mcp-host-cli.git
    cd mcp-host-cli
  2. 安装依赖:
    npm install
  3. 启动服务(开发模式或生产模式):
    • 开发模式: 'npm run dev'
    • 生产模式: 'npm run build' 后,根据您的 Node.js 环境选择执行 'production_node.exe dist/index.js' 或 'node dist/index.js'

服务器配置

MCP Host CLI 通过读取当前工作目录下的 'mcp_servers.config.json' 文件来管理 MCP 服务器连接。您需要创建或修改该文件来配置您要连接的 MCP 服务器。

'mcp_servers.config.json' 示例:

{
  "mcp_servers": [
    {
      "enabled": true,
      "server_name": "server-puppeteer", // 服务器名称,自定义,用于API请求时指定服务器
      "type": "stdio", // 连接类型,支持 "stdio" 或 "sse"
      "command": "npx", // 启动服务器的命令,例如 "npx" 表示使用 npx 命令
      "args": [ // 命令参数,例如 ["-y", "@modelcontextprotocol/server-puppeteer"] 表示使用 npx 运行 @modelcontextprotocol/server-puppeteer
        "-y",
        "@modelcontextprotocol/server-puppeteer"
      ]
    },
    {
      "enabled": true,
      "server_name": "server-everything-sse", // 服务器名称
      "type": "sse", // 连接类型,SSE
      "sse_url": "http://localhost:3001/sse" // SSE 服务器的 URL 地址
    },
    {
      "enabled": true,
      "server_name": "github", // 服务器名称
      "type": "stdio", // 连接类型,stdio
      "command": "npx", // 启动命令
      "args": [ // 命令参数
        "-y",
        "@modelcontextprotocol/server-github"
      ],
      "env": { // 环境变量配置,如果 MCP 服务器需要环境变量,可以在这里配置
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
      }
    }
  ]
}

配置项说明:

  • 'enabled': 布尔值,'true' 表示启用该服务器连接,'false' 表示禁用。
  • 'server_name': 字符串,服务器名称,用于在 API 请求中标识和指定服务器。请确保名称的唯一性
  • 'type': 字符串,连接类型,'"stdio"' 表示使用 STDIO 传输协议,'"sse"' 表示使用 SSE 传输协议。
  • 'command' (当 'type' 为 '"stdio"' 时): 字符串,启动 MCP 服务器的命令。通常是可执行文件的路径或系统命令,例如 'node'、'python'、'npx' 等。
  • 'args' (当 'type' 为 '"stdio"' 时): 字符串数组,传递给启动命令的参数。例如,如果命令是 'npx',参数可以是 '["-y", "@modelcontextprotocol/server-xxx"]',用于运行指定的 npm 包。
  • 'env' (当 'type' 为 '"stdio"' 时,可选): 对象,用于设置 MCP 服务器运行时的环境变量。例如,某些服务器可能需要 API 密钥或访问令牌等环境变量。
  • 'sse_url' (当 'type' 为 '"sse"' 时): 字符串,SSE MCP 服务器的 URL 地址。

重要提示: 您需要在 'mcp_servers.config.json' 文件中配置您想要连接的 MCP 服务器的启动命令 (command) 及其参数 (args)SSE URL ('sse_url')。MCP Host CLI 自身并不提供工具或资源,它只是连接和代理您配置的 MCP 服务器。

基本使用方法

MCP Host CLI 启动后,默认运行在 'http://localhost:17925'。您可以通过以下 HTTP API 接口访问托管的 MCP 服务器的功能:

1. 获取所有工具列表:

GET http://localhost:17925/api/tools

2. 调用工具:

POST http://localhost:17925/api/tools/toolCall
Content-Type: application/json

请求体 (JSON):
{
  "server_name": "服务器名称", //  您在 mcp_servers.config.json 中配置的服务器名称
  "tool_name": "工具名称",    //  要调用的工具名称,从获取工具列表API中获取
  "tool_args": { ... }     //  工具参数,根据工具的 inputSchema 定义
}

3. 获取所有资源列表:

GET http://localhost:17925/api/resources

4. 读取特定资源:

POST http://localhost:17925/api/resources/read
Content-Type: application/json

请求体 (JSON):
{
  "server_name": "服务器名称", //  您在 mcp_servers.config.json 中配置的服务器名称
  "resource_uri": "资源URI"   //  要读取的资源 URI,从获取资源列表API中获取
}

5. 更新服务器连接 (动态加载配置):

POST http://localhost:17925/api/connections/update
Content-Type: application/json

调用此 API 后,MCP Host CLI 会重新读取 'mcp_servers.config.json' 文件,并更新服务器连接,无需重启 MCP Host CLI 服务。

请根据您的实际 MCP 服务器配置和需求,配置 'mcp_servers.config.json' 文件,并通过上述 API 接口来使用 MCP Host CLI 提供的功能。

信息

分类

开发者工具