The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Whats Inherited MCP listing page.
You review the code you clone. Almost nobody reviews the part of it that talks to your agent. An MCP server that enumerates everything in a checkout addressed to an AI agent rather than to you: instruction files, hook commands wired to agent events, MCP servers the repo declares, and the skills and subagents it ships.
git diff shows you code, and you read code. It also shows you three added lines in a CLAUDE.md, and you skim those, because they look like documentation. They are not documentation — they are instructions your model will follow.
The surface is bigger than most people picture. A directory you cloned can carry:
CLAUDE.md / AGENTS.md / .cursorrules — loaded into context and treated as instructions, including nested copies deep in the tree that only apply when the agent works in that subdirectory.claude/settings.json — shell wired to fire on tool use, session start, or prompt submit.mcp.json — MCP servers the repo asks to add, often launched with npx -y <package>, which means the code that runs is downloaded at start time and is not the code you reviewed.claude/skills, .claude/commands, .claude/agents — capabilities the repo hands the agentNothing collects that in one place. This does.
Run against a checkout of langfuse/langfuse at 7d2afa4 — an ordinary, reputable open-source repo, picked precisely because there is nothing wrong with it:
and instruction_files adds:
Five and a half thousand lines of standing instruction, most of it in files you would never open, in a repo nobody has any reason to distrust. That is the point: the number is large even in the benign case, which is exactly why an unusual entry in it goes unnoticed.
| Tool | What it answers |
|---|---|
inherited_summary | The headline: everything in this checkout addressed to an agent. Start here |
instruction_files | Every CLAUDE.md/AGENTS.md/.cursorrules, its size and token cost, and what its @import lines pull in — including imports that resolve outside the repo |
auto_run_commands | Hook commands the checkout wires to agent events, and whether the script each references is inside the repo, outside it, or missing |
declared_mcp_servers | MCP servers the repo declares, which of them fetch code at launch, and filesystem paths they are granted outside the checkout |
agent_extensions | Skills, slash commands and subagents the repo ships |
Every tool takes an optional dir. When it is omitted the server falls back to
WI_DEFAULT_ROOT if that is set, and otherwise to its working directory.
Claude Desktop (one-click, no terminal): download the latest whats-inherited-mcp-<version>.dxt from Releases and open it with Claude Desktop (double-click, or Settings → Extensions → Install Extension…). The server and its dependencies ship inside the bundle — no npm, no Node install.
Register with Claude Code (available in every session):
Or in any MCP client config:
Published as whats-inherited-mcp on npm and as
io.github.stcmain/whats-inherited-mcp in the MCP Registry.
One optional setting, and it takes no credentials.
| Variable | Default | Meaning |
|---|---|---|
WI_DEFAULT_ROOT | the server's working directory | Directory to inspect when a tool is called without a dir argument. |
Every tool accepts an explicit dir, which always wins. WI_DEFAULT_ROOT only
changes the fallback, and it is worth setting when a desktop client launches the
server: the process then inherits that client's working directory, which is
rarely the checkout you meant to inspect.
Inflating this in the alarming direction would be easy and would make the tool useless, so the accounting is deliberately conservative:
CLAUDE.md → AGENTS.md → .agents/AGENTS.md is a real pattern in the wild. Entries are deduplicated by resolved real path and the aliases are listed, rather than counting the same content three times..claude/ is not double-counted. A skill's own CLAUDE.md is reported as a skill, not also as a project instruction file.@token only counts when it names a document — so @scope/pkg and @mentions stay out of the number.This server's whole job is to look at content that may be hostile, so the design assumes it is.
CLAUDE.md into your context to tell you the repo might contain something bad would be self-defeating.node:fs reads, node:path and node:os. There is no child_process import anywhere in the source, so nothing in a scanned repo can be executed by scanning it.dir is the one model-controlled path, and it is bounded by construction: it is resolved, real-pathed and required to be an existing directory. Because file bodies are never emitted, pointing it somewhere sensitive discloses filenames and sizes, never contents — and it cannot write, execute or transmit anything..mcp.json is a place people leave API keys in plaintext.Built by Shift The Culture — we run a one-person company on AI agents and ship the tooling we needed ourselves. This server is free and MIT-licensed, no strings.
It has three siblings, all also free and MIT:
The rest of that tooling is paid:
The server above stays free and MIT either way — it has no upsell in it, no telemetry, and no dependency on the paid kits.
This server is MIT and stays MIT. There is no pro edition, no telemetry, and nothing held back from the free build. Sponsorship is how the maintenance gets paid for without any of that changing.
No sponsors yet — the first slot is open. Company sponsors get their name or logo in this section, in the two sibling servers, and on the sponsor page. Tiers, exactly what the placement is, and what it explicitly does not buy: https://shifttheculture.media/sponsor
Individuals: https://paypal.me/ShiftTheCultureLLC — any amount, no perks, no tier.
MIT © Zachary Pampu