MCP tools/list responses missing ttlMs/cacheScope (SEP-2549) since 1.33.0 — breaks Claude Code #726
Unanswered
sachajw
asked this question in
Troubleshooting and Bugs
Replies: 1 comment
|
Thanks for the detailed report. I reproduced the strict-schema failure with a direct The fix is in #727. It adds the conservative cache hints AI-assisted — Tool: Codex; model: openai/gpt-5; version: unavailable. |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Summary
Since
1.33.0, fnox'smcpserver negotiates MCP protocol version2026-07-28and returnstools/listresults taggedresultType: "complete", but omits the caching-hint fields (ttlMs,cacheScope) that SEP-2549 requires to accompany that field for that protocol version. This causes strict-schema MCP clients (e.g. Claude Code) to reject the response entirely, so the fnox MCP server shows connected but tools cannot be fetched.(Repo issues appear to be disabled, so posting here instead — happy to move this if there's a better venue.)
Reproduction
Client-side error (Claude Code
/mcp):Confirmed via a direct hand-crafted MCP
initialize+tools/listJSON-RPC handshake against the fnox binary itself (not just the client's interpretation) — the raw response includes"resultType":"complete"with nottlMs/cacheScopekeys present.Root cause (as far as I can tell)
This tracks a dependency bump, not an fnox code change:
resultType/ttlMsat all)resultType: "complete"present withoutttlMs/cacheScopermcp3.x appears to have picked up the SEP-2549 "TTL for list results" caching feature (tagging responses withresultType) without also emitting the accompanyingttlMs/cacheScopefields the spec requires alongside it — so any client doing strict schema validation on that response shape rejects it.Spec reference
Per the MCP spec for protocol
2026-07-28(SEP-2549): a result withresultType: "complete"must also carryttlMs(number, ms) andcacheScope("public"|"private"). OmittingttlMs/resultTypeentirely is a valid backward-compatible old-style response ("this should only occur in older server versions") — but taggingresultType: "complete"while omitting the other two fields is not spec-compliant.Workaround
Pinning to
fnox 1.32.0(rmcp 2.2.0) restores a working MCP connection, since it predates theresultTypefield being emitted at all.Suggested fix
Either populate
ttlMs/cacheScopeon responses that setresultType: "complete", or omitresultTypeuntil fnox is ready to fully support SEP-2549 caching semantics.Happy to provide the full raw JSON-RPC transcript if useful.
All reactions