-32001 到底是什么
-32001 是 MCP 协议里「请求超时」的代码。你的客户端发了一个请求——通常是工具调用——在它愿意等的时间窗内没收到响应,于是放弃并抛出这个错误。
关键要理解:超时是症状。它告诉你 server 没能及时应答,没告诉你为什么。server 可能慢、可能卡住、可能在等外部东西、也可能已经死了。排查 -32001 就是一个缩小范围、确定是哪种的过程。
常见原因,大致按频率排
一个真在干活的慢工具。有些工具调用本来就要一会儿——大规模抓网页、重量级数据库查询、server 内部的模型调用。如果这个操作合理地需要 40 秒而客户端超时设的是 30 秒,你就会拿到 -32001,尽管什么都没坏。这是最常见也最良性的原因。
server 卡在启动或某个外部依赖上。如果 server 在等一个本身就慢或够不到的 API,请求永远完不成。从客户端这边看它和慢工具一模一样,所以你必须去看 server 才能区分。
server 在请求进行中崩了。如果进程在接受请求后死掉,响应永远不会来,客户端会把整个超时等满再报 -32001。这里超时是真的,但超时值无关紧要——修法是解决把 server 搞崩的那个东西。
怎么缩小范围
把这个工具底层的操作单独拎出来、在 MCP 客户端之外跑一遍并计时。如果它比客户端超时还长,你就找到了原因,修法是调大超时或让操作更快——而不是去动 MCP 配置。
看报错之后 server 还活着没。显示 connected 但每次调用都超时的,通常是卡在依赖上;已经 disconnected 的是崩了。claude mcp list(或你客户端的等价命令)能告诉你是哪种。
看这个工具依赖什么。同样的输入时好时坏的超时,往往能追到一个不稳定的外部服务,而不是 server 本身——这种情况下 MCP 层是报信的,不是问题所在。
修法
如果操作确实慢,就把客户端对这个 server 的超时调大。大多数客户端都能配;协议本身不强加固定上限,所以这个数字完全由客户端决定。
如果 server 卡在外部调用上,修法在 server 或它依赖的服务里,不在你的配置里。给 server 内部加个超时(让它快速失败并给出真实错误而不是一直挂着),能把一个神秘的 -32001 变成一条能读的消息。
如果 server 在崩,就像对待任何启动失败的 server 一样,手动跑它的命令看真实错误。超时是崩溃的下游;修好崩溃,超时就没了。