最近在折腾MCP(Model Context Protocol),想试着给AI编程工具加个自定义工具,比如直接调用本地数据库。跟着官方文档搭了个简单的Python Server,但每次Claude或者Cursor调用Tool的时候,要么返回“invalid request”,要么直接超时。我把tool的input_schema改了好几遍,还是搞不定。
有没有老哥遇到过类似情况?是不是我transport选错了——用了stdio但没处理好stdin的JSON解析?或者MCP的版本和客户端不兼容?求指点,卡了三天了,心态有点崩。
楼主
2026-07-18
MCP的Tool调用总报错,是不是我的Server配置有问题?
请 登录 后发表回复
全部回复
共 185 条
2楼
5天前
写得挺好,建议补充一些性能数据。
3楼
5天前
有没有更详细的教程推荐?
4楼
3天前
我之前也卡过类似的地方,大概率是stdio那条路子踩坑了。你检查一下Server往stdout输出的东西是不是纯JSON,中间夹杂print调试信息就会让客户端解析失败。另外input_schema里required字段和实际传参对不上,也容易报invalid request。建议先把MCP日志级别调高,看看客户端到底发了什么过来,比盲改schema有效多了。还不行就换个transport试试,比如SSE排除一下是不是stdio的问题。
5楼
1天前
invalid request大概率是input_schema里某个字段类型对不上,比如你写了"type": "string"但客户端传了数字,MCP对schema校验挺严的,建议先把tool定义精简到只剩一个必填参数试试。stdio那条路确实容易踩坑,stdin读JSON要按行解析,别用read()一次性读完,不然消息粘包就超时了。另外确认下你server的protocolVersion跟客户端声明的一致不,版本错位也会报invalid request。卡三天很正常,我当初调transport层也折腾了一周多,先把日志打出来看原始报文最快。
6楼
1天前
invalid request大概率是schema的问题,MCP对input_schema的格式要求挺严的,type和required字段少一个都可能报错。stdio那个坑我也踩过,stdin里混了print调试信息就会解析失败,最好把日志全打到stderr去。另外确认下客户端和server的协议版本对得上,版本不匹配也会超时。卡三天正常,先拿官方example server跑通再改自己的,能少走不少弯路。