MCP服务显示已连接但工具执行失败,怎样区分握手成功与业务接口失败?
MCP显示已连接,只能证明某个连接阶段完成,不能证明工具背后的业务接口能工作。按初始化、工具发现和实际调用分别检查,先固定一个无副作用的最小请求。
先从这里排查
MCP显示已连接,只能证明某个连接阶段完成,不能证明工具背后的业务接口能工作。按初始化、工具发现和实际调用分别检查,先固定一个无副作用的最小请求。记录错误返回的阶段,再区分协议兼容、参数问题和下游服务失败,不要靠反复重新连接来代替定位。
记录客户端版本和实际传输方式
适用于客户端能看到服务器名称,却无法列出工具,或者工具已经出现但执行一直报错的情况。先保存客户端与服务器的版本,以及当前采用的传输方式。连接界面的绿色状态不是业务成功的证据;能列出工具也不意味着当前账号对目标资源具备权限。
把初始化发现工具与执行分开检查
先确认初始化交换完成,并核对双方声明的协议版本和能力。再检查工具列表是否包含预期名称与输入Schema,最后才执行最小只读调用。使用标准输入输出传输时,普通日志不应污染协议输出;远程连接还要分别核对网络可达性与业务接口认证。
按失败阶段修正一个最小只读调用
把失败缩小到一个工具和一份明确参数,保留请求标识与完整错误类型。工具根本没有发现时,修正启动和能力协商;参数不合法时按当前Schema改正。协议调用已返回业务错误,则检查工具内部连接的服务,不要把所有异常都描述成MCP服务器离线。
以目标资源的真实返回验证工具
验证记录应分别列出初始化成功、预期工具可发现和最小真实查询成功,并检查返回内容确实来自目标资源。若重连后偶尔可用,还应复测原来失败的调用。业务结果为空时先确认它是否符合查询条件,不能只因没有报错就宣称工具已经完成任务。
不同客户端的连接状态定义可能不同,排查应以实际协议记录为准。本文没有连接新的MCP服务,也没有读取账号凭证。涉及令牌时只核对配置来源和授权范围,不在日志中输出真实值;未知工具不应为了测试而被赋予额外写权限或访问全部文件。
核对来源
以下资料用于核对概念和方法。文中的示例与测试范围分别注明,实际使用时请核对所用工具的版本。