Skip to content

feat(community): add stdio MCP tools support#41

Open
Iamjesse0202 wants to merge 1 commit intoMagicCube:mainfrom
Iamjesse0202:feat/mcp-stdio-tools
Open

feat(community): add stdio MCP tools support#41
Iamjesse0202 wants to merge 1 commit intoMagicCube:mainfrom
Iamjesse0202:feat/mcp-stdio-tools

Conversation

@Iamjesse0202
Copy link
Copy Markdown

背景

当前仓库中尚未支持 MCP(Model Context Protocol)工具接入。
本 PR 实现了一个最小可用范围:通过 stdio 连接 MCP Server,并将 MCP 工具映射为 Helixent 可调用的 Tool

关联 issue:#40

本次改动

1) 新增 community/mcp 模块(stdio MCP)

  • 新增 createStdioMcpTools,负责:
    • 通过 StdioClientTransport + Client 建立 MCP 连接
    • 拉取 MCP listTools(支持分页)
    • 将 MCP 工具转换为 Helixent defineTool 形式
    • invoke 时转发到 MCP callTool
    • 提供 dispose() 用于关闭 transport / 释放资源
  • 支持可选 namePrefix,用于避免与内置工具重名冲突

2) 新增 MCP 参数 schema 与结果格式化能力

  • 新增 mcpInputSchemaToZod
    • 将 MCP 的 JSON Schema 转换为 Zod schema
    • 转换失败时降级为宽松对象 schema(保证可用性)
  • 新增 formatMcpCallToolResult
    • 统一处理 content / structuredContent / toolResult 等返回形态
    • 输出稳定文本结果,便于进入现有 tool_result 消息链路

3) 扩展 Coding Agent 的工具注入能力

  • createCodingAgent 中新增可选参数:extraTools?: Tool[]
  • 保持现有内置工具行为不变,支持将 MCP 工具作为附加工具注入

4) 依赖与导出

  • 增加依赖:@modelcontextprotocol/sdk
  • 新增 src/community/mcp/index.ts 对外导出 MCP 相关能力

5) 测试

新增单测覆盖:

  • formatMcpCallToolResult 的主要分支
  • mcpInputSchemaToZod 的成功转换与失败回退分支

影响范围

  • 新增文件位于 src/community/mcp/*
  • 小幅修改 src/coding/agents/lead-agent.ts(新增 extraTools 参数)
  • 不影响现有 OpenAI/Anthropic provider 行为
  • 不改变默认工具集行为(未传 extraTools 时与之前一致)

验证

  • 本地已执行:
    • bun run check
  • 结果:
    • Type check 通过
    • 测试通过
    • 现存 2 条 ESLint warning(与本 PR 改动无关,仓库已有)

当前范围与后续

本 PR 仅实现 stdio + tools(list/call) 的 MCP 最小支持。
暂未纳入以下内容(可后续独立 PR):

  • resources / prompts / sampling 集成
  • CLI 配置层自动加载 MCP server
  • 更细粒度的权限与策略控制

Closes #40

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

are there any plan to support mcp?

1 participant