找回密码
立即注册
搜索
发回帖 发新帖

6545

积分

0

好友

812

主题
发表于 昨天 20:09 | 查看: 12| 回复: 0

这套方法论来自一套已落地的存量业务系统实践:712 个接口、零改造、端到端验证通过。读完本文,你能拿到目标架构、能力抽象方法、落地步骤、一份避坑清单,以及一个 MVP 定义——业务系统一行代码不动。

MCP #AIAgent #内部平台 #落地指南

一、目标架构:MCP Server 作为统一接入层

内部平台不直接为每个 Agent 各写一套接口,而是先抽象成一组标准化工具(MCP Tools),WorkBuddy、Hermes、OpenClaw 等各 Agent 通过 MCP 协议 或 HTTP 适配器统一接入。架构自顶向下四层,职责一句话说清:

存量业务系统MCP化架构图:MCP统一接入层连接各业务中心

维度 说明
Agent 层 理解用户意图、选择并调用工具;侧配置仅需 MCP 地址 + apiKey 请求头
接入层 MCP Server + HTTP API Gateway 统一暴露内部能力
治理层 账号映射、角色权限、审批单、审计日志、限流熔断,全部内嵌在接入层管道里
内部平台层 现有 REST API、数据库、流程引擎,原封不动;数据库只开一条只读通道兜底长尾查询

配套的第一条路线决策是外挂零改造。改造系统内部代码(塞 MCP 端点、改鉴权)会绑架业务发版节奏,老系统常有“框架冻结”的隐形铁律;逐接口一对一包装会让工具数量爆炸。外挂适配层让 AI 需求的迭代节奏与业务系统彻底解耦,并带来最重要的安全红利:Agent 登录的是真实用户账号,看得见什么数据由平台说了算。业务系统的权限体系就是 Agent 的权限体系,不用重建,也没有越权旁路。

二、内部平台能力抽象

接口众多,不能一股脑暴露。按业务场景归为四类:查询类(只读,优先开放)、写入类(需权限校验 + 审批)、流程类(工作流触发,高权限)、知识类(作 RAG 数据源)。每个工具定义五要素:名称、描述、输入参数 Schema、是否只读、是否需要审批及所需权限角色。

实测补充两条。一是盘点先行:不要从“要开放哪些”开始,从“系统到底有多少”开始。脚本扫描全部服务注册注解生成接口清单,机器初分类(查询/写/其他/认证),再补两轮人工复核——第一轮按代码实义纠错(名字像查询、实义是写的要剔除),第二轮对照前端页面实际调用实证。产出一份机读的开放口径:哪个域、哪些接口、是查询还是写。没有全量盘点,你回答不了安全评审的第一个问题:“开放的是全量还是漏了一部分?”

二是唯一事实源:所有“场景→接口”的映射只存一份机读目录文件(tools.yaml)。工具注册、运行时白名单、文档三者共用这一份,服务启动时动态生成工具定义——加接口等于加一行配置,不改代码。配套校验脚本做双向对账:目录里的码必须真实存在于盘点清单,盘点口径里的码必须被目录覆盖,全覆盖无重复才算数。

三、MCP Server 实现

部署一个独立的 MCP Server,核心职责四块:工具注册与管理(启动时自动注册,list_tools 供 Agent 发现)、身份校验与账号映射(禁止超级账号统一代理,操作可追溯至具体责任人)、工具调用执行(查询直接返回,写操作先落草稿人工确认)、审计日志记录(所有调用的完整上下文)。

实现选型的实测原则是与内部平台同生态、运维不用学新东西:Java 系用 Spring Boot + 官方 MCP Server Starter,Python 系用 FastMCP,不必追最新最好。传输统一 Streamable HTTP 部署为远程服务;另开一个极简 JSON 兼容通道给不支持 MCP 协议、只能配 HTTP 连接器的客户端——两个通道背后同一个路由器,治理逻辑不重复实现。

这一步有一条实测铁律:任何工具的参数定义里都没有 token 字段。token 是敏感凭据,进模型上下文就可能被记录、被幻觉;而服务端本来就要替 Agent 保管会话,没必要传。第一版只做登录、身份查询、身份切换、登出这几个会话工具,跑通“登录→token 托管→登出失效”闭环再扩展业务工具。未登录调用不出网关,直接返回结构化错误 + 登录指引,模型读错误即可自我修正——“会话过期→自动重登”的闭环不需要人参与。

四、防膨胀策略

工具列表直接进模型上下文,工具数量就是成本和选择错误率。方案给了六条策略,实测按四级分类执行最有效:

维度 说明
L1 高频核心 注册为独立工具,描述写精细
L2 中频场景 聚合为领域工具:一个域一个工具,内部用 scene 枚举参数路由到具体接口
L3 长尾接口 通用 execute_api 工具 + 白名单,通过参数指定目标接口
L4 敏感/复杂写操作 不暴露,走人工审批流,评审后才逐域开放

实测数据:712 个接口按此分级压到 23 个工具。三个配套手法:查询信息(目录、字段表、枚举字典)做成 MCP Resources,Agent 通过 URI 读取,不占工具名额;所有业务工具共用一个参数外壳(scene + id + keyword + 分页 + params 透传),场景特有参数走 params,服务端按字段表落位;业务域差异大的话再考虑拆分多个 MCP Server 按域管理。动态工具发现(按调用者身份返回不同工具集)放在写域开放阶段再做,第一版用不上。

五、权限与安全设计

企业内部系统接入 Agent,安全比连通性更重要。方案要求六项措施,实测补充执行细节:

身份映射:Agent 携带用户身份标识,映射到内部平台真实账号,禁止超级账号代理。权限分级:查询、写入、审批、管理员操作严格分离,每个工具声明最低权限角色。写操作审批:先落草稿人工确认后执行;实测约束更严——写场景只放行经过端到端验证的域,且 Agent 调用前必须向用户复述关键参数(单号/金额/客户)并获确认,平台状态机校验原样透传,不绕过不软化。审计日志:谁、经哪个 Agent、调了什么、参数摘要、结果、耗时,全部可回放;先落本地文件,尽快接日志平台做告警——只在本地文件里等于没有审计。限流熔断:令牌桶按 apiKey / 按用户分桶限流,系统级错误连续出现即熔断快速失败,防故障扩散。敏感字段脱敏:手机号、证件、银行卡掩码,密码类字段列名命中即置星号。

安全治理不做成独立“安全模块”,而是嵌入调用管道的每一环:入口校验 apiKey → 路由时限流 → 白名单闸 → 调用内部 API → 出口脱敏 + 超量行截断 → 错误语义映射 → 审计。白名单闸是关键一道:场景不在目录即拒绝,平台根本收不到请求。数据库直查工具(兜底长尾取数)必须三道闸缺一不可:专用只读账号(最硬,账号复用等于拆掉它)、语句白名单 + 禁多语句 + 自动 LIMIT、出口同一套脱敏策略。

六、各 Agent 接入方式

所有 Agent 优先走 MCP 协议统一接入,复用同一套工具定义。Agent 侧配置总共两行:

{
  "mcpServers": {
    "internal": {
      "url": "http://<host>:<port>/mcp",
      "headers": {
        "X-Api-Key": "ak-xxx"
      }
    }
  }
}

各平台的取舍:WorkBuddy 类支持 HTTP 连接器的,可先在集成中心配置 HTTP 连接器(定义 URL、请求头、参数映射)快速验证,再迁到 MCP 连接器;Hermes、OpenClaw 等原生支持 MCP 的直接注册 MCP Server 端点,按需暴露工具列表。不支持 MCP 的客户端统一走 HTTP 兼容通道桥接。实测多客户端验收标准:至少三个异构客户端用同一套工具定义完成同一场景,全过才算接入完成。后续接入新平台,连到同一个 MCP Server 即可,内部系统不再动。

七、推荐落地步骤

方案推荐六步,实测给每步补一个产出物门槛:

维度 说明
梳理平台能力 脚本盘点 + 两轮复核,产出接口清单和能力分级表(机读)
定义工具 五要素定义落进 tools.yaml,与盘点口径双向对账通过
搭建 Server 先只做查询类工具 + 会话闭环,产出可被 MCP Inspector 连通的服务
接入鉴权审计 身份绑定真实账号 + 审计日志上线,产出安全用例脚本全绿
分 Agent 接入 MCP 优先,HTTP 桥接兜底,三个异构客户端同场景验证
灰度开放 先少量用户只读场景,监控调用量与异常率,逐步扩到写操作和全流程

灰度环节实测追加一道发布门槛:覆盖矩阵逐码探测,FAIL=0 才准发布——直连网关对全部映射接口发最小参数查询,不依赖 MCP 实现,验证的是映射与开放口径本身。写操作的准入考试更严格:Agent 仅凭自然语言目标独立走完一个真实业务全流程,越状态操作被平台正确拒绝,该域才算通过。

八、最小可行版本

MVP 三件套:一个 MCP Server 基础版(MCP 协议 + HTTP 兼容通道)+ 两个只读工具(如查询订单、检索知识库)+ 完整的审计日志和权限校验。审计和权限从第一天就要有,这是后来一切扩展的地基——宁可工具少,不可治理缺。

跑通后的演进顺序:生产化加固(专用只读账号、apiKey 列表化可吊销、审计接日志平台、TLS、高危写操作人工二次审批)→ 写操作逐域开放(一次一个域,草稿 + 人工确认模式,每域过端到端准入)→ 评测体系(工具选择准确率、任务完成率基准集,防静默劣化)→ 多系统统一 Agent 入口。判断标准很简单:后续新 Agent 平台只需连到同一个 MCP Server,第二个内部系统两周能到同样验证水平,这套方案才算成立。

避坑清单

全部为实测踩过,你的系统大概率有同款:

维度 说明
隐藏必填字段 登录有字段由前端框架静默注入,接口定义里看不到——登录链路必须对照前端实际报文实证
参数命名不统一 同一平台 page 与 pageNo 并存是常态,统一参数必须在服务端按字段表改写落位,并实测翻页生效
响应结构各异 数据有的在 list、有的在 data、有的在 rows,出口归一化,别让模型猜
静默降级 缺字段不报错但后续流程被拒,最隐蔽——只有端到端验证能抓住
状态机隐性依赖 “能查到”不等于“能操作”,中间可能隔着前置步骤,业务流程图写进工具描述
平台默认选择 有分支的业务规则(如差额处理方式)必须让模型显式询问用户,不能吃平台默认值



上一篇:CopilotKit 开源 OpenBot:每个 AI Agent 独立浏览器沙箱,AG-UI 协议实现审批与人工接管
下一篇:fin-protoc 新增 C 与 Zig 代码生成器:一份 PacketDSL 生成八种语言
您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-11-1 00:19 , Processed in 0.066887 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表