{"version":"2.1.296","anchor":"mcp-tool-listing-now-caps-tools-per-server-and-reports-tool","canonical_anchor":"mcp-tool-listing-now-caps-tools-per-server-and-reports-tool","heading":"MCP tool lists are capped per server, and file-grant tools get special handling","tier":"notice","area":"MCP","scope":"individual","heads_up":true,"url":"https:\/\/changelogs.core-directive.com\/v\/2.1.296\/e\/mcp-tool-listing-now-caps-tools-per-server-and-reports-tool","release_url":"https:\/\/changelogs.core-directive.com\/v\/2.1.296","markdown":"### MCP tool lists are capped per server, and file-grant tools get special handling\n\nClaude Code now limits how many tools one MCP server can list, and MCP tools marked for file grants get a wrapper and skip XML-tag stripping\n\n**Unclear.** The maximum number of tools Claude Code keeps from one server is not stated.\n\n**What**\n\nMCP servers are outside programs that give Claude Code extra tools. This release changes how Claude Code lists those tools and how it calls some of them:\n\n- Per-server tool limit: when a server lists more tools than allowed, Claude Code counts how many it skipped and logs a warning for that server, recording the reason `tool_listing_over_limit` with a `skippedCount`. Before, every tool a server returned was listed.\n\n- File-grant tools: a tool whose `_meta` field (extra details the server attaches to a tool) carries a particular key now gets a special input wrapper. The wrapper calls the server directly and returns the server's `structuredContent`, which is data in a fixed shape.\n\n- XML-tag stripping: calls to such a tool check `hasFileGrants`. When file grants exist, the call skips the trailing-XML-tag stripping that sits behind the `tengu_mcp_strip_trailing_xml_tags` switch. Before, that stripping was always applied. The switch still defaults to off in the code.\n\n- Per-message tool state: tool-call results can now also record tool state for each message.\n\n**Why**\n\nIf you connect a server with a very large tool list, some of its tools may no longer be listed, and the warning in the logs tells you how many were skipped. The `_meta` file-grant handling looks like groundwork for MCP tools that work with files, and those tools now have their results passed back without the trailing tags being trimmed.\n\n- Flag `tengu_mcp_strip_trailing_xml_tags`: Not enough to say (read for one account on one subscription tier against v2.1.296; this account: no value returned, anonymous baseline: no value returned, compiled default: off) These values were read against a different version of Claude Code, so treat them as the nearest reading available instead of one taken on this release.\n- Area: MCP\n- Tier: You'll notice\n- Useful: 3\/5\n- Signal: 3\/5\n- Scope: individual\n- Heads-up: yes"}