3335 字
17 分钟
2026-05-26|MCP Server 与 Agent 集成联调

一、今日主要工作#

  • 围绕智能体管理平台的 MCP 工具服务链路,完成 MCP Server 实现与 Agent 集成联调 相关开发工作。
  • 在已完成 Plan-and-Execute Agent 引擎和 MCP Client Gateway 的基础上,补齐 MCP Server 侧能力,使系统具备从 Agent 到 Tool 的完整调用闭环。
  • 实现进程内 MCP Skill Server,通过 HTTP JSON-RPC 暴露企业供应链相关工具,并支持 Gateway 进行工具发现与工具调用。
  • 完成 Agent 工具绑定链路改造,使 Agent 可以通过 agent_tool_bind 直接绑定 MCP Tool,减少对 skill_definition 中间层的依赖。
  • 联调验证 Agent 在单 Skill、多 Skill、依赖链和闲聊场景下的执行效果,并完成模型隔离、MCP Server 绑定、工具权限策略和装配聚合等能力验证。
  • 整理 MCP Server 实现方案与 Agent 集成文档,沉淀整体架构、关键表结构、接口清单、前端页面和后续规划。

二、核心完成内容#

1. MCP Server 模块实现#

今天重点完成了 mcpserver 模块的实现和联调。该模块定位为进程内 MCP Skill Server,通过 HTTP JSON-RPC 对外暴露工具能力,供 MCP Client Gateway 发现和调用。

本次实现中,MCP Server 主要包含以下核心组件:

  • McpJsonRpcController:提供 POST /mcp/rpc 端点,支持 initializetools/listtools/call
  • McpToolRegistry:作为内存工具注册中心,基于 ConcurrentHashMap 维护工具元数据和调用统计;
  • ToolAutoRegistration:应用启动时自动注册工具到内存和数据库;
  • HttpJsonRpcClientAdapter:Gateway 侧 HTTP 适配器,用于连接本地 MCP Server;
  • CompositeMcpClientAdapter:作为组合适配器,统一本地 HTTP MCP Server 与远程 MCP 连接;
  • McpServerAutoRegistrar:应用启动时从数据库读取 MCP Server 配置并自动连接;
  • McpServerConfigServiceBridge:用于跨包访问 MCP Server 配置服务。

通过该模块,系统具备了本地 MCP Server 工具注册、工具发现、工具调用和调用统计能力,为 Agent 调用内部工具提供了服务端支撑。

2. 8 个企业工具注册与发现#

今天完成了 MCP Server 侧 8 个工具的注册与同步,覆盖供应链查询、基础计算和依赖链验证等场景。

已注册工具包括:

  • query_purchase_order:采购订单查询;
  • query_supplier_payment_status:供应商付款状态查询;
  • search_mock_file:模拟文件检索;
  • math_add:加法计算;
  • math_multiply:乘法计算;
  • math_divide:除法计算;
  • get_order_amount:订单金额获取;
  • calculate_tax:税费计算。

其中,供应链类工具用于模拟企业业务查询场景,数学类工具用于验证单工具、多工具和依赖链调用是否稳定,get_order_amountcalculate_tax 则用于验证前后步骤之间的参数传递和结果消费能力。

通过 tools/list,Gateway 可以获取工具名称、描述和 inputSchema;通过 tools/call,Gateway 可以向 MCP Server 发起 JSON-RPC 调用,并获得工具执行结果。

3. MCP Client Gateway 集成#

今天完成了 MCP Server 与 MCP Client Gateway 的集成。Gateway 作为统一调用入口,负责完成工具存在性校验、权限策略校验、Schema 参数校验、实际工具调用和审计落库。

核心调用链路如下:

McpClientGatewayAdapter.callTool(serverCode, toolName, args, agentId)
→ 校验 agent_mcp_bind
→ McpToolInvokeService.invoke()
→ findEnabledTool()
→ McpToolPolicyService.checkAllowed()
→ JsonSchemaValidator.validate()
→ McpClientAdapter.callTool()
→ McpAuditLogService.save()

本次联调中,Gateway 能够通过 HTTP 适配器连接本地 MCP Server,并完成工具同步和工具调用。工具同步结果会写入 mcp_tool_definition,工具调用记录会写入 mcp_tool_call_log,其中包含 agentId、callerId、traceId、调用入参、返回结果、耗时和成功状态等信息。

4. Agent 工具绑定链路改造#

今天对 Agent 调用 MCP Tool 的链路进行了进一步优化。原有路径是:

Agent → agent_skill_bind → skill_definition → invokeConfig → MCP Tool

该路径中,MCP 类型的 skill_definition 多数情况下只是一个转发表,主要保存 serverCode 和 toolName,实际业务含义较弱。

本次改造后,引入 agent_tool_bind 表,使 Agent 可以直接绑定 MCP Tool:

Agent → agent_tool_bind → MCP Tool

同时,SkillStepExecutor 支持双路径执行:

  • 路径 1:如果 SkillMatcher 命中 skill_definition,继续走原有 LOCAL_BEAN Skill 调用路径;
  • 路径 2:如果 SkillMatcher 未命中,则查询 agent_tool_bind,直接通过 McpClientGatewayAdapter.callTool() 调用 MCP Tool。

通过该改造,Agent 的 MCP 工具调用链路更加直接,减少了不必要的 Skill 壳层,也更符合“Agent 装配工厂”中按 Agent 绑定 Tool 的设计方向。

5. Agent 配置隔离与装配能力#

今天继续完善了 Agent 配置隔离能力,使一个 Agent 可以由多类配置共同组装:

  • agent_profile:Agent 主配置;
  • agent_skill_bind:Local Skill 绑定;
  • agent_mcp_bind:MCP Server 绑定;
  • agent_tool_bind:MCP Tool 直接绑定;
  • mcp_tool_policy.agent_id:Agent 级工具权限策略;
  • agent_knowledge_base_bind:知识库绑定预留。

这样可以做到不同 Agent 使用不同模型、不同 MCP Server、不同工具集合和不同工具权限,避免所有 Agent 共用全局工具与全局策略。

在 Plan 生成阶段,系统会将该 Agent 可用的 Tool 列表注入 Prompt,使 LLM 在生成 Plan 时能够选择合适工具。执行时,如果 Plan 中的 suggestedSkillCode 对应 Tool 名称,则可以进入 Tool 直连路径完成远程工具调用。

6. 单 Skill、多 Skill 与依赖链场景验证#

今天重点验证了 Agent 与 MCP Server 集成后的多种执行场景。

验证场景包括:

  • 单 Skill 调用:Agent 生成一个包含单个工具调用的 Plan,并正确调用对应 MCP Tool;
  • 多 Skill 调用:Agent 在一个 Plan 中生成多个 SKILL_CALL 步骤,并按顺序调用多个工具;
  • 依赖链调用:前一步工具返回结果被后一步工具使用,例如先获取订单金额,再计算税费;
  • 闲聊回归:普通闲聊不触发工具调用,仍能走正常 LLM 回复路径。

通过这些验证,可以确认 Agent 不仅能够调用单个 MCP Tool,也能在多步骤计划中进行多个工具的顺序调用,并通过 ResultSynthesizer 汇总最终结果。

7. 工具权限策略验证#

今天还完成了 Agent 级工具权限策略的验证。当前 mcp_tool_policy 已支持 agent_id 字段:

  • agent_id IS NULL 表示全局策略;
  • agent_id IS NOT NULL 表示 Agent 私有策略。

策略优先级为:

Agent 私有精确匹配
> Agent 私有通配
> 全局精确匹配
> 全局通配
> 默认规则

同优先级内遵循:

DENY > APPROVAL > ALLOW

本次验证覆盖了 Agent 私有策略和全局策略两类场景,确认 Agent 私有 DENY 不会影响其他 Agent,全局 DENY 则会影响所有 Agent。该能力为后续不同 Agent 配置差异化工具权限提供了基础。

8. 管理端与前端页面联动#

今天同步梳理并验证了管理端相关页面与后端能力的联动。

当前前端主要涉及以下页面:

  • /digital-employees:Agent 管理页面,支持 Agent CRUD 和装配详情展示;
  • /tools:工具广场页面,支持选择 Agent、查看 MCP Server、勾选 Tool 并自动绑定;
  • /chat:模型对话页面,支持选择 Agent 后进行 SSE 流式对话和 Plan 执行展示;
  • /models:模型管理页面,用于模型卡配置;
  • /mcp:MCP 服务配置页面,用于配置 MCP Server。

其中,工具广场是本次 Agent-Tool 绑定链路的重要前端入口。用户可以在页面中选择 Agent,并为其勾选需要开放的 MCP Tool,后端通过 agent_tool_bind 记录绑定关系,使工具配置实时影响 Agent 执行范围。

9. 测试验证与结果#

今天完成了多类测试和验证,覆盖工具注册、执行路径、模型隔离、MCP Server 绑定、工具权限策略和装配聚合等模块。

测试结果包括:

  • 工具注册与发现:通过;
  • 单 Skill / 多 Skill / 依赖链 / 闲聊:通过;
  • 多 Agent 多模型卡隔离:通过;
  • MCP Server 绑定 / 解绑:通过;
  • Agent 私有策略与全局策略:通过;
  • 装配聚合接口与知识库桩:通过。

累计完成 22 项测试,全部通过。这说明当前 MCP Server 与 Agent 集成链路已经具备较完整的可运行基础。

10. 技术文档沉淀#

今天整理了《MCP Server 实现方案与 Agent 集成文档》。文档系统记录了:

  • 管理端、Agent 引擎、MCP Client Gateway、MCP Skill Server 的总体架构;
  • MCP Server 核心组件和启动流程;
  • Gateway 调用链路和审计表;
  • Agent Tool 绑定链路和双路径执行机制;
  • Agent 配置全景;
  • Plan 生成中的 Tool 注入方式;
  • 模型隔离机制;
  • 管理端 API 清单;
  • 前端页面说明;
  • 关键数据库表;
  • 测试验证结果;
  • 后续规划。

该文档为后续继续推进 Agent 工厂、工具治理、MCP Server 微服务化和 Human-in-the-loop 提供了清晰参考。

三、今日工作产出#

  • 完成进程内 MCP Skill Server 的实现,支持通过 HTTP JSON-RPC 提供 initializetools/listtools/call 能力。
  • 完成 8 个 MCP Tool 注册,包括供应链查询工具、数学验证工具和依赖链测试工具。
  • 完成 MCP Server 与 MCP Client Gateway 的集成,支持工具同步、工具调用、Schema 校验、权限策略和审计落库。
  • 完成 Agent 直连 MCP Tool 的调用链路改造,引入 agent_tool_bind 作为核心绑定表。
  • 完成 SkillStepExecutor 双路径执行机制,使 Local Skill 与 MCP Tool 直连路径可以共存。
  • 完成 Agent 可用 Tool 列表注入 Plan Prompt,使 PlanGenerator 能基于当前 Agent 绑定的工具生成执行计划。
  • 完成单 Skill、多 Skill、依赖链和闲聊场景验证。
  • 完成 Agent 级 MCP Server 绑定和工具权限策略验证。
  • 完成管理端工具广场、Agent 管理、模型对话等前端页面与后端装配能力的联动梳理。
  • 沉淀《MCP Server 实现方案与 Agent 集成文档》,记录整体架构、核心组件、数据库表、接口清单和验证结果。

四、遇到的问题与解决情况#

1. MCP Server 与 Gateway 需要统一协议适配#

  • 问题:MCP Server 在项目中采用进程内 HTTP JSON-RPC 实现,而 Gateway 原先主要面向 MCP Client Adapter 统一调用,需要适配本地 HTTP JSON-RPC 调用方式。
  • 处理:实现 HttpJsonRpcClientAdapter,并通过 CompositeMcpClientAdapter 组合本地 HTTP 适配器与其他远程 MCP 连接。
  • 结果:Gateway 能够正常调用进程内 MCP Server,实现工具发现与工具调用。

2. MCP Tool 不应全部通过 skill_definition 转发#

  • 问题:原有 MCP Tool 调用需要通过 skill_definition 壳层间接转发,导致链路冗余,Tool 管理也不够直观。
  • 处理:新增 agent_tool_bind,让 Agent 可以直接绑定 MCP Tool,并在执行时走 Tool 直连路径。
  • 结果:MCP Tool 调用链路更简洁,前端工具广场也可以直接围绕 Tool 做配置。

3. 多 Skill 与依赖链需要验证执行稳定性#

  • 问题:单个工具调用不能证明 Agent 具备复杂任务执行能力,需要验证多个工具按 Plan 顺序执行以及前后步骤结果传递。
  • 处理:设计单 Skill、多 Skill、依赖链和闲聊回归场景进行测试。
  • 结果:相关场景均通过,说明当前 Plan-and-Execute 链路具备基础多工具编排能力。

4. 不同 Agent 的工具权限需要隔离#

  • 问题:如果工具策略只按全局维度控制,会导致一个 Agent 的限制影响其他 Agent。
  • 处理:通过 mcp_tool_policy.agent_id 支持 Agent 私有策略,并在 Gateway 调用前进行优先级策略匹配。
  • 结果:验证了 Agent 私有策略与全局策略可以共存,且优先级符合预期。

5. 前端工具配置需要与后端绑定关系一致#

  • 问题:工具广场页面需要实时反映当前 Agent 的 Tool 绑定状态,否则容易出现前端显示与后端执行范围不一致。
  • 处理:通过 Agent 下拉、MCP Server 切换和 Tool 勾选机制,将前端操作直接映射到 agent_tool_bind
  • 结果:工具配置链路更清晰,Agent 的可用工具范围可以通过页面直观管理。

五、明日计划#

  • 继续完善工具广场页面,优化 Agent 切换、Server 切换和 Tool 勾选状态的刷新体验。
  • 补充更多 MCP Tool 的异常测试,包括参数缺失、Schema 校验失败、工具不存在和策略拒绝场景。
  • 优化 PlanGenerator 中可用 Tool 列表的描述质量,提高多工具计划生成准确率。
  • 完善 Agent、Gateway、MCP Server 三侧 traceId / requestId 串联,提升问题排查效率。
  • 继续推进工具权限管理前端能力,使 Agent 私有 DENY / ALLOW 策略可视化配置。
  • 评估 MCP Server 后续独立微服务部署方案,减少进程内耦合。
  • 结合知识库绑定预留能力,后续继续推进 RAG 真实接入和 Plan 上下文增强。

六、总结#

今天主要围绕 MCP Server 实现与 Agent 集成展开开发和联调工作,完成了进程内 MCP Skill Server、8 个工具注册、Gateway 调用适配、Agent 直连 Tool、工具权限策略、前端工具配置和多场景测试验证。通过今天的工作,平台进一步打通了从管理端配置 Agent,到 Agent 生成计划,再到 Gateway 调用 MCP Server 工具并汇总结果的完整链路,为后续建设更完善的 Agent 装配工厂、工具治理平台和企业级 MCP Server 能力奠定了基础。

2026-05-26|MCP Server 与 Agent 集成联调
https://jupiter-ws.cn/posts/internship/实习日报-2026-05-26/
作者
Jupiter
发布于
2026-05-26
许可协议
CC BY-NC-SA 4.0