真实面经题目 · 原创解析
MCP 客户端调用服务端工具的完整交互流程是什么?
这题考 MCP 工具调用协议的端到端理解,回答时要按连接握手、工具发现、模型决策、客户端分发、服务端执行、结果回传和安全边界展开。
真实面经题目 · 原创解析
这题考 MCP 工具调用协议的端到端理解,回答时要按连接握手、工具发现、模型决策、客户端分发、服务端执行、结果回传和安全边界展开。
MCP 客户端调用服务端工具一般不是让模型直接访问服务端,而是由客户端作为中间控制面完成。流程上,客户端先和 MCP Server 建立连接并完成能力协商,拉取可用工具列表、参数 schema 和说明;随后客户端把这些工具能力放进模型上下文,让模型根据用户意图决定是否发起 tool call;客户端收到结构化 tool call 后做参数校验、权限检查、超时预算和幂等控制,再把请求转发给对应 MCP Server;服务端执行真实工具,比如查库、读文件或调外部 API,并返回结构化结果或错误;客户端再把结果喂回模型,让模型生成最终回答。工程上要强调三点:模型只做决策和生成,不直接执行工具;客户端负责安全、调度、状态和错误处理;服务端工具要有清晰 schema、权限边界、可观测性和失败语义。
第一步是客户端和 MCP Server 建立连接,明确双方支持的协议版本、能力范围和通信方式。客户端不能假设服务端有哪些工具,而应通过协议发现工具、资源或 prompt 能力。这个阶段的重点是把服务端能力变成客户端可管理的能力清单,而不是把服务端实现细节暴露给模型。
客户端从服务端获取工具名称、描述、输入参数 schema、返回结构和可能的错误。随后客户端把适合当前任务的工具说明注入模型上下文。好的工具描述要让模型知道什么时候用、参数怎么填、结果代表什么;schema 要让客户端能做结构化校验,避免模型生成的参数直接进入执行层。
用户问题进入模型后,模型会判断是否需要调用工具。如果需要,它输出结构化 tool call,包括工具名和参数。这里模型只是提出调用意图,不能被视为可信执行方。客户端要检查工具是否存在、参数是否符合 schema、用户是否有权限、调用是否会产生副作用。
客户端是关键控制点,负责把模型的调用意图转换成真实请求。它需要设置超时时间、重试策略、取消信号、并发限制和审计日志;对读写类工具还要区分只读、写入、删除等风险等级。对于敏感工具,客户端可以要求用户确认,或者只允许在沙箱中执行。
MCP Server 执行具体工具逻辑,并返回结构化结果。返回值应尽量表达事实状态,而不是让服务端直接拼最终自然语言答案。客户端收到结果后,把结果作为 tool result 再交给模型,模型结合上下文生成面向用户的最终回答。如果服务端返回错误,也应保留错误类型、可重试性和用户可见解释。
完整回答还要补充状态和异常路径。比如多轮对话中工具结果如何进入上下文,长结果如何摘要,调用失败如何降级,超时如何取消,调用链如何打 trace。面试中不要只答成功链路,要说明客户端如何限制权限、记录审计、处理失败和避免模型绕过工具边界。
模型输出不可完全信任,必须由客户端做 schema 校验、权限判断、调用审计和副作用控制,否则容易出现越权、误调用或参数注入。
模型会误选工具、乱填参数,客户端也难以校验。结果是调用成功率低、错误不可解释,还可能把业务约束泄露到 prompt 里靠模型猜。
先按错误类型区分参数错误、权限错误、超时、服务端异常和外部依赖失败。可重试错误走有限重试或降级;不可重试错误要返回可理解的失败原因,并避免模型编造结果。
短结果可以直接进入上下文,长结果应摘要或结构化存储,并保留引用关系。对敏感结果要设置生命周期,避免无限期进入后续对话。
看它是否有明确输入输出、是否能被自然语言意图稳定触发、是否有可控权限和失败语义。高风险写操作要加确认或隔离。