Find logic worth reusing.
Search across services by words, called functions, or similarity to a draft. Get ranked candidates with reasons for matching.
spec_nav_find_functionsThe logic you need might already exist. Help your AI coding agent find it, understand it, and check what a change affects.
Tools to help your agent inspect the repository before committing to an implementation.
Search across services by words, called functions, or similarity to a draft. Get ranked candidates with reasons for matching.
spec_nav_find_functionsInspect a function’s implementation, signature, documentation, and relevant imports before deciding how to use it — up to 10 functions in one call.
spec_nav_read_functionInspect callers, dynamic uses, and unresolved references before changing a function’s signature or behavior.
spec_nav_callers“Before adding an order fee calculation, find existing implementations across services and read the best candidates.”
spec_nav_find_functions
{ "query": "calculate order fees", "limit": 20 }Then read the matching functions and check service boundaries before importing. Your coding agent decides what fits.
Explore all tools in the README ↗Follow one order-fee request from the user prompt to discovery, edits, tests, and delivery. Both agents follow the same rule.
Across billing, checkout, orders, invoicing and shipping: add an optional handling-fee waiver, change the central fee from 5 to 7, reuse existing total calculations instead of duplicating them, update affected callers, inspect all fee spellings, and verify ordinary and waived totals. Follow the same reuse-and-caller rules.
rg --files -g 'package.json' services/ packages/ \ && cat package.json services/*/package.json
spec_nav_services
{}Illustrative large-task walkthrough: 11 Grep/Read discovery calls and 9 spec-nav discovery calls shown, with the Grep side chaining several searches and reads in one Bash call, as real agents do. These are scripted counts, not recorded agent measurements. Edits, tests and pagination are extra. The measured Immich benchmark averages 146.9 vs 117.7 total calls per large session; it does not prove that a whole task finishes in a few calls or that MCP tool time is faster.
Use Node.js 18+, npm/npx, Git, and a local checkout of the repository you want to scan.
.mcp.json in your target repository.SPEC_NAV_ROOT with the absolute path to your codebase./mcp, and check that spec-nav is connected.{
"mcpServers": {
"spec-nav": {
"command": "npx",
"args": [
"-y",
"github:khoitd-voyager/mcp-spec-nav"
],
"env": {
"SPEC_NAV_ROOT": "/absolute/path/to/your-repo"
}
}
}
}Compare spec-nav with a Grep/Read/Edit baseline across code reuse, caller discovery, and change surveys.
Live run: Claude Code (Claude Sonnet 5.5) on 8 Grafana PRs, plain vs. a spec-nav setup that is not the MCP alone: MCP + instructions + a hook that forces spec-nav calls. Both passed every hidden test; quality differences were within noise and the forced setup cost about 58% more per session. The MCP alone has not been measured yet. The other benchmarks use deterministic agent policies with estimated token counts. Read the methodology and limitations before quoting results.
Read the live LLM report ↗immich@cc7fd67 · 10 large sessions · Recorded 2026-10-13
Mean tool execution time includes a fresh MCP server per session. It excludes model thinking time; this is not end-to-end LLM latency.
Deterministic agent policies, not live LLMs. Values are averages per session. Tokens are estimated at 3.5 characters/token. Large sessions combine 3 feature requests. Immich is one real repository; results are not universal.
Know the limits: search remains lexical; callers are type-checked in TS/JS/Vue/Svelte/Astro and evidence-based in other supported languages. Coverage can be incomplete. A simple edit in one file may benefit little.
Give your coding agent a place to look before it starts writing.