Releases: James-Chahwan/repo-graph
Release list
v0.4.20 — 13 tools → 6
The tool surface collapses from 13 → 6
Every tool is now a natural verb backed by a Rust engine primitive (glia 0.4.18), so each call returns a complete, ranked, located answer in one shot — instead of the agent composing a dozen low-level lookups.
The 6 tools
orient— repo overview, entry points, and a blind-spots note (which languages/edges the graph under-links, so you know when to grep). (← status + dense_text + graph_view)find— any text → the ranked nodes that matter: a symbol, keyword, stacktrace, failing test, or diff.expand=truefans out to the neighbourhood. (← find + locate + activate)impact— blast radius: what a change affects or depends on, ranked and located, with likely-dead code flagged⊘. (← impact + neighbours)trace— a feature end-to-end across the stack, or the shortest path between two nodes. (← flow + trace)read— a node's exact source, plus who calls it and what tests it.refresh— rebuild the graph (incremental; self-updates as you edit).
Why fewer tools
The MCP layer is a fixed per-turn cost. Fewer, more powerful tools mean less overhead and less agent confusion — while the engine does the ranking, locating, and dead-code detection.
Also new
- Liveness (
⊘) andpath:linenow come from the engine, not a wrapper heuristic. - README: "Where it fits best" (monorepos, polyrepo, large/legacy codebases — grep wins on small single-language repos) and "Use it without MCP" (call
repo-graph-pydirectly, no per-turn MCP cost).
Requires repo-graph-py>=0.4.18. Wrapper-only release; engine unchanged.
Install: uvx mcp-repo-graph install
v0.4.19
What's new
Two new tools (11 → 13):
locate— paste a stacktrace, failing-test id, or diff and get the most relevant nodes back, ranked. The debugging on-ramp: start from the error, not a filename.read— return a node's exact source, sliced from its file by the graph's line span. No grep, no scrolling.
Richer existing tools:
impacttakes multiple comma-separated nodes — whole-diff blast radius in one call.activategains edge-weightprofiles (repair/review/onboard).activate/impact/locategainmode=prose— ranked subgraph as primed prose for LLM context.dense_textgainsseed=for a scoped map of one feature's neighbourhood, plus abudgetchar cap across the read tools.
Performance:
- Incremental parse cache —
generate/reloadre-parse only changed files (engine 0.4.16).
Install
uvx mcp-repo-graph --repo .
Works with any MCP client — Claude Code/Desktop, Cursor, VS Code, Codex, Gemini CLI, Antigravity, Windsurf. 20 languages, frontend-to-backend cross-stack. https://repo-graph.com
v0.4.18
What's new
generateaccepts git URLs — pass a remote likehttps://github.com/owner/repo.gitand repo-graph clones it on demand before scanning. Previously this failed with "not a directory". Local paths work as before.- Docs: corrected the tool count (11 MCP tools across 4 tiers).
Install
uvx mcp-repo-graph --repo .
Or pin: pip install mcp-repo-graph==0.4.18
Works with any MCP client — Claude Code/Desktop, Cursor, VS Code, Codex, Gemini CLI, Antigravity, Windsurf. 20 languages, frontend-to-backend cross-stack. https://repo-graph.com
v0.4.17 — Claude submission readiness
Submission-ready + polish
- Tool annotations on all 11 tools (
title+readOnlyHint) — required for Claude Desktop/plugin submission. - Privacy Policy (PRIVACY.md + README) — local-first; discloses the only two user-initiated network egresses (PyPI install fetch,
git cloneon a--repoURL). - dense_text cap (configurable via
REPO_GRAPH_DENSE_MAX_CHARS, default 50k, 0=uncapped) so large monorepos can't blow past client tool-result limits. - Ships Claude plugin + MCPB bundles and a VS Code extension (zero-config
--repo ${workspaceFolder}).
v0.4.16 — install + discoverability
Install fix + discoverability
- uvx-runnable:
uvx mcp-repo-graphnow resolves — added themcp-repo-graphconsole script. Fixes one-click installs on the VS Code MCP gallery, Cursor, and the MCP registry (which all runuvx <package>). - server.json launch spec:
runtimeHint: uvx,--repoargument,REPO_GRAPH_REPOenv — so clients can build a working launch command. --repoaccepts a git URL:uvx mcp-repo-graph --repo https://github.com/org/reposhallow-clones and maps any public repo; also makes the hosted 'Try in Browser' path usable.- Cross-platform engine wheels:
repo-graph-pynow builds for Linux (x86_64/aarch64), macOS (Intel/Apple Silicon), and Windows via CI. - glama.json + CI test workflow; docs refreshed.
v0.4.13 — cache reuse + release-gate tests
What's new
Cold-start cache reuse — the wrapper now caches the graph at <repo>/.ai/repo-graph/ between server restarts. On a 22k-node repo, cold start drops from ~2.8s to ~257ms (≈11× faster through the wrapper). Requires engine repo-graph-py>=0.4.14.
Release-gate test framework — 52 tests across five layers, all green before any future publish:
| Layer | Tests | What it covers |
|---|---|---|
test_mcp_e2e.py |
14 | Spawns repo-graph subprocess, drives MCP/JSON-RPC over stdio, asserts content-block shapes |
test_mcp_tools.py |
22 | In-process @mcp.tool function calls + 11-tool surface lock |
test_cache.py |
5 | .gmap cache roundtrip: cold write, warm read, source-change invalidation |
test_init.py |
5 | repo-graph-init bootstrap CLI: idempotency, preserves existing config |
test_perf.py |
6 | generate / dense_text / activate perf budgets, opt-in via -m perf |
pip install -e ".[dev]"
pytest # all five layers
pytest -m e2e # MCP wire only
pytest -m "not e2e" # fast loop, skip subprocess spin-upOther
- CLAUDE.md tool list corrected: 11 tools across 4 tiers (the phantom
cost,hotspots,minimal_read,bloat_report,split_planreferences are gone) - Surface-lock test (
test_eleven_tools_decorated) fails fast ifserver.pyand CLAUDE.md ever drift - Dead
tests/test_py_smoke.pyremoved (imported modules that no longer exist post-v0.4.10c clean break)
Install
```bash
pip install mcp-repo-graph
```
The engine wheel (repo-graph-py 0.4.14) is fetched automatically from PyPI.
Full changelog
3bad3e5...v0.4.12
v0.4.12
First PyPI cut of the Rust engine.
Highlights
- Rust engine on PyPI. The tree-sitter-based parser/graph/store stack now ships as
repo-graph-py(Linux x86_64, abi3 Python 3.11+).mcp-repo-graphis a thin Python MCP wrapper over it. - 20 languages — Go, Rust, TypeScript, React, Angular, Vue, Python, Java/Kotlin, Scala, Clojure, C#/.NET, Ruby, PHP, Swift, C/C++, Dart, Elixir, Solidity, Terraform, SCSS.
- Cross-stack HTTP linking — frontend
fetch/axioscalls automatically link to backend routes across languages. - Stack resolvers — HTTP, gRPC, GraphQL, queues, WebSocket, event bus, CLI — link entities across repos/services.
- 13 MCP tools — generation, navigation, context budgeting, health analysis, visual maps.
.gmapformat — zero-copy rkyv + mmap store, sharded by kind.- Personalised PageRank activation — spread relevance across the graph with domain-provided direction/weights.
Install
pip install mcp-repo-graphRequires Python 3.11+ on Linux x86_64 (glibc ≥2.34). Full platform matrix via GitHub Actions coming in v0.4.13.
Release artifacts
- PyPI: https://pypi.org/project/mcp-repo-graph/0.4.12/
- PyPI: https://pypi.org/project/repo-graph-py/0.4.12/
- MCP Registry:
io.github.James-Chahwan/repo-graph@0.4.12
What's next
- v0.4.13 — maturin GitHub Actions wheel matrix (linux aarch64, macOS x86_64/arm64, windows), latent-vector hook, SWE-bench Lite run.
- Post-v0.4.12 — Rust engine splits into its own
gliarepo;mcp-repo-graphstays as the MCP wrapper.
v0.2.0
What's new
🗺️ Flow primitives
- Flow kind field — flows tagged
http/page/cli/grpc/queue, rendered instatus,flow,graph_view - Confidence tiers — nodes get
strong/medium/weakwith icons ● / · / ⚠. Routes with resolved handlers upgrade; test/example/fixture paths downgrade. - Entrypoint types — auto-flow generation now seeds uniformly from
route,cli_command,grpc_method,queue_consumer
🆕 New analyzers
- CLI entrypoints — Python click, JS commander/yargs, Go cobra, Rust clap
- gRPC —
.protoservice/rpc parsing →grpc_service+grpc_methodnodes withhandled_byedges - Queue consumers — Celery, Dramatiq, BullMQ, Sidekiq, Oban, NATS (with variable-subject fallback)
- Data sources — cross-cutting DB/cache/queue/blob/search/email client detection
- 7 new language analyzers: Scala, Clojure, Vue, Dart/Flutter, Elixir, Solidity, Terraform (now supports 20 languages total)
🧪 Test → code edges
test_filenodes +testsedges for 15 languages via two-factor detection (filename pattern + framework import/signal)- Languages: Python, JS/TS, Go, Ruby, Java, Kotlin, Scala, Clojure, C#, PHP, Swift, C/C++, Dart, Elixir, Rust
⚙️ Config escape hatch
.ai/repo-graph/config.yamlwithskip:/roots:keys- Additive only — config unions with heuristics, never replaces them
- Zero-dep YAML parser
✨ Claude Code skills bundle
/repo-graph-init,/repo-graph-trace,/repo-graph-flow,/repo-graph-impact,/repo-graph-visualiseshipped inskills/
🔧 Internals
FileIndex— single shared repo walk across all 20 analyzers_resolve_file_edgesrewrites bothfromandtoanchors (fixes CLIhandled_byedges)- Centralised scoring in
generator._score_confidence - Tightened cross-cutting
detect()prefilters (no more false positives from bare-word matches)
📊 Validation
52 external repos · 0 failures · 59,760 nodes · 71,761 edges · 899 flows · 5,871 test_files · 18,672 tests edges · 0.3% file-anchor drop rate
v0.1.3
Changes
- Improved all 13 tool definitions for better LLM discoverability
- Added behavior disclosure (read-only / writes-to-disk)
- Added parameter descriptions with examples on every parameter
- Added usage guidelines (when to call each tool)
- Documented return formats
- Added Glama card badge to README
- Fixed graph_view flow matching to prefer shortest key (same fix as flow tool)
v0.1.2
Init command, cross-stack linking, Go handler resolution, flow matching fix. See README for demo comparison.