[BUG] MCP client rejects valid tools/list response due to strict validation of ttlMs/cacheScope fields (Roblox Studio MCP server)

Status Open
Maintainer reply None cached
Activity 11 comments · opened Sep 26, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Description

A user-configured stdio MCP server connects successfully (status: connected) but always reports tool_count: 0, across brand-new sessions, app restarts, and even a full OS reboot. The problem persists indefinitely — no retry ever recovers it.

Environment

  • Claude Code desktop app (Code tab), Windows 11
  • MCP server: Roblox Studio's own official MCP bridge (StudioMCP.exe), launched via a project .mcp.json:

```json
{
"mcpServers": {
"Roblox_Studio": {
"command": "cmd.exe",
"args": ["/c", "cd /d %LOCALAPPDATA%\\Roblox && .\\mcp.bat"]
}
}
}
Root cause (found via local logs)
%LOCALAPPDATA%\claude-cli-nodejs\Cache\<project>\mcp-logs-Roblox-Studio\*.jsonl shows the server connects fine, then tools/list fails client-side schema validation and is retried/abandoned:

Connection established with capabilities: {"hasTools":true, ... "negotiatedProtocolVersion":"2026-07-28"}
tools/list failed (Invalid result for tools/list: [
{ "path": ["ttlMs"], "code": "invalid_type", "message": "Invalid input" },
{ "code": "invalid_value", "values": ["public","private"], "path": ["cacheScope"], "message": "Invalid input" }
]); retrying in 250ms
...
Failed to fetch tools: Invalid result for tools/list: [...]
The server's tools/list response apparently includes extra per-tool/result metadata fields (ttlMs, cacheScope) tied to a newer MCP protocol revision. The Claude Code MCP client's schema validator rejects the whole response instead of tolerating/ignoring the unrecognized fields, permanently leaving the server at 0 tools for the session's lifetime.

Verification that the server itself is fine
I bypassed Claude Code and manually spoke MCP JSON-RPC to the exact same spawn command (cmd.exe /c cd /d %LOCALAPPDATA%\Roblox && .\mcp.bat) via a small Node script emulating the client. The server responded correctly and returned a full, valid list of 28 tools (upload_image, search_game_tree, etc.) in under 100ms, for multiple negotiated protocol versions. So the Roblox Studio-side bridge is working correctly; the failure is specific to Claude Code's response validation.

Expected behavior
tools/list results with additional/unrecognized fields (like ttlMs, cacheScope) should not cause the entire tool list to be discarded — either the schema should tolerate/pass through extra fields, or unknown-field validation errors should not zero out an otherwise valid tool list.

Actual behavior
The MCP server is marked connected but exposes tool_count: 0 permanently, with no way to recover short of the underlying bug being fixed (confirmed via session_connectors_status across several fresh sessions, app restarts, and a full reboot).

What Should Happen?

The tools/list response from the Roblox Studio MCP server should be accepted and its tools exposed normally, even though it includes extra metadata fields (ttlMs, cacheScope) from a newer MCP protocol revision. Unrecognized/extra fields in a tool's result should be tolerated (or ignored) rather than causing the entire tools/list response to be rejected and the server permanently stuck at 0 tools.

Error Messages/Logs

{"debug":"Starting connection with timeout of 30000ms", ...}
{"debug":"Successfully connected (transport: stdio) in 169ms", ...}
{"debug":"Connection established with capabilities: {\"hasTools\":true,\"hasPrompts\":false,\"hasResources\":false,\"hasResourceSubscribe\":false,\"serverVersion\":{\"name\":\"RobloxStudio\",\"version\":\"1.0.0\"},\"protocolEra\":\"modern\",\"negotiatedProtocolVersion\":\"2026-07-28\"}", ...}
{"debug":"tools/list failed (Invalid result for tools/list: [\n  {\n    \"expected\": \"number\",\n    \"code\": \"invalid_type\",\n    \"path\": [\n      \"ttlMs\"\n    ],\n    \"message\": \"Invalid input\"\n  },\n  {\n    \"code\": \"invalid_value\",\n    \"values\": [\n      \"public\",\n      \"private\"\n    ],\n    \"path\": [\n      \"cacheScope\"\n    ],\n    \"message\": \"Invalid input\"\n  }\n]); retrying in 250ms", ...}
{"debug":"tools/list failed (Invalid result for tools/list: [...]); retrying in 500ms", ...}
{"debug":"tools/list failed (Invalid result for tools/list: [...]); retrying in 1000ms", ...}
{"error":"Failed to fetch tools: Invalid result for tools/list: [\n  {\n    \"expected\": \"number\",\n    \"code\": \"invalid_type\",\n    \"path\": [\n      \"ttlMs\"\n    ],\n    \"message\": \"Invalid input\"\n  },\n  {\n    \"code\": \"invalid_value\",\n    \"values\": [\n      \"public\",\n      \"private\"\n    ],\n    \"path\": [\n      \"cacheScope\"\n    ],\n    \"message\": \"Invalid input\"\n  }\n]", ...}
(Log source: %LOCALAPPDATA%\claude-cli-nodejs\Cache\C--github-project1\mcp-logs-Roblox-Studio\*.jsonl)

Resultado final observado via session_connectors_status:

{"name":"Roblox_Studio","kind":"user","transport":"stdio","status":"connected","tool_count":0}

Steps to Reproduce

Para o campo "Steps to Reproduce":

1. Install Roblox Studio (recent version that ships the official StudioMCP.exe MCP bridge).
2. Add a project .mcp.json pointing at it:
   {
     "mcpServers": {
       "Roblox_Studio": {
         "command": "cmd.exe",
         "args": ["/c", "cd /d %LOCALAPPDATA%\\Roblox && .\\mcp.bat"]
       }
     }
   }
3. Open Roblox Studio (single instance) and open a Claude Code session in that project.
4. Check the server's status, e.g. via the "session_connectors_status" tool/equivalent MCP inspector — it shows status "connected" but tool_count: 0.
5. Try asking Claude to use any Roblox Studio tool — none are available.
6. Open a brand-new Claude Code session (or restart the app, or reboot the OS) and repeat step 4 — tool_count is still 0 every time.
7. Inspect %LOCALAPPDATA%\claude-cli-nodejs\Cache\<project>\mcp-logs-Roblox-Studio\*.jsonl — it shows the connection succeeding but every tools/list call failing schema validation on the "ttlMs" and "cacheScope" fields (see Error Messages/Logs), so the client gives up and reports 0 tools.
8. As independent verification, bypass Claude Code and speak raw MCP JSON-RPC (initialize + notifications/initialized + tools/list) directly to the same "cmd.exe /c cd /d %LOCALAPPDATA%\Roblox && .\mcp.bat" command via a small script — the server responds correctly with a full list of 28 tools, proving the Roblox Studio side is not the problem.

Claude Model

Sonnet (default)

Is this a regression?

Yes, this worked in a previous version

Last Working Version

_No response_

Claude Code Version

Versão 2.9939.2 (d3e504)

Platform

Anthropic API

Operating System

Windows 11

Terminal/Shell

Terminal.app (macOS)

Additional Information

_No response_

View original on GitHub ↗

11 Comments

y2kirby · 18 days ago

bump

ReaktionTV · 18 days ago

Found a fix, downgrade to version v2.1.280. Works perfectly fine for me. Be aware of the auto updater from anthropic which will automatically upgrade claude code to the newest version.

claude install v2.1.280

rsc1982cel9-droid · 18 days ago

Hi!
How to do this using Claude desktop?

Em sáb., 26 de set. de 2026 às 07:51, ReaktionTV @.***>
escreveu:

ReaktionTV left a comment (anthropics/claude-code#97319) <https://github.com/anthropics/claude-code/issues/97319#issuecomment-5845618313> Found a fix, downgrade to version v2.1.280. Works perfectly fine for me. Be aware of the auto updater from anthropic which will automatically upgrade claude code to the newest version. claude install v2.1.280 — Reply to this email directly, view it on GitHub <https://github.com/anthropics/claude-code/issues/97319?email_source=notifications&email_token=B5AKDVUDVEFITFI5UVFZEOT5Q6NRXA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKOBUGU3DCOBTGEZ2M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L#issuecomment-5845618313>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/B5AKDVWDNYPWT3NT7NVBP7L5Q6NRXAVCNFSNUABFKJSXA33TNF2G64TZHM4TGNZSGUZTINZVHNEXG43VMU5TKNJZGAZDIMRWGEZKC5QC> . Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS <https://github.com/notifications/mobile/ios/B5AKDVRVJDP4Y4PQMZJZBBL5Q6NRXA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKOBUGU3DCOBTGEZ2M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KUZTPN52GK4S7NFXXG> and Android <https://github.com/notifications/mobile/android/B5AKDVUJVEBMOXHRLJFQXVD5Q6NRXA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKOBUGU3DCOBTGEZ2M4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2K4ZTPN52GK4S7MFXGI4TPNFSA>. Download it today! You are receiving this because you authored the thread.Message ID: <anthropics/claude-code/issues/97319/5845618313 @.*** com>
rsc1982cel9-droid · 18 days ago

Hi!
How to do this using claude desktop?

ItsZedK · 18 days ago

bumping

vekkei · 18 days ago

bumping

ReaktionTV · 18 days ago
Hi! How to do this using claude desktop?

According to AI: npm install -g @anthropic-ai/claude-code@<verison>
Didn't test it because I only use claude code via terminal

eyrblx · 17 days ago

Hi All - Roblox Studio 0.740.19.7400003 has been patch to support this.

Related: https://devforum.roblox.com/t/roblox-studio-mcp-works-up-to-claude-code-21280-broken-from-21281/4896239

ItsZedK · 17 days ago

Can confirm that the Roblox Studio MCP server does serve its tools now after the latest Studio update on the latest CC CLI version, 2.1.183.

<img width="1115" height="628" alt="Image" src="https://github.com/user-attachments/assets/d5dd5fdb-911b-4fd8-8f74-1c1225e30bfe" />

rsc1982cel9-droid · 17 days ago

Claude connects, but cannot use the tools.

Em dom., 27 de set. de 2026 às 05:10, ZedK @.***>
escreveu:

ItsZedK left a comment (anthropics/claude-code#97319) <https://github.com/anthropics/claude-code/issues/97319#issuecomment-5854096792> Can confirm that the Roblox Studio MCP server does serve its tools now after the latest Studio update on the latest CC CLI version, 2.1.183. Image: Image (view on web) <https://github.com/user-attachments/assets/d5dd5fdb-911b-4fd8-8f74-1c1225e30bfe> — Reply to this email directly, view it on GitHub <https://github.com/anthropics/claude-code/issues/97319?email_source=notifications&email_token=B5AKDVW2W5OFR7SP5SSV6R35RDDRHA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKOBVGQYDSNRXHEZKM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L#issuecomment-5854096792>, or unsubscribe <https://github.com/notifications/unsubscribe-auth/B5AKDVWD5FIWESDQNCUUGPT5RDDRHAVCNFSNUABFKJSXA33TNF2G64TZHM4TGNZSGUZTINZVHNEXG43VMU5TKNJZGAZDIMRWGEZKC5QC> . Triage notifications, keep track of coding agent tasks and review pull requests on the go with GitHub Mobile for iOS <https://github.com/notifications/mobile/ios/B5AKDVR3RUZDI4P3KBLQTVT5RDDRHA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKOBVGQYDSNRXHEZKM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KUZTPN52GK4S7NFXXG> and Android <https://github.com/notifications/mobile/android/B5AKDVUOVLPNR34BSR6QKEL5RDDRHA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKOBVGQYDSNRXHEZKM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2K4ZTPN52GK4S7MFXGI4TPNFSA>. Download it today! You are receiving this because you authored the thread.Message ID: <anthropics/claude-code/issues/97319/5854096792 @.*** com>
rsc1982cel9-droid · 17 days ago

Done! Using MCP_PROTOCOL_NEGOTIATION=legacy claude.
Thanks all!

Em dom., 27 de set. de 2026 às 08:50, Rafael Sales @.***>
escreveu:

Claude connects, but cannot use the tools. Em dom., 27 de set. de 2026 às 05:10, ZedK @.***> escreveu: > ItsZedK left a comment (anthropics/claude-code#97319) > <https://github.com/anthropics/claude-code/issues/97319#issuecomment-5854096792> > > Can confirm that the Roblox Studio MCP server does serve its tools now > after the latest Studio update on the latest CC CLI version, 2.1.183. > Image: Image (view on web) > <https://github.com/user-attachments/assets/d5dd5fdb-911b-4fd8-8f74-1c1225e30bfe> > > — > Reply to this email directly, view it on GitHub > <https://github.com/anthropics/claude-code/issues/97319?email_source=notifications&email_token=B5AKDVW2W5OFR7SP5SSV6R35RDDRHA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKOBVGQYDSNRXHEZKM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KYZTPN52GK4S7MNWGSY3L#issuecomment-5854096792>, > or unsubscribe > <https://github.com/notifications/unsubscribe-auth/B5AKDVWD5FIWESDQNCUUGPT5RDDRHAVCNFSNUABFKJSXA33TNF2G64TZHM4TGNZSGUZTINZVHNEXG43VMU5TKNJZGAZDIMRWGEZKC5QC> > . > Triage notifications, keep track of coding agent tasks and review pull > requests on the go with GitHub Mobile for iOS > <https://github.com/notifications/mobile/ios/B5AKDVR3RUZDI4P3KBLQTVT5RDDRHA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKOBVGQYDSNRXHEZKM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2KUZTPN52GK4S7NFXXG> > and Android > <https://github.com/notifications/mobile/android/B5AKDVUOVLPNR34BSR6QKEL5RDDRHA5CNFSNUABFM5UWIORPF5TWS5BNNB2WEL2JONZXKZKDN5WW2ZLOOQXTKOBVGQYDSNRXHEZKM4TFMFZW63VGMF2XI2DPOKSWK5TFNZ2K4ZTPN52GK4S7MFXGI4TPNFSA>. > Download it today! > You are receiving this because you authored the thread.Message ID: > <anthropics/claude-code/issues/97319/5854096792 @.*** > .com> >