[FEATURE] Keep an MCP server's tools while excluding its resources from the @ picker
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet — the closest
open issues are #83285 and #82823 (server-level opt-in/opt-out for connectors), #73886 (MCP
resources outrank files when fileSuggestion is a custom command) and #77342 (how a selected
resource is displayed). None of them asks for resources to be separable from tools in the @
picker, which is what this request is about.
- [x] This is a single feature request (not multiple features)
Problem Statement
The @ picker mixes MCP resources and resource templates into the same list as project files, and
there is no granularity between "all of a server" and "none of it". A single connector that
publishes resource templates makes @ unusable as a file picker: typing @ and a couple of
characters buries the repository's files under URI-shaped entries from a server whose tools I
actually want to keep.
A representative session in a Go repository with a handful of connectors enabled:
@go
+ go.mod
+ go.sum
◇ <connector>:site:/// – Retrieves site metadata for a given siteId and o…
◇ <connector>:page:///sites/ – Lists and retrieves site pages for a given siteI…
◇ <connector>:teams:///chats/ – Fetches the full content of a chat message given a ch…
+ internal/migrations/00001_….sql
None of those resource templates will ever be @-mentioned while writing Go. The tools from the
same server occasionally are useful, so disabling the server is not the trade I want to make.
Verified against the 2.1.245 binary: the @ suggestion builder is handed{mcpResources, mcpResourceTemplates} taken straight from mcp.resourceTemplates and the
connected clients, and the only thing that ever empties them is a server being absent from the
session. There is no filter between "the server is connected" and "its resources appear in @".
Proposed Solution
A way to keep a server's tools while excluding its resources from the @ picker. Any of these
would solve it; the first is the smallest:
- A user-scope setting in
~/.claude/settings.json, e.g.
``jsonc``
"mcpResourcesInFileMention": false // default true, preserves today's behavior
- The same, per server, so a documentation-style server can stay searchable while a
productivity connector's templates are hidden:
``jsonc``
"mcpResourcesInFileMention": { "default": false, "allow": ["some-docs-server"] }
- Alternatively, keep resources out of the bare
@list and surface them only once the query
names a server — @servername: already scopes the list, so plain @ could mean files and
agents, and @server: could mean that server's resources. This needs no new setting.
Alternative Solutions
All existing escapes are server-level, so each one also drops the tools I want:
/mcp disable <server>— works, but writesdisabledMcpServersinto the project entry of
~/.claude.json, so it has to be repeated in every repository, and it takes the server's tools
down with its resources. (This is the subject of #83285 / #82823.)
"disableClaudeAiConnectors": truein~/.claude/settings.json, or
ENABLE_CLAUDEAI_MCP_SERVERS=0 — user-scope and effective, but all-or-nothing across every
account connector, tools included.
claude mcp remove— not applicable to account-pushed connectors, and destructive for local
ones.
Filtering by typing more characters doesn't help either: the resource descriptions are long
English sentences, so short queries fuzzy-match them broadly.
Priority
Medium - Would be very helpful
Feature Category
Interactive mode (TUI)
Use Case Example
- A connector is enabled on the account because its tools are genuinely useful — issue tracking,
docs lookup, chat search.
- I open a code repository and work there for hours; every
@is a file reference. - The connector publishes resource templates, so every
@query returns a mix of files and
URIs, and the file I want is somewhere below them.
- With the setting above I'd turn resources off for the picker once, keep the tools, and get a
file picker that only ranks files.
Additional Context
- Claude Code 2.1.245, macOS (arm64).
- The behavior is not connector-specific: it follows from resource templates existing at all, so
it applies to any current or future server that publishes them.
- Related but distinct: #83285 and #82823 want per-project/per-server control over whether a
connector loads; this asks for control over what part of a loaded server reaches the @
picker. Solving either does not solve the other.