MCP客户端服务

MCP客户端服务是一个集中式桥接服务,连接多个模型上下文协议(MCP)服务器,并通过统一的HTTP API为应用程序提供工具和资源。

  • by Agentic-AI-PROJ
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 Agentic-AI-PROJ/mcp-client

使用说明

MCP客户端服务

这 MCP客户端服务 充当连接多个 模型上下文协议(MCP) 服务器。它聚合来自这些服务器的工具和资源,并通过统一的HTTP API公开这些工具和资源供主应用程序使用。

🚀 特性

  • 协议支持:通过以下方式连接到MCP服务器 上海证券交易所 (服务器发送的事件), 超文本传输协议,以及 工作室.
  • 统一工具注册表:将所有连接服务器中的工具聚合到一个列表中。
  • 动态管理:在运行时注册、注销和管理服务器连接。
  • 持久性:将服务器配置和工具元数据保存到MongoDB。
  • 管理界面:用于管理服务器/工具状态(活动/非活动)的专用端点。
  • CLI实用程序:内置命令行界面,用于直接测试连接和工具。

🛠️ 技术栈

  • 运行时:Node.js、Express
  • 软件开发工具包:@modelcontextprotocol/sdk
  • 数据库:MongoDB(通过Mongoose)
  • 命令行界面:Readline,事件源(polyfill)

📦 安装和设置

  1. 安装依赖项:

    npm install
    
  2. 环境变量: 创建一个 .env 服务根目录中的文件:

    PORT=3011
    MONGO_URI=mongodb://localhost:27017/ai-agents
    
  3. 运行服务:

    • API服务器模式 (一般用途):

      npm run server
      

      运行在 http://localhost:3011.

    • 命令行接口命令模式 (用于交互式测试):

      npm start
      

🔌 API参考和卷曲示例

1.服务器管理

注册服务器

连接到新的MCP服务器(例如,本地SSE服务器或stdio命令)。

# Register an SSE Server
curl -X POST http://localhost:3011/servers \
  -H "Content-Type: application/json" \
  -d '{
    "type": "sse",
    "url": "http://localhost:3001/sse"
  }'

# Register a Stdio Server
curl -X POST http://localhost:3011/servers \
  -H "Content-Type: application/json" \
  -d '{
    "type": "stdio",
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/me/files"]
  }'

列出已连接的服务器

curl http://localhost:3011/servers

注销服务器

curl -X DELETE http://localhost:3011/servers \
  -H "Content-Type: application/json" \
  -d '{ "url": "http://localhost:3001/sse" }'

2.工具交互

列出所有工具

从所有连接的服务器获取工具的组合列表。

curl http://localhost:3011/tools

调用工具

按名称执行工具。该服务将请求路由到相应的MCP服务器。

curl -X POST http://localhost:3011/tools/read_file \
  -H "Content-Type: application/json" \
  -d '{
    "arguments": {
      "path": "/Users/me/files/test.txt"
    }
  }'

3.管理端点

列出所有服务器(数据库视图)

curl http://localhost:3011/admin/servers

切换服务器状态

启用或禁用服务器(及其工具)。

# Note: Key handles special chars, usually URL encoded
curl -X PATCH http://localhost:3011/admin/servers/sse%3Ahttp%3A%2F%2Flocalhost%3A3001%2Fsse/status \
  -H "Content-Type: application/json" \
  -d '{ "isActive": false }'

💓 健康检查

  • 服务器状态: GET /health