Skip to content

Releases: James-Chahwan/repo-graph

v0.4.20 — 13 tools → 6

Choose a tag to compare

@James-Chahwan James-Chahwan released this 08 Jul 13:57

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=true fans 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 () and path:line now 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-py directly, 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

Choose a tag to compare

@James-Chahwan James-Chahwan released this 08 Jun 17:07

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:

  • impact takes multiple comma-separated nodes — whole-diff blast radius in one call.
  • activate gains edge-weight profiles (repair / review / onboard).
  • activate / impact / locate gain mode=prose — ranked subgraph as primed prose for LLM context.
  • dense_text gains seed= for a scoped map of one feature's neighbourhood, plus a budget char cap across the read tools.

Performance:

  • Incremental parse cache — generate / reload re-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

Choose a tag to compare

@James-Chahwan James-Chahwan released this 08 Jun 14:45

What's new

  • generate accepts git URLs — pass a remote like https://github.com/owner/repo.git and 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

Choose a tag to compare

@James-Chahwan James-Chahwan released this 05 Jun 16:58

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 clone on a --repo URL).
  • 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

Choose a tag to compare

@James-Chahwan James-Chahwan released this 05 Jun 14:41

Install fix + discoverability

  • uvx-runnable: uvx mcp-repo-graph now resolves — added the mcp-repo-graph console script. Fixes one-click installs on the VS Code MCP gallery, Cursor, and the MCP registry (which all run uvx <package>).
  • server.json launch spec: runtimeHint: uvx, --repo argument, REPO_GRAPH_REPO env — so clients can build a working launch command.
  • --repo accepts a git URL: uvx mcp-repo-graph --repo https://github.com/org/repo shallow-clones and maps any public repo; also makes the hosted 'Try in Browser' path usable.
  • Cross-platform engine wheels: repo-graph-py now 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

Choose a tag to compare

@James-Chahwan James-Chahwan released this 22 May 17:29

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-up

Other

  • CLAUDE.md tool list corrected: 11 tools across 4 tiers (the phantom cost, hotspots, minimal_read, bloat_report, split_plan references are gone)
  • Surface-lock test (test_eleven_tools_decorated) fails fast if server.py and CLAUDE.md ever drift
  • Dead tests/test_py_smoke.py removed (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

Choose a tag to compare

@James-Chahwan James-Chahwan released this 18 Apr 13:42

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-graph is 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/axios calls 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.
  • .gmap format — 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-graph

Requires Python 3.11+ on Linux x86_64 (glibc ≥2.34). Full platform matrix via GitHub Actions coming in v0.4.13.

Release artifacts

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 glia repo; mcp-repo-graph stays as the MCP wrapper.

v0.2.0

Choose a tag to compare

@James-Chahwan James-Chahwan released this 16 Apr 05:05

What's new

🗺️ Flow primitives

  • Flow kind field — flows tagged http / page / cli / grpc / queue, rendered in status, flow, graph_view
  • Confidence tiers — nodes get strong / medium / weak with 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.proto service/rpc parsing → grpc_service + grpc_method nodes with handled_by edges
  • 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_file nodes + tests edges 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.yaml with skip: / 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-visualise shipped in skills/

🔧 Internals

  • FileIndex — single shared repo walk across all 20 analyzers
  • _resolve_file_edges rewrites both from and to anchors (fixes CLI handled_by edges)
  • 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

Choose a tag to compare

@James-Chahwan James-Chahwan released this 14 Apr 04:26

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

Choose a tag to compare

@James-Chahwan James-Chahwan released this 13 Apr 12:27

Init command, cross-stack linking, Go handler resolution, flow matching fix. See README for demo comparison.