泛微 E10 MCP 集成实战:从动作流到智能助手
《泛微 E10 MCP 集成实战:从动作流到智能助手》共 0.7 万字,通篇围绕 MCP、权限、日志、场景 展开,归在「Agent 与工具调用」这一层。
适合要让 AI 真的去干活、不只是陪人聊天的人
目录骨架(8 节)
- 一、先纠正一个直觉:MCP 解决的不是「接口调用」
- 二、E10 的取舍:用 Webhook 动作流当工具
- 三、一次调用经过谁
- 四、环境准入:三件事任何一件不满足,后面全是白做
- 五、核心:把动作流设计成模型能用的工具
- 六、创建 MCP:六个字段,每个都有坑
- 七、接口列表:把动作流挂成工具
- 八、密钥与客户端接入
核心观点:E10 的 MCP 不是「再写一个服务」,而是「给已有的 Webhook 动作流套一层工具外壳」。所以这门活的工作量分布是——70% 在动作流设计,20% 在网关和密钥,10% 在点鼠标建 MCP。新手最容易犯的错,是把 90% 的注意力放在「新建 MCP」那个表单上。
读完你能带走:一条从环境准入到上线的完整配置流水线、一套让模型「愿意调、调得对」的动作流写法、一张能定位到具体层的排错决策树,以及六个文档里没写、但上线前必须问清的问题。
一、先纠正一个直觉:MCP 解决的不是「接口调用」
多数人第一次接触 MCP,会把它理解成「AI 版的 HTTP 客户端」——把接口包一层,让模型能发请求。这个理解漏掉了关键的一半。
MCP 真正解决的是 N×M 的适配爆炸。3 个 AI 客户端接 5 个业务系统,点对点写适配要 15 套代码,每加一个新客户端,所有系统都要重写一遍。MCP 把这件事拆成两半:业务系统实现一次 Server,客户端实现一次 Client,中间用标准协议对接,3 + 5 = 8 份工作,且互不影响。
代价是协议必须约定得足够细。细到什么程度?细到工具名、工具描述、参数 schema 这三样东西必须由服务端提供,因为模型不读你的代码,也不读你的接口文档——它决定「调不调、怎么传参」的唯一依据,就是 tools/list 返回的这三样。
这句话是整篇文章的地基。E10 的 MCP 实现里,这三样东西的来源是:动作流的名称、动作流的描述、动作流的 Webhook 参数。所以「接口设计」在 MCP 语境下,实质是「给模型写一份它看得懂的说明书」。
三个角色,五个动作
| 角色 / 动作 | 职责 | E10 场景里对应谁 |
|---|---|---|
| Host(宿主) | 跑模型的那个应用,持有会话 | WorkBuddy 客户端 |
| Client(客户端) | 协议实现,连服务器、转发调用 | WorkBuddy 的自定义连接器 |
| Server(服务器) | 暴露工具清单、执行工具 | E10 的 /mcp/{编码} 端点 |
initialize | 握手,协商版本与能力 | 首次「认证 / 信任」 |
tools/list | 拉取工具清单 | 连接器显示「N 个工具已启用」 |
tools/call | 按名称传参调用 | 会话里模型自动发起的那次调用 |
二、E10 的取舍:用 Webhook 动作流当工具
泛微没有让你去写 MCP Server,而是把 ESB 中心里已有的 Webhook 动作流包装成工具。这个设计的收益和代价都很清楚,值得先摆开来看。
| E10 的做法 | 收益 | 代价 |
|---|---|---|
| 工具来源:在 MCP Server 里勾选「已启用的 Webhook 动作流」 | 零代码,已有集成资产直接复用,不用 Java 开发、不用重新部署 | 工具能力被动作流上限锁死;动作流禁用或删除,工具就废了 |
| 参数定义:沿用动作流 Webhook 触发器的 Param / Header / Body 参数 | 不用维护两套 schema | 只支持少数几种 Body 格式 |
| 描述来源:直接取动作流的名称和描述 | 改描述即改工具行为,不用碰 MCP 配置 | 描述写得敷衍,AI 就选不中,且几乎无法排查 |
| 鉴权方式:个人维度的 MCP 密钥 + 网关白名单 | 调用可归因到人,可按用户统计次数 | 多了密钥生命周期和网关配置两道关 |
这个表还有一层含义:MCP Server 菜单挂在动作流模块下,原因正是它底层就是动作流的 webhook。理解了这层耦合,后面所有「为什么这个也不行、那个也不支持」的疑问都能自己回答。
三、一次调用经过谁
排错的前提是能在脑子里画出这条链路。画不出来,就只能盲试。
链路上有六个环节,每个环节断掉,用户看到的都是同一句话——「AI 调不动」。但原因完全不同。
| # | 动作 | 失败时你看到什么 |
|---|---|---|
| 1 | 客户端向 /mcp/{编码} 发起 initialize | 连接失败 / 404 / 502,基本是 nginx 或网关没配 |
| 2 | 网关校验请求头里的 MCP 密钥 | 认证失败:密钥错、被重置、或用了别人的密钥 |
| 3 | open-server 按编码找到 MCP,组装工具清单 | 工具数为 0:接口没绑,或绑的动作流被禁用 |
| 4 | 客户端把名称和描述交给模型 | 工具在但永不命中:描述缺业务语义 |
| 5 | 模型按 schema 组装参数 | 参数错/缺参:参数没标必填,或命名难懂 |
| 6 | tools/call 打到 esb-server 的 webhook trigger | 500:动作流内部报错,去看动作流日志 |
| 7 | 动作流按配置的触发参数接收数据 | 参数全 null:Body 格式不支持或字段名对不上 |
| 8 | 结果原路返回,同时累计本用户调用次数 | 答案全是废话:返回结构不是给模型看的 |
