A community-driven registry for Claude, Cursor, Windsurf, Cline & more. Not affiliated with Anthropic.
Are you the author? Sign in to claim
Local-first, AST-aware context compiler that sits between Claude Code and the filesystem as an MCP server. Built for Cla
The universal context compiler for AI coding agents. 97.75% token reduction, GPU embeddings, compact wire format. Free forever — no enterprise license required.
🌐 Live Website · 📦 npm · ⭐ GitHub
See LoomMCP compress a real-world codebase in seconds:
Watch LoomMCP in action
LoomMCP ships with a full observability dashboard at http://localhost:2337 — no extra setup required.

| Doc | What it covers |
|---|---|
| README.md | This file - overview and quick start |
| Dashboard | Live token savings, tool call tracking, session history |
| SETUP.md | Zero-to-indexed in three steps |
| SUPPORT.md | Full tool reference and workflows |
| AGENT_HOOKS.md | Agent hooks and enforcement |
| AGENT_HINTS.md | Best practices for agents |
| SPEC.md | Technical specification |
| LANGUAGE_SUPPORT.md | Supported languages |
| CONTEXT_PROVIDERS.md | Framework integrations |
| TROUBLESHOOTING.md | Common issues |
| docs/architecture.md | Internal design |
| CONTRIBUTING.md | Development guide |
Most AI agents explore repositories the expensive way:
open entire files → skim thousands of irrelevant lines → repeat.
That is not "a little inefficient." That is a token incinerator.
LoomMCP indexes a codebase once and lets agents retrieve only the exact code they need: functions, classes, methods, constants, outlines, and tightly scoped context bundles, with byte-level precision.
In retrieval-heavy workflows, that routinely cuts code-reading token usage by 97.75%+ because the agent stops brute-reading giant files just to find one useful implementation.
| Task | Traditional approach | With LoomMCP |
|---|---|---|
| Find a function | Open and scan large files | Search symbol → fetch exact implementation |
| Understand a module | Read broad file regions | Pull only relevant symbols |
| Explore repo structure | Traverse file after file | Query outlines and trees |
Index once. Query cheaply. Keep moving. Precision context beats brute-force context.
Retrieval decides what to send. LOOM decides how to pack it.
Every tool response can be emitted in a purpose-built compact wire format instead of verbose JSON. Path prefixes are interned to short handles, homogeneous lists of dicts pack into single-character-tagged CSV rows, and per-column types are preserved so the decode is lossless.
// Any tool call accepts format=
loom_get_symbol({ symbol: "get_user", format: "auto" })
// auto — emit compact if savings ≥ 15%, otherwise JSON
// compact — always compact
// json — never compact (back-compat)
Benchmark: 45.5% bytes saved across representative tools, peaks at 55.4% on graph and outline responses.
Encoding savings stack on top of retrieval savings — every byte off the wire is a byte the agent doesn't pay to read.
| Metric | jCodeMunch | LoomMCP |
|---|---|---|
| Token Reduction | 95% | 97.75% |
| Measured with | tiktoken cl100k_base | byte_approx (/4) |
| License | jCodeMunch | LoomMCP |
|---|---|---|
| Personal | FREE | FREE |
| Commercial | $79-1,999/yr | FREE |
| Enterprise | Contact sales | FREE |
No enterprise sales calls. No license management. Install and forget.
| Repository | Files | Baseline tokens | LoomMCP tokens | Reduction |
|---|---|---|---|---|
| loommcp (self) | 33 | 53,619 | 1,449 | 97.75% |
| medium_webapp | 12 | 13,272 | 266 | 98% |
| small_api | 5 | 4,052 | 92 | 98% |
Average: 97.75% token reduction
Run: npm run build && node eval/benchmark.js .
| Metric | Native (Glob+Grep+Read) | LoomMCP |
|---|---|---|
| Success rate | 72% | 80% |
| Timeout rate | 40% | 32% |
| Mean cost/query | $0.783 | $0.50 |
Find and fetch functions, classes, methods, constants, and more without opening entire files.
Inspect repository structure and file outlines before asking for source.
Send the model the code it needs, not 1,500 lines of collateral damage.
loom_find_importers — tells you what imports a fileloom_blast_radius — tells you what breaks if you change a symbol, with depth-weighted risk scores and source snippetsloom_get_class_hierarchy — traverses inheritance chainsloom_find_dead_code — finds symbols and files unreachable from any entry pointloom_get_hotspots — surfaces the riskiest code by combining complexity with git churnloom_get_dependency_cycles — detects circular importsloom_pagerank_centrality — ranks your codebase by architectural centralityThese are not "faster grep" — they are questions grep cannot answer at all.
loom_audit_agent_config scans your CLAUDE.md, .cursorrules, and other agent config files for:
loom_get_symbol_provenance is git archaeology:
loom_plan_refactoring generates exact edit-ready instructions for rename, move, and extract operations. Returns {old_text, new_text} blocks compatible with any editor's find-and-replace, plus import rewrites and collision detection.
loom_get_ranked_context assembles context within a token budget — stops when full, not when too much.
Most agents still inspect codebases like tourists trapped in an airport gift shop:
LoomMCP fixes that:
Agents do not need bigger and bigger context windows.
They need better aim.
| Language | Extensions | Parser |
|---|---|---|
| TypeScript | .ts, .tsx | tree-sitter-typescript |
| JavaScript | .js, .jsx | tree-sitter-javascript |
| Python | .py | tree-sitter-python |
| Go | .go | tree-sitter-go |
| Rust | .rs | tree-sitter-rust |
| Java | .java | tree-sitter-java |
| C# | .cs | tree-sitter-csharp |
| Ruby | .rb | tree-sitter-ruby |
| PHP | .php | tree-sitter-php |
| Swift | .swift | tree-sitter-swift |
| Kotlin | .kt, .kts | tree-sitter-kotlin |
| Dart | .dart | tree-sitter-dart |
| C | .c, .h | tree-sitter-c |
| C++ | .cpp, .cc, .hpp | tree-sitter-cpp |
| Bash | .sh, .bash | tree-sitter-bash |
# Install
npm install @loom-mcp/server
# Build
npm run build
# Start (stdio mode)
npm start
# Or start dashboard
LOOM_DASHBOARD_PORT=2337 npm start
claude mcp add loom npm @loom-mcp/server
claude mcp add loom npx @loom-mcp/server
LoomMCP ships with a full observability dashboard at http://localhost:2337 — no extra setup required.

The dashboard tracks every tool call, accumulates token savings across sessions, and gives you real-time visibility into what Claude is doing with your codebase.
| Panel | What it tracks |
|---|---|
| Token Savings | Baseline raw tokens vs TOON-compressed tokens — persisted to .loom/savings.json so numbers accumulate across restarts |
| Active Lens | Which files Claude currently has in focus, with line counts and focus budget percentage |
| Session Overview | Total tool calls this session, tokens saved, active lens count, session duration |
| Recent Activity | Last 20 tool calls with tool name, timestamp, and duration |
| Tokens per Turn | Line chart of raw vs compressed tokens per tool call (live from real data) |
| Live Events | SSE stream — every MCP tool call appears here in real time |
Get Topology — Shows the last AST skeleton Claude fetched. TOON output with file count, token estimate, and language breakdown.

Active Lens — Detailed view of focused files with lines, tokens, dependencies, and focus timestamps.

Settings — Configure workspace root, max depth, focus budget, auto-refresh, and theme. Reads from /api/settings.

Here's what happens in the dashboard when Claude diagnoses a login bug in a 40,000-token TypeScript codebase:
Step 1 — loom_get_topology("src/")
→ 16 files scanned, 54,932 raw tokens → 1,456 TOON tokens (97% reduction)
→ Dashboard: Files Indexed +16, Tokens Saved +53,476
Step 2 — loom_focus("src/auth.ts::loginUser")
→ 42 lines paged in (1,204 tokens). Rest of auth.ts stays out of context.
→ Dashboard: Active Lens 1/20, Focus Budget 5%
Step 3 — loom_search_refs("loginUser")
→ 14 call sites found across 8 files in 44ms
→ Dashboard: Events feed records loom_search_refs · 44ms
Step 4 — loom_get_active_diff()
→ Diff scoped to changed symbols only
→ Dashboard: Total session savings 40,616 tokens (66%)
The dashboard starts automatically when LoomMCP runs:
# Start MCP server (dashboard starts at :2337 automatically)
node dist/index.js
# Or via npm
npm start
Open http://localhost:2337 in your browser.
The dashboard is a static Next.js app served directly by the MCP server — no separate process needed. Token savings persist to .loom/savings.json between restarts.
| Endpoint | Returns |
|---|---|
GET /api/summary | Total calls, token savings (all-time + session), active lens count, tool breakdown |
GET /api/active-lens | Array of currently focused file paths |
GET /api/topology | Last loom_get_topology result |
GET /api/history | All tool calls (last 100) |
GET /api/sessions | Tool calls grouped into sessions by 30-min gaps |
GET /api/events | Categorized recent events |
GET /api/settings | Current workspace configuration |
GET /events | SSE stream — live tool-call events |
GET /health | Readiness probe {"status":"ok"} |
loom_get_topology — Skeletonize codebaseloom_index_folder — Index local folderloom_list_repos — List indexed reposloom_search_symbols — Symbol searchloom_bm25_search — BM25 rankingloom_fuzzy_search — Fuzzy matchingloom_search_text — Full-text searchloom_semantic_search — GPU embeddingsloom_get_symbol — Exact sourceloom_get_ranked_context — Token-budgeted contextloom_focus — Page in full implementationloom_find_importers — Reverse dependenciesloom_blast_radius — Change impactloom_find_dead_code — Unused codeloom_get_class_hierarchy — Inheritanceloom_pagerank_centrality — Importanceloom_get_hotspots — Risk areasloom_get_changed_symbols — Git diff mappingloom_get_dependency_cycles — Circular importsloom_remember — Cross-session memoryloom_watch_start/stop — Live watchingloom_audit_agent_config — Config hygieneloom_plan_refactoring — Refactor planningloom_get_metrics — Session statsloom_get_deps — Dependency graphloom_workspace_stats — SQLite stats| Feature | jCodeMunch | LoomMCP |
|---|---|---|
| Token reduction | 95% | 97.75% |
| Languages | 72 | 15+ |
| Tools | 40+ | 40+ |
| Compact format | 45% | 45% |
| GPU embeddings | Yes | Yes |
| SQLite workspace | SQLite | SQLite |
| Live watching | Yes | Yes |
| Price | $79-1,999/yr | FREE |
See CONTRIBUTING.md for development setup.
MIT — Free forever, no enterprise sales calls.
Help us compete with jCodeMunch (1.9k stars):
# If you believe in this project, share it!
Stop paying your model to read the whole damn file.
LoomMCP turns repo exploration into structured retrieval.
MCP server integration for DaVinci Resolve Studio
Run Claude Code as an MCP server so any agent can delegate coding tasks to it
Browser automation using accessibility snapshots instead of screenshots
A Jetbrains IDE IntelliJ plugin aimed to provide coding agents the ability to leverage intelliJ's indexing of the codeba