原则一:RPC现有的业务接口不等于MCP接口

RPC接口和MCP接口不能等同,RPC接口是为页面交互设计。你的MCP接口要按照对话意图去设计。 这是最常见的误区。开发者在设计 MCP Server 时,很容易直接把现有的微服务或内部 API 包装一层就暴露出去。这样做会导致几个问题:

1.信息过载与噪音

RPC 接口:通常返回完整的、结构化的业务对象,包含数十个字段,目的是为了满足各种前端页面的不同需求。

MCP 接口:应该返回精简的、对话相关的信息。AI 不需要知道一个“用户对象”的所有字段,它可能只需要“姓名”和“ID”来完成当前对话。多余的信息会成为噪音,消耗宝贵的上下文窗口。

2.意图与动作的不匹配

RPC 接口:通常是细粒度的原子操作,如getUser(id),createOrder(item)

MCP 接口:应该对应用户的意图,可能是粗粒度的组合操作。用户的对话是:“帮我订一张明天去北京的机票”,这背后可能对应着searchFlightscheckSeatscreateBooking等多个 RPC 调用。MCP Server 应该内部组合这些调用,对外只暴露一个bookFlight的工具。

3.参数设计的差异

RPC 接口:参数通常是精确的、结构化的 ID 或代码。

MCP 接口:参数应该对自然语言友好。用户会说“帮我找一下上个月张三提交的报销单”,而不是“getExpenseReport(owner: ‘zhangsan', submitDate: ‘2024-05-01')”。所以 MCP 工具的参数可以是“员工姓名”、“时间范围描述”等,由 Server 内部负责将其解析为精确的查询条件。

设计建议:

包装与适配:MCP Server 应该是现有后端系统的一个智能适配层,而不是直通的代理。

聚合与精简:将多个细粒度的 RPC 调用聚合成一个粗粒度的、符合对话逻辑的工具。

数据裁剪:只返回对完成当前对话任务必要的信息,过滤掉无关字段。

原则二:要结合对话场景进行设计

这是 MCP 设计的灵魂。工具不是给代码调用的,是给一个“大脑”(LLM)在对话流中调用的。

1.工具即“对话能力”

◦不要把工具看作是“函数”,而是看作是 AI 在对话中可以使用的“技能”或“能力”。

◦例如,对于一个项目管理工具,RPC 接口可能有getProject,getTask,getUser。而对话场景下的 MCP 工具可能是:

findMyPendingTasks:直接获取当前用户待处理的任务。

summarizeProjectProgress(projectId):获取项目名称和整体进度摘要。

assignTaskToColleague(taskId, colleagueName):通过同事姓名(而非ID)来分配任务。

2.状态管理与多轮对话

◦RPC 是无状态的,每次调用相互独立。

◦MCP 工具可能需要维护或理解上下文。例如,用户问:“哪些任务快到期了?” AI 调用getUrgentTasks。用户接着说:“把第一个任务标记为完成”。

◦这时,第二个工具调用markTaskAsCompleted可能依赖于第一个调用返回的任务列表。虽然 MCP 本身不管理会话状态,但你的工具设计应该预见到这种“上下文引用”的可能性。

3.结果的可读性与引导性

◦RPC 返回 JSON 对象。

◦MCP 返回的结果不仅要被机器解析,其内容本身也应该易于被 AI总结和转化为自然语言回复给用户。有时甚至可以在返回数据中增加一些提示性文字。

◦例如,bookFlight工具返回的可以不只是订单ID,还可以包括:“成功为张三预订了 5月20日 CA1234 航班,北京到上海,已等待支付。” 这样的信息,AI 可以直接读给用户听。

设计建议:

角色扮演:在设计时,想象自己是一个在特定领域(如客服、数据分析师、秘书)的助手,你需要什么工具来完成工作?

预测用户意图:思考用户在什么情况下会说什么话,这些话对应了哪些后台操作。

设计对话流:画出可能的用户对话路径,确保你的工具集能够支撑这些路径。

扩展:其他重要的 MCP 设计原则

1.安全性原则:确保MCP接口不会执行危险操作,对于敏感操作要有确认机制。

2.最小权限原则:只提供完成对话任务所必需的工具和资源,不暴露不必要的功能。

3.用户意图导向:设计工具时应该从用户意图出发,而不是从系统功能出发。

4.结果可解释性:工具返回的结果应该易于理解和解释,以便AI能够生成用户友好的回复。

5.错误处理与鲁棒性:工具应该能够处理各种边界情况,并提供清晰的错误信息,以便AI能够理解并反馈给用户。

6.状态管理:在无状态的协议中,设计工具时要注意会话状态的维护(通常通过上下文来传递)。

7.工具与资源的平衡:不仅提供工具(操作),还可以提供资源(数据),让AI有更多的背景信息。

8.易于使用和发现:工具的名称、描述和参数应该清晰明了,使得AI能够正确选择和使用。

总结

从 RPC 思维到 MCP 思维的转变,核心是:

从“数据提供者”转变为“对话能力赋能者”。

从“系统中心化”设计转变为“用户体验中心化”设计。