Skip to content

MCP 工具集成 新功能

字数统计:1.2k 字
阅读时长:4 分钟

💡 提醒

MCP (Model Context Protocol) 工具集成允许你通过 WebConsole 前端自由添加、管理 MCP 服务器配置。

框架启动时自动连接 MCP 服务器并将工具注册为 AI 工具,使 AI 可以自由调用 MCP 工具并利用返回结果。

概述

MCP 是一种开放协议,允许 AI 应用与外部数据源和工具进行标准化交互。GsCore 通过 MCP 集成,可以将任何 MCP 服务器提供的工具自动注册为 AI 工具,无需编写任何插件代码。

核心特性

  • 零代码集成:通过 WebConsole 前端配置即可接入 MCP 服务器
  • 自动工具发现:框架启动时自动连接 MCP 服务器,发现并注册所有可用工具
  • 热重载支持:运行时可通过 API 重新加载配置,无需重启服务
  • 统一管理:MCP 工具与其他 AI 工具统一管理,AI Agent 可自动发现和调用

快速开始

1. 通过 WebConsole 添加 MCP 服务器

打开 WebConsole,进入 MCP 配置页面,点击"添加"按钮,填写以下信息:

字段类型说明
namestrMCP 服务器显示名称,例如 "MiniMax"
commandstr启动命令,例如 "uvx""npx""python"
argslist[str]命令参数列表,例如 ["minimax-coding-plan-mcp"]
envdict[str, str]环境变量字典,例如 {"MINIMAX_API_KEY": "your_key"}
enabledbool是否启用

2. 配置文件格式

配置文件存储在 data/ai_core/mcp_configs/{config_id}.json

json
{
    "name": "MiniMax",
    "command": "uvx",
    "args": ["minimax-coding-plan-mcp"],
    "env": {"MINIMAX_API_KEY": "your_key"},
    "enabled": true
}

3. 启动流程

框架启动

    ├── on_core_start 钩子 (priority=5)
    │       │
    │       └── register_all_mcp_tools()
    │               │
    │               ├── 从 mcp_config_manager 获取所有 enabled=true 的配置
    │               ├── 对每个配置创建 MCPClient 并调用 list_tools()
    │               ├── 为每个 MCP 工具动态创建包装函数
    │               └── 注册到 _TOOL_REGISTRY["mcp"]

    └── AI Agent 通过 search_tools() 发现并调用 MCP 工具

WebConsole API

MCP 配置提供完整的 RESTful API,支持通过 WebConsole 前端或 HTTP 请求管理。

API 端点一览

方法端点功能
GET/api/ai/mcp/list获取所有 MCP 配置列表
GET/api/ai/mcp/{config_id}获取指定配置详情
POST/api/ai/mcp创建新 MCP 配置
PUT/api/ai/mcp/{config_id}更新 MCP 配置
DELETE/api/ai/mcp/{config_id}删除 MCP 配置
POST/api/ai/mcp/{config_id}/toggle切换启用/禁用状态
POST/api/ai/mcp/reload热重载所有配置并重新注册工具

创建配置

http
POST /api/ai/mcp
Content-Type: application/json

{
    "name": "MiniMax",
    "command": "uvx",
    "args": ["minimax-coding-plan-mcp"],
    "env": {"MINIMAX_API_KEY": "your_key"},
    "enabled": true
}

热重载

http
POST /api/ai/mcp/reload

调用后会重新加载所有 MCP 配置,断开旧连接并重新注册工具,无需重启服务。

工具分类与命名

分类

MCP 工具注册到 _TOOL_REGISTRY["mcp"] 分类,与其他分类的关系:

分类名说明谁可以调用
"self"核心自我操作工具主Agent
"buildin"内置工具主Agent
"common"通用工具主Agent
"default"子Agent工具子Agent
"mcp"MCP 外部工具,启动时自动注册主Agent(按需加载)

命名规则

MCP 工具注册时使用 mcp_{server_name}_{tool_name} 格式,避免不同 MCP 服务器之间的工具名冲突。

例如,名为 MiniMax 的服务器提供的 search 工具,注册名为 mcp_MiniMax_search

架构设计

数据流

用户 (WebConsole 前端)

    │  RESTful API (CRUD + 热重载)

┌─────────────────────────────────────────┐
│  webconsole/mcp_config_api.py           │
│  (FastAPI RESTful API)                  │
└──────────────┬──────────────────────────┘


┌─────────────────────────────────────────┐
│  ai_core/mcp/config_manager.py          │
│  MCPConfigManager (JSON 文件存储)        │
│  data/ai_core/mcp_configs/*.json        │
└──────────────┬──────────────────────────┘


┌─────────────────────────────────────────┐
│  ai_core/mcp/startup.py                 │
│  register_all_mcp_tools()               │
│  ├── MCPClient.list_tools()             │
│  ├── 动态创建包装函数                     │
│  └── 注册到 _TOOL_REGISTRY["mcp"]       │
└──────────────┬──────────────────────────┘


┌─────────────────────────────────────────┐
│  ai_core/register.py                    │
│  _TOOL_REGISTRY["mcp"]                  │
│  (MCP 工具与其他工具统一管理)              │
└──────────────┬──────────────────────────┘


┌─────────────────────────────────────────┐
│  ai_core/gs_agent.py                    │
│  AI Agent 通过 search_tools() 发现      │
│  并调用 MCP 工具                         │
└─────────────────────────────────────────┘

设计决策

决策说明
JSON 文件存储与 OpenAI 配置管理器模式一致,简单直观,便于手动编辑和备份
动态函数生成根据 input_schema 生成正确的类型注解和函数签名,确保 PydanticAI 能正确生成 JSON Schema 给 LLM
无状态 MCP 客户端每次工具调用时建立连接、执行操作、断开连接,避免长连接管理的复杂性
热重载支持通过 API 可在运行时重新加载配置,无需重启服务
工具名冲突避免使用 mcp_{server_name}_{tool_name} 格式命名

常见 MCP 服务器示例

MiniMax

json
{
    "name": "MiniMax",
    "command": "uvx",
    "args": ["minimax-coding-plan-mcp"],
    "env": {"MINIMAX_API_KEY": "your_api_key_here"},
    "enabled": true
}

文件系统 MCP

json
{
    "name": "FileSystem",
    "command": "npx",
    "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"],
    "env": {},
    "enabled": true
}

自定义 Python MCP

json
{
    "name": "MyCustomMCP",
    "command": "python",
    "args": ["-m", "my_mcp_server"],
    "env": {"API_KEY": "your_key"},
    "enabled": true
}

相关文档