ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

HTTP MCP 客户端连 Vibe-Trading 的 /sse 端点返回 405 是怎么回事?

HTTP MCP 客户端连 Vibe-Trading 的 /sse 端点返回 405 是怎么回事? HTTP MCP 客户端连 Vibe-Trading 的 /sse 端点返回 405 是怎么回事【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading当你的 MCP 客户端QwenPaw、Cursor 或任何通过 POSTInitializeRequest协商的 HTTP 客户端配置了 Vibe-Trading 的 MCP 地址连接后却收到405 Method Not Allowed有时是404原因几乎总是同一个客户端把地址指到了/sse。Vibe-Trading 的 MCP server 有三种 transport/sse只属于其中已弃用的那一种。本文基于仓库 README.md 的 MCP Plugin 章节、MCP server 入口 agent/mcp_server.py 和仓库自带集成测试说明这个错误的成因、正确的端点配置以及如何验证连接已恢复。Vibe-Trading MCP server 的三种 transport 与各自端点README.md 和 agent/mcp_server.py 的文档字符串给出的完整端点表如下transport启动方式有效端点文档中的定位stdiovibe-trading-mcp无网络端口父子进程管道默认方式客户端自行拉起子进程无需服务器设置Streamable HTTPvibe-trading-mcp --transport http单一 POST/GET/mcp默认http://127.0.0.1:8900/mcp当前 MCP 规范的默认 transport2025-03-26 及以后的规范legacy SSEvibe-trading-mcp --transport sseGET/sse事件流 POST/messages/消息已弃用仅服务较老的客户端对应的启动命令README 原文vibe-trading-mcp # stdio (default) vibe-trading-mcp --transport http # Streamable HTTP (current MCP spec default) at http://127.0.0.1:8900/mcp vibe-trading-mcp --transport sse # legacy SSE (deprecated) for older clients其中--host/--port可以覆盖 http transport 的绑定地址README 给出的默认端口是8900。为什么 POST /sse 会返回 405先看 HTTP 类客户端的协商方式它把一条 JSON-RPCinitialize请求 POST 到自己配置的单一 URL 上。README 对这一错误场景的表述是Donotpoint an HTTP client at/sse; that path belongs to the deprecated two-endpoint SSE transport and will return405 Method Not AllowedonPOST.agent/mcp_server.py 的文档字符串口径一致单一端点服务在/mcp客户端应指向http://host:port/mcp而不是/sse——/sse是 legacy SSE transport 的产物。需要注意仓库中存在两个数字README 记录的现象是405 Method Not Allowed针对--transport http的集成测试 agent/tests/test_mcp_server_http_transport.py 断言得更具体该 transport 下/sse根本没有挂载POST 返回404。这两个数字对应服务端不同的运行模式legacy--transport sse模式挂载了/sse只接受 GET 的事件流路径消息走 POST/messages/对它发 POST 得到 405--transport http模式不挂载该路径得到 404。无论看到哪个状态码结论相同客户端的 URL 指向了无效端点而不是服务器故障。一个容易混淆的分支如果你实际用的是较老的、只支持 legacy SSE 协议的客户端那也不该用单一 URL的方式配置——legacy 模式本身是两个端点GET/sse建立事件流POST/messages/发送消息。把这种客户端的 URL 直接填成/sse再发InitializeRequestPOST就是 405 的典型来源。修复把客户端指向 /mcp主路径适用于绝大多数 HTTP 客户端。分两步服务端以 Streamable HTTP 启动如果还没运行vibe-trading-mcp --transport http确认进程成功绑定后README 的示例中默认是127.0.0.1:8900非默认时用--host/--port指定的地址。把客户端的 MCP 服务器 URL 改为单一的/mcp端点http://127.0.0.1:8900/mcp如果客户端配置里原来写的是http://127.0.0.1:8900/sse直接改掉路径即可主机和端口不变。可选分支一客户端只支持 legacy SSE 协议。服务端改用vibe-trading-mcp --transport sse启动客户端按其文档分别配置 GET/sse与 POST/messages/两个端点。该 transport 在文档中已标注 deprecated仅作为老客户端的过渡路径。可选分支改用 stdio完全不占网络端口。若客户端支持command形式的子进程配置Claude Desktop、OpenClaw 等直接按 README 的配置走 stdio客户端自己拉起服务器{ mcpServers: { vibe-trading: { command: vibe-trading-mcp } } }注意 README 特别提醒stdio 模式下服务器由客户端拉起shell 里的export环境变量传不进去必须写在客户端配置的env块里。例如生成回测代码的产物要写入自己的工作区时VIBE_TRADING_ALLOWED_RUN_ROOTS就要放在这个env块中{ mcpServers: { vibe-trading: { command: vibe-trading-mcp, env: { VIBE_TRADING_ALLOWED_RUN_ROOTS: C:\\Users\\me\\research } } } }验证连接已恢复正常仓库的集成测试 agent/tests/test_mcp_server_http_transport.py 就是这条验证路径它对真实启动的--transport http服务器 POST 一条initialize请求。按同样的请求手写一条 curlclientInfo.name等字段取自测试用例可按需替换curl -i -X POST http://127.0.0.1:8900/mcp \ -H Content-Type: application/json \ -H Accept: application/json, text/event-stream \ -d { jsonrpc: 2.0, id: 1, method: initialize, params: { protocolVersion: 2025-03-26, capabilities: {}, clientInfo: {name: test-mcp-server-http, version: 1} } }判断标准来自该集成测试的断言文档示例不是固定日志HTTP 状态码为200响应头包含MCP-Session-Id测试中写作mcp-session-idcontent-type是application/json或text/event-stream之一若为 SSE 帧取data:行后的 JSON响应体result.serverInfo.name等于Vibe-Trading。四项都满足说明 Streamable HTTP 握手成功客户端侧此时应能发现工具列表——Vibe-Trading 通过 MCP 暴露 74 个工具其中 HK/US/加密货币的核心研究工具无需 API keyrun_swarm需要 LLM keytrading_*工具则依赖你选定的 connector profile。边界与相邻情况网络传输默认只允许 loopback。agent/mcp_server.py 对--transport http/sse两种网络 transport 内置了 Host/Origin 白名单默认仅127.0.0.1、::1、localhost可用环境变量VIBE_TRADING_MCP_ALLOWED_HOSTS覆盖。若客户端从其他机器连上来被拒先检查这一层而不是端点路径。反向情况Vibe-Trading 作为客户端连外部 MCP server。给run_swarmworker 配置外部 MCP 工具时URL 类 transport 必须显式写type字段agent 不再根据 URL 后缀在 SSE 与 Streamable HTTP 之间猜测见 README_zh.md 的相关说明。如果你的配置是靠看到/sse后缀就按 SSE 处理写出来的同样需要修正。按上面的顺序检查后/sse上的 405/404 意味着客户端 URL 配错 transport 端点改指/mcp并通过initialize握手验证即可恢复握手仍失败时再回到 Host 白名单和服务端启动参数两处排查。【免费下载链接】Vibe-TradingVibe-Trading: Your Personal Trading Agent项目地址: https://gitcode.com/GitHub_Trending/vi/Vibe-Trading创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表