trace-mcp
MCP server with 138 tools and cross-language framework awareness (58 integrations across 81 languages). Indexes Laravel/Inertia/Vue, Rails/Hotwire, Django/HTMX edges so agents skip re-deriving call graphs. Decision memory links architectural choices to the code they're about. Local-first ONNX embeddings, optional LSP enrichment.
trace-mcp sits in the same lane as Qartez - pre-index the codebase, hand the agent a structured graph instead of letting it grep - but it cuts the problem along a different axis. Where Qartez’s edge is structural (PageRank, blast radius, complexity), trace-mcp’s edge is framework-aware. It understands that Inertia::render('Users/Show', $data) connects a Laravel controller to resources/js/Pages/Users/Show.vue, and that $user->posts() means the posts table defined three migrations ago. Cross-language semantic edges are the headline feature.
The number to look at: 40-50% average token reduction on real workloads, up to 97% on individual structured tasks. The README also frames it as “one tool call replaces ~42 minutes of agent exploration” - that’s marketing copy, but the underlying mechanism (graph traversal in place of repeated file reads) is real.
The 138-tool surface
Big tool count, organised into a few clean categories:
- Code navigation -
get_project_map,get_task_context,get_change_impact,find_usages,apply_rename - Analysis -
get_request_flow,get_untested_symbols,get_call_graph,get_type_hierarchy - Search -
search,semantic_search,search_sessions - Decision memory -
query_decisions,mine_sessions - Subprojects -
get_subproject_graph,get_subproject_impact,get_subproject_clients - Planning -
benchmark_project,get_session_resume,plan_turn
get_request_flow and get_change_impact are the ones to lead with when you wire it up - they’re the queries that visibly change how an agent plans an edit.
Decision memory is the differentiated bit
Most code-intel MCPs stop at “graph of symbols.” trace-mcp also captures architectural decisions and links each one to the code it’s about - so when an agent asks for the impact of editing a file, the relevant historical “we did it this way because…” surface as part of the answer.
It’s not a chat log. Decisions have temporal validity (valid_from / valid_until), get auto-mined from session logs, and are queryable via query_decisions. Treat it like a code-linked changelog the agent reads automatically.
Install
npx trace-mcp benchmark . # try it on this repo first
npm install -g trace-mcp
trace-mcp init # configures your MCP client
trace-mcp add # indexes current project
trace-mcp init autodetects Claude Code, Cursor, Windsurf, and friends; you can also drop the MCP config block in by hand.
Frameworks and languages
81 languages parsed. The framework integrations - 58 of them - are where the money is:
- Backend - Laravel (Livewire, Nova, Filament), Django, FastAPI, Express, NestJS, Rails, Spring
- Frontend - Vue, React, Next.js, Nuxt
- ORMs - Eloquent, Prisma, TypeORM, Drizzle, SQLAlchemy, Mongoose, Sequelize
- Knowledge vaults - Obsidian, Logseq, Markdown with wikilinks/frontmatter
The cross-language edges are the part nobody else does well. If your stack is Laravel + Inertia + Vue, or Rails + Hotwire + Turbo, or Django + HTMX, this is probably the most useful piece of code intel you can put in front of an agent right now.
Semantic search defaults to local
ONNX embeddings ship in the package. No API keys, no outbound calls, semantic search just works after install. You can swap to Ollama (still local) or OpenAI via config if you want a bigger model.
Ranking combines PageRank, “Signal Fusion” (the README’s term for blending structural + embedding signals), and the embeddings themselves. Defaults are reasonable - tune later.
LSP enrichment is optional but worth it
Wire up tsserver, pyright, gopls, or rust-analyzer and trace-mcp gets compiler-grade resolution for call graphs and type hierarchies. The README calls it “4-tier resolution confidence” - unenriched parses still work, LSP-enriched ones are sharper.
When to reach for it
- You’re on a stack with cross-language framework conventions (Laravel/Inertia/Vue, Rails/Hotwire, Django/HTMX). Most code-intel tools ignore those edges; this one indexes them.
- Your agents waste tokens re-deriving call graphs and request flows on every session.
get_request_flowandget_change_impactare the high-leverage replacements. - You want a code-linked decision log without building one yourself.
When not to
- You’re on a niche stack outside the 58-framework list. Coverage is broad but uneven - the README is honest that PHP/TypeScript/Python/Go are best-supported and others trail.
- You want a global-knowledge MCP. trace-mcp is project-scoped; it won’t help with non-code workloads.
- You already run Qartez and the structural signals are what you actually need. trace-mcp’s value is in the framework edges and decision memory; if those don’t apply to your work, the overlap isn’t worth running both.
Trade-offs
The 138-tool surface is large. Some MCP clients get noisy with that many tools registered, and an agent that doesn’t know which tool to pick will burn context exploring options. The README’s claimed token savings assume the agent picks get_change_impact instead of opening files - if your harness biases towards file reads, you’ll see less of the gain.
Decision memory is only as good as your session history. On day one, query_decisions returns nothing useful; the value compounds with use, which is the right shape but worth flagging if you’re evaluating it on a fresh repo.
Local-first is the default and a feature, not a limitation. If you do flip to OpenAI embeddings for higher recall, the bundled ONNX model is still a sensible fallback for offline work.
Similar tools
- Qartez MCP
Rust MCP server that pre-indexes a codebase with PageRank, blast-radius, git co-change, and complexity signals. Agents query the graph instead of grepping files.
- Claudraband
Wraps the real Claude Code TUI with a session lifecycle layer. Resumable non-interactive workflows, HTTP daemon for remote/headless control, ACP server for editor integrations (Zed, Toad). Drives your existing Claude Code install rather than reimplementing it - keeps skills, hooks, MCPs, and approvals intact.
- mcptube
MCP server that turns YouTube videos into a persistent, merging wiki rather than ephemeral vector chunks. Scene-change frame extraction + vision analysis captures slides, code, and diagrams that transcripts miss. 25+ MCP tools, FTS5+LLM hybrid retrieval, version history with source attribution per claim.
- wanman
Multi-agent runtime that spawns each Claude Code or Codex agent in its own git worktree and home directory. JSON-RPC subprocess control, task pooling, artifact storage. Solves the share-a-directory failure mode that breaks most multi-agent harnesses.