题目
如何把已有业务接口封装为 MCP 服务,并复用原有校验与异常处理?
答案
在原有业务服务外增加一层协议适配,负责工具描述、参数转换和结果包装。订单归属、退款额度等规则仍由原来的 Service 或业务 API 执行。 先选择边界清楚的能力,例如“查询订单状态”,再定义输入 Schema、输出字段、错误码和权限要求。模型不应传入可信的用户身份,这类信息从服务端认证上下文获取。 执行时把 MCP 参数转换成原业务 DTO,调用已有服务,再将业务结果映射为工具结果。参数错误、业务拒绝和基础设施故障应区分,避免把所有异常变成同一句“调用失败”。 需要额外补上调用超时、限流、幂等和审计,并验证原接口与 MCP 入口的权限效果一致。协议适配层不应复制一份退款逻辑,否则两个入口很容易逐渐出现差异。