Home Assistant 的 MCP 服务器文档:https://www.home-assistant.io/integrations/mcp_server
MCP tools/list返回了不支持的结果类型:用于内容协商——服务器根据它决定以 JSON 还是 SSE 流返回结果。
不带该头 → 服务器判定为不兼容的传输请求,直接返回 400(规范建议 406,HA 实现为 400),错误体为空。
带上该头 → 协商成功,返回 200 + application/json。
之前 401→400 的变化也印证了认证已通过,剩下的纯是传输协商问题。
手机端 "tools/list 返回不支持的结果类型" 的原因
我已实测服务器返回的是标准 JSON-RPC + application/json,数据本身没问题。问题出在手机客户端与服务器协商不一致,最可能的原因:
传输不匹配:手机客户端没发 Accept: application/json, text/event-stream(或走旧的 SSE/纯 JSON 传输),与 Streamable HTTP 服务器不兼容,客户端把响应误判为"不支持的类型"。
协议版本不匹配:客户端声明的 protocolVersion 与服务器返回的 2024-11-05 不一致,解析器对结果类型判断失败。
inputSchema 兼容性:响应中的工具 schema 含 anyOf、enum 等 JSON Schema 关键字(如 HassSetVolumeRelative.volume_step 的 anyOf),部分精简版客户端解析不了会抛该错误。
建议:确认手机客户端的 MCP 实现支持 Streamable HTTP 且协议版本 ≥ 2024-11-05;若客户端仅支持旧版 HTTP+SSE,需要换客户端或用 mcp-remote 代理(如你本地 apk-mcp 的用法)桥接。
Home Assistant 的 MCP 服务器文档:https://www.home-assistant.io/integrations/mcp_server
MCP tools/list返回了不支持的结果类型:用于内容协商——服务器根据它决定以 JSON 还是 SSE 流返回结果。
不带该头 → 服务器判定为不兼容的传输请求,直接返回 400(规范建议 406,HA 实现为 400),错误体为空。
带上该头 → 协商成功,返回 200 + application/json。
之前 401→400 的变化也印证了认证已通过,剩下的纯是传输协商问题。
手机端 "tools/list 返回不支持的结果类型" 的原因
我已实测服务器返回的是标准 JSON-RPC + application/json,数据本身没问题。问题出在手机客户端与服务器协商不一致,最可能的原因:
传输不匹配:手机客户端没发 Accept: application/json, text/event-stream(或走旧的 SSE/纯 JSON 传输),与 Streamable HTTP 服务器不兼容,客户端把响应误判为"不支持的类型"。
协议版本不匹配:客户端声明的 protocolVersion 与服务器返回的 2024-11-05 不一致,解析器对结果类型判断失败。
inputSchema 兼容性:响应中的工具 schema 含 anyOf、enum 等 JSON Schema 关键字(如 HassSetVolumeRelative.volume_step 的 anyOf),部分精简版客户端解析不了会抛该错误。
建议:确认手机客户端的 MCP 实现支持 Streamable HTTP 且协议版本 ≥ 2024-11-05;若客户端仅支持旧版 HTTP+SSE,需要换客户端或用 mcp-remote 代理(如你本地 apk-mcp 的用法)桥接。