Cover image
Try Now
2025-04-11

一个简单易用的MCP主机CLI工具

3 years

Works with Finder

1

Github Watches

2

Github Forks

3

Github Stars

MCP-Host-CLI

MCP-Host-CLI 是一个基于 Node.js 的 Model Context Protocol (MCP) 主机应用程序,用于连接和管理多个 MCP 服务器。Host 提供了统一的接口,允许客户端通过 HTTP API 与多个 MCP 服务器进行交互,访问及调用工具(或资源)。你可以使用它快速测试及运行你的 MCP Servers。

架构图

graph TD
    Client[客户端] -->|HTTP 请求| HostServer[MCP Host 服务器]
    HostServer -->|管理| ConnectionManager[连接管理器]
    ConnectionManager -->|创建/管理| MCPClient1[MCP 客户端 1]
    ConnectionManager -->|创建/管理| MCPClient2[MCP 客户端 2]
    ConnectionManager -->|创建/管理| MCPClientN[MCP 客户端 N]
    MCPClient1 -->|STDIO/SSE| MCPServer1[MCP 服务器 1]
    MCPClient2 -->|STDIO/SSE| MCPServer2[MCP 服务器 2]
    MCPClientN -->|STDIO/SSE| MCPServerN[MCP 服务器 N]

主要功能

  • 支持同时连接多个 MCP 服务器, 通过 json 文件管理多个 MCP 服务器
  • 支持 STDIO 和 SSE 两种传输方式
  • 提供统一的 HTTP API 接口,用于:
    • 获取所有服务器的工具列表
    • 调用特定服务器上的工具
    • 获取所有服务器的资源列表
    • 获取特定服务器上的资源
    • 触发 Host 主动更新 Server 连接

项目结构

mcp-host-cli/
├── src/                      # 源代码目录
│   ├── main.ts               # 主入口文件
│   ├── host.ts               # MCP 连接管理器
│   ├── client.ts             # MCP 客户端实现
│   ├── server.ts             # HTTP 服务器实现
│   ├── types.ts              # 类型定义
│   └── utils.ts              # 工具函数

环境要求

  • 连接 STDIO MCP Server,需要 npxuvx 的系统运行环境。
    • npx 依赖 Nodejs (>=18)
    • uvx 依赖 Python (uv)

使用

1. 使用 npm 包,无须本地构建 (推荐)

npx mcp-host-cli

2. 本地构建,clone 这个仓库 git clone https://github.com/liujilongObject/mcp-host-cli.git

安装依赖

  • npm install

开发模式

  • npm run dev

生产模式

  • npm run build
    • 生产环境使用
      • 使用自定义的 Node.js 环境:production_node.exe dist/index.js
      • 使用宿主机的 Node.js 环境:node dist/index.js

Servers 配置文件

mcp-host-cli 会读取当前工作目录下的 mcp_servers.config.json 文件,文件格式如下:

{
    "mcp_servers": [
        {
            "enabled": true, // 是否启用 server
            "type": "stdio", // 'stdio' | 'sse'
            "server_name": "server-puppeteer", // 自定义 name
            "command": "npx",
            "args": [
                "-y",
                "@modelcontextprotocol/server-puppeteer"
            ]
        },
        {
            "enabled": true,
            "type": "sse",
            "server_name": "server-everything-sse",
            "sse_url": "http://localhost:3001/sse"
        },
        {
            "enabled": true,
            "type": "stdio",
            "server_name": "github",
            "command": "npx",
            "args": [
                "-y",
                "@modelcontextprotocol/server-github"
            ],
            "env": { // 支持配置环境变量
                "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
            }
        }
    ]
}

注意事项

  • 服务器默认运行在 17925 端口
  • 确保配置文件中的服务器信息正确
  • 对于 STDIO 传输方式,需要确保以下命令可执行
    • npx
    • uvx
  • 对于 SSE 传输方式,需要确保 URL 可访问

API Endpoints

Tools

1. 获取所有工具列表

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

响应

{
  "code": 0,
  "data": [
    {
      "server_name": "服务器1",
      "tools": [
        {
          "name": "工具名称",
          "description": "工具描述",
          "inputSchema": { ... }
        }
      ]
    }
  ]
}

2. 调用工具

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

{
  "server_name": "服务器名称",
  "tool_name": "工具名称",
  "tool_args": { ... }
}

响应

{
  "code": 0,
  "data": {
    "result": "工具执行结果"
  }
}

Resources

1. 获取所有资源列表

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

响应

{
  "code": 0,
  "data": [
    {
      "server_name": "服务器1",
      "resources": [
        {
          "uri": "资源URI",
          "mimeType": "资源类型",
          "name": "资源名称"
        }
      ]
    }
  ]
}

2. 读取特定资源

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

{
  "server_name": "服务器名称",
  "resource_uri": "资源URI"
}

响应

{
  "code": 0,
  "data":  [
      {
        "mimeType": "资源类型",
        "text": "text 类型资源",
        "blob": "blob 类型资源"
      }
    ]
}

Connections

1. 更新 Server 连接

调用该 API 后,Host 会主动读取配置文件,并根据更新的配置来 新建/重启/删除 Server 连接。无需重启 Host 服务,继续调用 /api/tools 等 API 可以获取更新后的 Server 信息。

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

响应

{"code":0,"message":"成功更新服务器连接"}

License

MIT

相关推荐

  • NiKole Maxwell
  • I craft unique cereal names, stories, and ridiculously cute Cereal Baby images.

  • Joshua Armstrong
  • Confidential guide on numerology and astrology, based of GG33 Public information

  • https://suefel.com
  • Latest advice and best practices for custom GPT development.

  • Emmet Halm
  • Converts Figma frames into front-end code for various mobile frameworks.

  • Elijah Ng Shi Yi
  • Advanced software engineer GPT that excels through nailing the basics.

  • Yasir Eryilmaz
  • AI scriptwriting assistant for short, engaging video content.

  • Daren White
  • A supportive coach for mastering all Spanish tenses.

  • J. DE HARO OLLE
  • Especialista en juegos de palabras en varios idiomas.

  • albert tan
  • Japanese education, creating tailored learning experiences.

  • https://maiplestudio.com
  • Find Exhibitors, Speakers and more

  • Alexandru Strujac
  • Efficient thumbnail creator for YouTube videos

  • apappascs
  • 发现市场上最全面,最新的MCP服务器集合。该存储库充当集中式枢纽,提供了广泛的开源和专有MCP服务器目录,并提供功能,文档链接和贡献者。

  • ShrimpingIt
  • MCP系列GPIO Expander的基于Micropython I2C的操作,源自ADAFRUIT_MCP230XX

  • pontusab
  • 光标与风浪冲浪社区,查找规则和MCP

  • rahulc0dy
  • 测试您的MCP服务器。

  • av
  • 毫不费力地使用一个命令运行LLM后端,API,前端和服务。

  • GeyserMC
  • 与Minecraft客户端/服务器通信的库。

  • 1Panel-dev
  • 🔥1Panel提供了直观的Web接口和MCP服务器,用于在Linux服务器上管理网站,文件,容器,数据库和LLMS。

  • Mintplex-Labs
  • 带有内置抹布,AI代理,无代理构建器,MCP兼容性等的多合一桌面和Docker AI应用程序。

  • awslabs
  • AWS MCP服务器 - 将AWS最佳实践直接带入您的开发工作流程的专门MCP服务器

    Reviews

    5 (1)
    Avatar
    user_H5DLCfQl
    2025-04-15

    As a loyal user of the GraphQL MCP Server by ctkadvisors, I am incredibly impressed with its performance and versatility. The seamless integration and robust features have significantly enhanced our development workflow. It's a must-have for anyone serious about efficient GraphQL implementation. Highly recommended!