MCP协议

📎 引用文件

本文引用的文件 - mcp_server.py - mcp.py - schema.py - service.py - test_mcp_client_adapter.py - test_mcp_json_string_args.py - test_default_deny_unknown_robinhood_tool.py - README_zh.md

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本技术文档面向 Vibe-Trading 的 Model Context Protocol(MCP)服务器实现,聚焦以下目标: - 连接建立与传输:支持 stdio、SSE 与 Streamable HTTP 三种传输;提供网络传输的主机/来源白名单防护。 - 消息格式与工具调用:统一 JSON 信封、参数规范化、远程工具包装与执行、错误封装。 - 事件处理与会话集成:研究目标生命周期、证据追加、状态更新与审计。 - 支持的 MCP 工具清单、参数规范与返回值格式。 - 与 Agent 系统的集成方式:工具注册、上下文传递、会话级配置覆盖、状态管理。 - MCP 客户端集成示例:连接配置、工具调用、错误处理。 - 性能优化建议、调试工具与监控方法。 - MCP 在 AI 代理工作流中的作用与扩展机制。

项目结构

Vibe-Trading 的 MCP 能力由“本地 MCP 服务”和“外部 MCP 客户端适配器”两部分组成: - 本地 MCP 服务:暴露 64 个只读/研究类工具,供任意 MCP 客户端通过 stdio/SSE/HTTP 访问。 - 外部 MCP 客户端适配器:将已配置的远程 MCP 服务端工具以本地 BaseTool 形式注册到 Agent 工具注册表,供 Agent 循环调用。

graph TB Client["MCP 客户端"] --> Transport["传输层<br/>stdio / SSE / Streamable HTTP"] Transport --> Server["本地 MCP 服务<br/>FastMCP"] Server --> Tools["内置工具集<br/>技能/研究/回测/行情/新闻等"] Server --> GoalStore["研究目标存储"] Server --> Registry["Agent 工具注册表"] Adapter["MCP 客户端适配器"] --> RemoteServer["远程 MCP 服务端"] Adapter --> Registry

图表来源 - mcp_server.py:69-81 - mcp.py:143-206

章节来源 - mcp_server.py:1-81 - README_zh.md:1113-1117

核心组件

章节来源 - mcp_server.py:69-81 - mcp.py:143-206 - schema.py:349-411 - service.py:53-117

架构总览

下图展示从 MCP 客户端到本地/远程工具的完整调用链,包括认证、工具发现、参数规范化与结果封装。

sequenceDiagram participant C as "MCP 客户端" participant T as "传输层" participant S as "本地 MCP 服务" participant A as "MCP 客户端适配器" participant R as "远程 MCP 服务端" participant G as "研究目标存储" C->>T : 初始化请求 T->>S : 路由到 FastMCP S-->>C : 版本/能力响应 C->>S : tools/list S-->>C : 工具列表本地 + 已注册 C->>S : tools/call(本地工具) S->>G : 读取/写入研究目标 S-->>C : JSON 成功/失败信封 C->>A : 通过 Agent 调用远程工具 A->>R : list_tools带重试 R-->>A : 工具定义输入Schema A->>R : call_tool参数过滤+超时 R-->>A : 原始结果 A-->>C : 标准化JSON信封

图表来源 - mcp_server.py:69-81 - mcp.py:401-473 - mcp.py:537-589

详细组件分析

本地 MCP 服务(FastMCP)

flowchart TD Start(["工具调用入口"]) --> Validate["参数校验与清洗"] Validate --> Type{"工具类型?"} Type --> |研究目标| GoalOps["创建/读取/追加证据/更新状态"] Type --> |回测/因子/期权| BizOps["业务工具执行"] Type --> |数据/搜索/研报| DataOps["数据源查询与聚合"] GoalOps --> Envelope["返回标准JSON信封"] BizOps --> Envelope DataOps --> Envelope Envelope --> End(["结束"])

图表来源 - mcp_server.py:530-735 - mcp_server.py:743-800

章节来源 - mcp_server.py:86-128 - mcp_server.py:131-317 - mcp_server.py:495-735 - mcp_server.py:743-800

MCP 客户端适配器(远程工具包装)

classDiagram class MCPServerAdapter { +discover_tools() list +call_tool(remote_name, arguments) dict -_build_client() AsyncMCPClient -_list_tools_once() list -_call_tool(remote_name, arguments) CallToolResult -_run_with_retry(operation, attempts) ResultT } class MCPRemoteTool { +name string +description string +parameters dict +execute(**kwargs) string -_filter_arguments(arguments) dict } class MCPServerConfig { +type string +command string +args list +env dict +url string +headers dict +auth MCPOAuthConfig +tool_timeout float +init_timeout float +enabled_tools list } MCPRemoteTool --> MCPServerAdapter : "使用" MCPServerAdapter --> MCPServerConfig : "读取配置"

图表来源 - mcp.py:143-206 - mcp.py:370-473 - mcp.py:629-694 - schema.py:349-411

章节来源 - mcp.py:62-84 - mcp.py:209-287 - mcp.py:289-324 - mcp.py:340-367 - mcp.py:401-473 - mcp.py:537-589 - mcp.py:629-694

配置与约束(含券商安全)

章节来源 - schema.py:11-50 - schema.py:72-142 - schema.py:145-237 - schema.py:349-411 - schema.py:452-492 - README_zh.md:1358-1392

会话与服务集成

章节来源 - service.py:53-117 - service.py:118-200

依赖关系分析

graph LR M["mcp_server.py"] --> F["FastMCP"] M --> R["工具注册表"] M --> G["研究目标存储"] A["src/tools/mcp.py"] --> FC["fastmcp.client"] A --> MT["mcp.types"] A --> KV["FileTreeStore"] S["src/config/schema.py"] --> P["Pydantic"]

图表来源 - mcp_server.py:69-81 - mcp.py:17-33 - schema.py:349-411

章节来源 - mcp_server.py:69-81 - mcp.py:17-33 - schema.py:349-411

性能考虑

章节来源 - mcp.py:62-84 - mcp.py:537-589 - mcp.py:411-449 - mcp_server.py:131-317

故障排查指南

章节来源 - mcp.py:327-337 - mcp.py:731-793 - schema.py:452-492 - service.py:93-117

结论

Vibe-Trading 的 MCP 实现以“本地只读/研究工具 + 远程工具包装”为核心,提供稳定的传输、安全的配置与清晰的错误封装。通过研究目标生命周期与 Agent 工具注册表的深度集成,MCP 成为 AI 代理工作流中可靠的能力扩展点。结合缓存、重试、超时与网络守卫,系统在可用性与安全性之间取得平衡,适合在 CLI、Web UI、REST 与多通道场景中复用。

附录

支持的 MCP 工具清单

章节来源 - README_zh.md:1113-1117

参数规范与返回值格式

章节来源 - mcp.py:289-324 - mcp.py:411-449 - mcp_server.py:377-388 - mcp.py:439-473

与 Agent 系统集成

章节来源 - mcp_server.py:495-735 - mcp.py:143-206 - service.py:118-200

MCP 客户端集成示例

章节来源 - schema.py:349-411 - mcp.py:475-535 - mcp.py:537-589

性能优化建议

章节来源 - mcp.py:62-84 - mcp.py:521-535 - mcp_server.py:131-317

调试工具与监控方法

章节来源 - test_mcp_client_adapter.py:173-213 - test_mcp_client_adapter.py:531-599 - test_mcp_json_string_args.py:162-194 - test_default_deny_unknown_robinhood_tool.py:104-128