Shows what consumes your agent's context window before the conversation starts — skill descriptions, memory files and their imports, configured MCP servers. Read-only, MIT.
claude mcp add whats-loaded-mcp -- npx -y whats-loaded-mcp{
"mcpServers": {
"whats-loaded-mcp": {
"command": "npx",
"args": ["-y", "whats-loaded-mcp"]
}
}
}MCP Servers overview
# whats-loaded-mcp
[](https://www.npmjs.com/package/whats-loaded-mcp)
[](LICENSE)
[](https://glama.ai/mcp/servers/stcmain/whats-loaded-mcp)
**Your context window is already half spent before you type.** An MCP server that shows what is consuming it — every skill description, every memory file and its hidden `@imports`, every configured MCP server — ranked by cost, with duplicates called out.
## Why
Skills are cheap to install and permanently expensive to keep. A skill's `name` and `description` go into the system prompt of **every session, forever** — only the body is loaded on demand. Install a few hundred and you've quietly mortgaged half your window before the first message.
Nothing surfaces this. You notice it as sessions that compact sooner than they used to, and you have no idea which of the things you installed six months ago is responsible.
On the machine this was written on:
```
# Context budget — cost before you type a single character
**~95,316 estimated tokens always loaded.**
For scale: ~47.7% of a 200K window, ~9.5% of a 1M window.
| Source | Count | Est. tokens |
|----------------------------------------------|------:|-------------:|
| Skill descriptions | 1,767 | 92,884 |
| Memory files (CLAUDE.md/AGENTS.md + imports) | 3 | 2,432 |
| MCP servers configured | 10 | not measured |
| **Total measurable** | | **95,316** |
> **79 duplicate skill names** are costing ~9,435 tokens.
```
79 names were installed more than once — the same skill picked up from several sources, like `agent-browser` appearing three times from three authors. But a shared name does not always mean a redundant copy: on that install only **34 groups were byte-identical** (~1,523 tokens genuinely recoverable), while **45 shared a name and differed in content** — different work wearing the same label, where deleting a copy loses something. `duplicate_skills` compares content hashes and reports those two groups separately, so the cleanup advice is safe to act on rather than merely impressive.
## Tools
| Tool | What it answers |
|---|---|
| `context_budget` | The headline: how much is loaded before you type, split by source. Start here |
| `skill_costs` | Skills ranked by token cost, so you trim where it actually pays |
| `duplicate_skills` | The same skill installed more than once — usually pure waste |
| `memory_files` | `CLAUDE.md`/`AGENTS.md` sizes **and** what their `@import` lines silently pull in |
| `mcp_servers` | Every MCP server configured across your clients, and which config declares it |
## Install
Register with Claude Code (available in every session):
```bash
claude mcp add --scope user whats-loaded -- npx -y whats-loaded-mcp
```
Or in any MCP client config:
```json
{
"mcpServers": {
"whats-loaded": {
"command": "npx",
"args": ["-y", "whats-loaded-mcp"]
}
}
}
```
<details>
<summary>From source</summary>
```bash
git clone https://github.com/stcmain/whats-loaded-mcp.git
cd whats-loaded-mcp
npm install && npm run build
# then point your client at node /path/to/whats-loaded-mcp/dist/index.js
```
</details>
Published as [`whats-loaded-mcp`](https://www.npmjs.com/package/whats-loaded-mcp) on npm and as
`io.github.stcmain/whats-loaded-mcp` in the [MCP Registry](https://registry.modelcontextprotocol.io/).
### Configuration
One optional setting, and it takes no credentials.
| Variable | Default | Meaning |
|---|---|---|
| `WL_PROJECT_ROOT` | the server's working directory | Directory treated as "the project" for project-scoped skills, memory files and `.mcp.json`. |
Personal and plugin scopes are read from `~/.claude` either way. Setting this is
worth it when a desktop client launches the server: the process inherits *that
client's* working directory, which is rarely the project you are asking about.
```json
{
"mcpServers": {
"whats-loaded": {
"command": "npx",
"args": ["-y", "whats-loaded-mcp"],
"env": { "WL_PROJECT_ROOT": "/path/to/the/project" }
}
}
}
```
## What it counts, and what it refuses to guess
Getting this wrong in the flattering direction would be easy, so the accounting is deliberately conservative:
- **Skill descriptions only.** `name` + `description` is what loads at startup. The body of a `SKILL.md` is fetched on demand and is **not** counted, even though it is 100× larger.
- **Enabled plugins only.** Skills belonging to disabled plugins sit on disk costing nothing, and are reported separately rather than folded into the total.
- **One version per plugin.** The plugin cache keeps several content-hash copies of the same plugin; only the live one is counted. Counting them all would inflate the total and invent duplicates you cannot act on.
- **`marketplaces/` is never counted.** That tree is a git checkout of marketplace *source*, not installed content.
## Honest limitations
- **Token counts are estimates** (~4 chars/token). Real counts depend on the tokenizer; prose runs lighter, code and CJK run denser. Treat the numbers as a ranking and a rough scale, not as billing. Anthropic's tokenizer is not public, so nothing local can do better than an estimate.
- **MCP tool definitions are not measured.** They can be a large share of your context, but measuring them means launching every server and enumerating its tools. This server does not launch anything, so it reports the server count and says so rather than guessing.
- **JSON configs only.** TOML-based clients (Codex `config.toml`) are not parsed.
- **Client-specific.** Built around the Claude Code layout (`~/.claude`). The MCP inventory reads Claude Desktop, Cursor, Windsurf and VS Code configs too, but skill accounting is Claude Code's model.
- **It reports; it does not edit.** Nothing is deleted, disabled or rewritten. Acting on the findings is your call.
## Design notes / threat model
This server's output goes straight into a model's context, so the interesting risk is not what it does to your machine — it is what it hands to the model.
- **No child processes. No network.** It only reads files. There is no `exec`, no shell, and no outbound connection anywhere in the codebase.
- **No model input ever becomes a path.** Every path is derived from `homedir()` or `cwd()`. The only model-controlled parameters are a clamped integer and a substring matched in memory against names already collected. Path traversal is not possible because there is no path construction to traverse.
- **Memory file contents are never read into the report.** `CLAUDE.md` routinely contains private operational detail. This server reports size and the import graph, never a line of content.
- **MCP environment values are never read.** Config files are where people leave API keys in plaintext. Only variable *names* are emitted — never values, not even masked.
- **Skill names and descriptions are emitted,** which is a deliberate exception: they are already in the model's context by definition, so reporting them discloses nothing new.
- Bounded work: depth-capped directory walks, symlink-loop protection via realpath, and a file size ceiling.
## Who makes this
Built by [Shift The Culture](https://shifttheculture.media/?utm_source=github&utm_medium=readme&utm_campaign=whats-loaded-mcp) — 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:
- [**whats-running-mcp**](https://github.com/stcmain/whats-running-mcp) — what is *actually* running on the box right now, instead of what an old transcript claims.
- [**whats-inherited-mcp**](https://github.com/stcmain/whats-inherited-mcp) — what a checkout you did not write tells your agent to do: instruction files, hooks, and the MCP servers it declares.
- [**whats-allowed-mcp**](https://github.com/stcmain/whats-allowed-mcp) — what your agent can do without asking you: merged permission rules, which settings file wins, and the rules your client accepts and then ignores.
The rest of that tooling is paid:
- **[Agent Fleet Ops Kit](https://stcai.gumroad.com/l/agent-fleet-ops-kit?wanted=true&utm_source=github&utm_medium=readme&utm_campaign=whats-loaded-mcp)** ($29) — the other failure modes of running three or four agents on one box: two sessions editing the same checkout, a dev server nobody owns (so the agent tests a different app than it edits), and MCP servers leaked from crashed sessions that hold ports and RAM for weeks.
- **[Agent Reliability Kit](https://stcai.gumroad.com/l/agent-reliability-kit?wanted=true&utm_source=github&utm_medium=readme&utm_campaign=whats-loaded-mcp)** ($29) — a Stop hook and two CLIs that block a turn when an agent claims "done" against a repo, URL, or build that was never actually checked.
The server above stays free and MIT either way — it has no upsell in it, no telemetry, and no dependency on the paid kits.
## Sponsors
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.
## License
MIT © Zachary Pampu
What people ask about whats-loaded-mcp
What is stcmain/whats-loaded-mcp?
+
stcmain/whats-loaded-mcp is mcp servers for the Claude AI ecosystem. Shows what consumes your agent's context window before the conversation starts — skill descriptions, memory files and their imports, configured MCP servers. Read-only, MIT. It has 0 GitHub stars and was last updated today.
How do I install whats-loaded-mcp?
+
You can install whats-loaded-mcp by cloning the repository (https://github.com/stcmain/whats-loaded-mcp) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is stcmain/whats-loaded-mcp safe to use?
+
stcmain/whats-loaded-mcp has not been audited yet by our security agent. Review the original repository on GitHub before using it in production.
Who maintains stcmain/whats-loaded-mcp?
+
stcmain/whats-loaded-mcp is maintained by stcmain. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to whats-loaded-mcp?
+
Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.
Deploy whats-loaded-mcp to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/stcmain-whats-loaded-mcp)<a href="https://claudewave.com/repo/stcmain-whats-loaded-mcp"><img src="https://claudewave.com/api/badge/stcmain-whats-loaded-mcp" alt="Featured on ClaudeWave: stcmain/whats-loaded-mcp" width="320" height="64" /></a>More MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
The fastest path to AI-powered full stack observability, even for lean teams.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!