# How do I make sure Claude actually calls the context MCP without every engineer editing their CLAUDE.md?


URL: https://getunblocked.com/answers/make-claude-call-context-mcp-without-editing-claude-md/
Published: 2026-11-12T15:30:00Z
Updated: 2026-11-08T16:38:47Z
Author: Dennis Pilarinos
Categories: Context Engine, Engineering Insights

**Short answer:** Push it from the org, not from each laptop. Deliver the server through Claude Code managed settings or a force-enabled plugin, put the one instruction in a managed CLAUDE.md or in skills the plugin ships, and let the server's own instructions tell Claude when to call it. Engineers can't remove a managed server, and nobody edits a file.

---
To make Claude call an MCP on every engineer's machine without anyone editing CLAUDE.md, ship three things from the organization: the server, the instruction to use it, and the server's own description of when it applies. Claude Code has an org layer for each. **Managed settings** are the policy file or admin-console settings that every machine in your organization reads, and they sit above anything a user or repo sets. The per-repo file stays untouched.

| Org layer | What it delivers | Can an engineer remove it? |
| --- | --- | --- |
| managedMcpServers | The server, signed in per user | No; they can only switch it off for themselves |
| Managed CLAUDE.md or claudeMd | The "call it first" line | No; it can't be excluded file by file |
| Force-enabled plugin | The server plus skills | No; disabling it locally doesn't stop it loading |
| Server instructions | When the server applies, sent by the server | Not a client setting |


## Why Claude skips a server it already has

Often the server is connected and Claude never thinks of it. Claude Code defers MCP tools by default. Anthropic's docs say "only tool names and server instructions load at session start," and Claude searches for the full tool when a task seems to need it ([Claude Code MCP docs](https://code.claude.com/docs/en/mcp)). Claude decides from a tool name and a short paragraph. For example, a server named `search` that describes itself as "search tool" gives Claude no reason to call it before a refactor, so Claude opens the codebase instead.

The usual fix is a line in every CLAUDE.md, which is the per-person work you want to avoid, and it drifts. Our post on [rules files vs a context engine](https://getunblocked.com/blog/rules-files-vs-context-engine/) covers why copies of one rule decay across repos, and [what one instructions file can't fix](https://getunblocked.com/blog/single-file-agent-instructions/) covers the limits of the file itself.

## Provide the server from managed settings

Claude Code has a managed setting built for this. List the server under `managedMcpServers` and "every user gets the remote servers you list and keeps their own" ([Claude Code managed MCP docs](https://code.claude.com/docs/en/managed-mcp)). Users "can't edit or remove a provided server," and it wins over a same-name server elsewhere. Leave out headers and each engineer signs in with OAuth as themselves. The key needs Claude Code v2.1.259 or later.

```json
{
  "managedMcpServers": {
    "context": { "type": "http", "url": "https://context.example.com/mcp" }
  },
  "claudeMd": "Before planning or changing unfamiliar code, call the context MCP's research tool and cite what it returns."
}
```


The `claudeMd` key carries the instruction in the same file. Anthropic's memory docs say it holds "managed CLAUDE.md content directly inside managed-settings.json" and loads "before user and project CLAUDE.md." Developers can exclude other CLAUDE.md files, "but not this one" ([Claude Code memory docs](https://code.claude.com/docs/en/memory)). Deliver it by MDM, as a `managed-settings.json` at the system path, or from the claude.ai admin console. Only the admin-console route reaches cloud sessions ([Claude Code settings docs](https://code.claude.com/docs/en/settings)).

One caution: Anthropic calls the managed CLAUDE.md guidance, not enforcement. It puts the line in front of Claude on every machine but does not force the call, and a session started with CLAUDE.md loading off skips it. For the hook that blocks an edit until the research call has run, see [why agents ignore CLAUDE.md rules](https://getunblocked.com/answers/agents-ignore-claude-md-rules-how-to-make-context-stick/).

## Or ship it as a plugin, so the skills come along

A plugin bundles the server with skills that teach Claude when and how to use it. **A skill** is a SKILL.md file that Claude loads when its description matches the task. Force-enable the plugin with two managed keys: `extraKnownMarketplaces` registers the marketplace and `enabledPlugins` installs it "at the start of the user's next session." Disabling it at their own scope "doesn't stop it from loading, because managed settings take precedence" ([Claude Code plugin admin docs](https://code.claude.com/docs/en/plugins/org)).

```json
{
  "extraKnownMarketplaces": {
    "unblocked-skills": { "source": { "source": "github", "repo": "unblocked/skills" } }
  },
  "enabledPlugins": { "unblocked-skills@unblocked-skills": true }
}
```


Put the instruction in a skill, not a file. Claude Code "doesn't load a CLAUDE.md at the plugin root," and the plugin docs say to write instructions as skills ([Claude Code plugin components docs](https://code.claude.com/docs/en/plugins/components)). Unblocked's public plugin works this way: its manifest declares the hosted MCP server and ships skills such as `unblocked-context-research` that tell the agent when to research first ([unblocked/skills](https://github.com/unblocked/skills)). [Agent skills vs rules files](https://getunblocked.com/blog/agent-skills-vs-rules-files/) explains which layer should hold what.

## Let the server describe itself

The cheapest fix lives on the server. The MCP specification gives every server an optional `instructions` field: "natural-language guidance for LLMs on how to use this server effectively" ([MCP specification](https://modelcontextprotocol.io/specification/2026-07-28/server/discover)). With tool search on, Anthropic says this field "help\[s\] Claude understand when to search for your tools," and asks authors to state what tasks the tools handle and when Claude should search for them (Claude Code MCP docs).

Wording changes what gets picked. In a February 2026 study of functionally equivalent servers competing for the same task, standard-compliant descriptions reached a 72% selection probability against a 20% baseline ([Wang et al., arXiv](https://arxiv.org/abs/2602.18914)). Two limits matter. Claude Code cuts server instructions at 4,096 characters, so the trigger belongs in the first sentence. And if one tool must be visible on every turn, the server author can mark it to load upfront with `"anthropic/alwaysLoad": true` in the tool's `_meta`. Do it for one tool, since each upfront tool costs context.

If you run the server yourself, rewrite its instructions as a trigger, for example: "Call this before planning a change, debugging an unfamiliar error, or answering why code works the way it does." If you buy it, read what it sends and what skills ship with it. Unblocked's docs pair each MCP tool with a skill that encodes "when to reach for each tool" and suggest a near-identical instruction line ([Unblocked skills docs](https://docs.getunblocked.com/unblocked-mcp/skills)).

## Check one laptop, then the fleet

1. On a managed machine, run `/status` and look for the managed source under "Setting sources," then run `/mcp` and look for the server under Managed MCPs.
2. Give Claude a task where the code alone gives the wrong answer. Watch whether it calls the research tool before its first edit.
3. For the fleet, turn on OpenTelemetry export and set `OTEL_LOG_TOOL_DETAILS=1` in the managed `env` block. Claude Code then records "MCP server and tool names in tool events," so you can count research calls per engineer per week (Claude Code managed MCP docs).
4. Contact any team with zero calls. Check for clients older than v2.1.259, which ignore `managedMcpServers`.

GitHub Copilot's enterprise `managed-settings.json` takes the same plugin keys. There, `enabledPlugins` "defines plugins that are automatically installed or blocked for all enterprise users," next to `extraKnownMarketplaces` and an `allowedMcpServers` allowlist ([GitHub Copilot managed settings docs](https://docs.github.com/en/copilot/reference/enterprise-administrators/enterprise-managed-settings)). Confirm Copilot reads your plugin's format before you rely on it, and see [everyone connects their own MCP servers](https://getunblocked.com/answers/everyone-connects-their-own-mcp-servers/) for mixed-tool teams.

## Read more

- [Rules Files vs a Context Engine: What Actually Works](https://getunblocked.com/blog/rules-files-vs-context-engine/)
- [One Instructions File to Rule Your Agent: What AGENTS.md and CLAUDE.md Can and Can't Fix](https://getunblocked.com/blog/single-file-agent-instructions/)

## Related answers

- [Is an LLM-maintained wiki in git a better fix than a context tool for engineering knowledge?](https://getunblocked.com/answers/llm-maintained-wiki-vs-context-tool/)
- [How do we drive adoption of an AI coding tool from a third of engineering to everyone?](https://getunblocked.com/answers/drive-ai-coding-tool-adoption-across-engineering/)
- [Atlassian Rovo MCP versus a dedicated context tool for Confluence, Jira and code?](https://getunblocked.com/answers/atlassian-rovo-mcp-vs-context-tool/)
- [Should we rewrite legacy code to be agent-friendly or add a context layer on top of it?](https://getunblocked.com/answers/rewrite-legacy-code-for-agents-or-add-context-layer/)
