transcend
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@transcend Find the definition of the 'createUser' function."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
transcend
Docs: ldippo.github.io/transcend-mcp · Suite: transcend-harness
A code-intelligence MCP server for coding agents: a cheap static map of a
repository (tree-sitter structural graph — clusters, hubs, budgeted subgraphs)
plus precise live navigation (real language servers via LSP), bridged by
stable symbol IDs. Every response is structured, token-budgeted, and anchored
to file:line — never a raw file dump.
Languages: Python (pyright) and TypeScript/JavaScript
(typescript-language-server). Adding a language = a tree-sitter grammar +
.scm queries + an LSP command — no core changes.
Install & run
npm install
npm run build
# optional but recommended — without them the server runs map-only:
npm install -g pyright typescript-language-server typescript
node dist/src/index.js --root /path/to/repo # stdio MCP server
node dist/src/index.js --root /path/to/repo --no-watchOn first run the server indexes the repo in the background (≈0.5s per 1k
files) and persists the index under <repo>/.transcend/ (add it to
.gitignore). A file watcher keeps the index fresh incrementally.
Related MCP server: AgentsBestFriend
Wire into a harness
Any MCP-over-stdio harness works. Claude Code:
claude mcp add transcend -- node /path/to/transcend/dist/src/index.js --root /path/to/repoGeneric MCP config:
{
"mcpServers": {
"transcend": {
"command": "node",
"args": ["/path/to/transcend/dist/src/index.js", "--root", "/path/to/repo"]
}
}
}Give the agent docs/AGENT_GUIDE.md — it documents the orient-with-map / confirm-with-LSP policy that the tool descriptions also encode.
Tool surface
Tool | Layer | Purpose |
| map | clusters + hub symbols; start here |
| map | fuzzy symbol lookup → node IDs |
| map | callers/callees/imports/inheritance around a node |
| map | shortest structural path between two symbols |
| map | index management + both layers' health |
| live | ground truth, always current |
| live | hover, file outline, workspace search |
| live | incoming/outgoing calls (capability-gated, with fallback) |
| bridge | node ID ⇄ verified live |
| meta | token savings so far (this session + cumulative) |
All tools accept tokenBudget (default 2000, max 10000) and return a uniform
envelope; see the agent guide.
Token savings
Every successful tool response is measured against the naive alternative —
reading in full every file the response points into — and the delta is
accumulated cumulatively in .transcend/metrics.json:
savings = baseline (full reads of referenced files) − actual (emitted tokens)Baseline is an upper bound (an agent might not read whole files). View it three
ways: the metrics_report tool (live, mid-session), a one-line stderr summary
on shutdown, or the CLI report:
node dist/src/index.js report --root /path/to/repo # per-tool table + total
node dist/src/index.js report --root /path/to/repo --json # raw JSONDevelopment
npm test # unit + integration (LSP tests auto-skip if servers absent)
npm run smoke # build + scripted MCP client against the TS fixture
npx @modelcontextprotocol/inspector node dist/src/index.js --root test/fixtures/ts-miniArchitecture notes: docs/ARCHITECTURE.md.
No telemetry. No network calls. Secrets are never read; configuration is CLI flags only.
Available Tools
14 toolsmap_neighborsA
Explore the static relationship graph around one node: callers/callees, imports, inheritance, containment. Call this BEFORE nav_references when you want the shape of the dependency fan-in/out cheaply — it is instant and token-budgeted, while nav_references invokes the language server. Edges come from static analysis: resolved:false edges are name-match guesses, and any edge can be stale or miss dynamic dispatch. Once you've picked the edges that matter, verify with nav_references or nav_callHierarchy at the location from resolve(nodeId).
Inputs: nodeId (required), depth, maxNodes, direction, +2 more.
map_overviewA
START HERE for any unfamiliar codebase or feature area. Returns a cheap, token-budgeted structural summary (clusters of related files, hub symbols with node IDs) from a pre-built static index — no language-server cost, milliseconds even on large repos. Use the returned node IDs with map_neighbors to explore relationships and with resolve to jump to exact live locations. The index may lag recent edits: before editing or relying on a specific line number, confirm with resolve or nav_definition, which query the live language server.
Inputs: focus, tokenBudget, hubsPerCluster.
map_pathA
Shortest structural path between two symbols in the static map (over imports/calls/inheritance/containment). Useful to understand how two areas connect before reading code. Static and possibly stale — confirm the load-bearing hops with nav_references.
Inputs: to (required), from (required), maxLen, tokenBudget, +1 more.
map_rebuildA
Rebuild the static map index (incremental: only changed files are re-parsed). Long-running on first build of a large repo. Not needed for nav_* correctness — those are always live. Use when map responses flag staleness or after large refactors.
Inputs: scope.
map_searchA
Fuzzy symbol lookup over the static map — the cheap way to find candidate symbols by name when you don't have a location yet. Returns node IDs usable with map_neighbors and resolve. Name-based and possibly stale; for ground truth use nav_workspaceSymbols, which queries the live language server.
Inputs: query (required), kind, limit, tokenBudget.
map_statusA
Health and freshness of both layers: map age, file/symbol/edge counts, stale files, watcher state, and per-language LSP availability. Cheap; call when results look off or to check whether a language server is installed.
Inputs: no named parameters.
resolveA
The bridge between the static map and the live language server — call it whenever you switch layers. Given a map nodeId, returns the verified current file:line:col plus live symbol info, with mapStale:true if the indexed location has drifted (the live location is authoritative). Given a file:line:col, returns the enclosing symbol chain and the matching map nodeId (inMap:false with the nearest container if the map hasn't caught up). Use before nav_* calls that need exact positions, and after nav_* results to re-enter the map graph.
Inputs: col, file, line, nodeId, +1 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 14 tools
Each tool has a distinct purpose with clear boundaries between static map exploration (map_*) and live language server queries (nav_*). The descriptions explicitly guide when to use each, preventing confusion.
Tools follow a consistent pattern: map_+verb for static operations and nav_+noun/verb for live queries. The 'resolve' tool is a well-justified exception serving as a bridge between layers.
With 14 tools, the server covers both cheap static analysis and expensive but accurate live queries without unnecessary overlap. The number is well-scoped for comprehensive code navigation.
The tool set covers all common navigation tasks: structural overview, search, path finding, call hierarchy, definitions, references, implementations, symbols, type information, and handles staleness. No obvious gaps exist.
Related MCP Connectors
Shared memory MCP server for Claude Code, Codex, Gemini CLI and Cursor. Cited, editable.
Team memory for AI coding agents and code reviews, reviewed by humans and served over MCP.
An MCP server that gives your AI access to the source code and docs of all public github repos
Code intelligence for coding agents: semantic, AST, graph, and full-text search. 279+ languages.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for semantic codebase navigation that builds an AST index of symbols, imports, and exports, providing AI agents with tools to search, explore, and understand code.MIT
- FlicenseNot gradedqualityDmaintenanceGive your AI coding agents superpowers — a local MCP server for fast, token-efficient code navigation, search & analysis.-
- AlicenseNot gradedqualityBmaintenanceA persistent code-intelligence MCP server that builds a queryable knowledge graph of your codebase, enabling AI assistants to perform cross-file structural reasoning, dependency analysis, and blast radius detection.9MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that gives AI coding agents codebase navigation intelligence, enabling symbol lookup, reference finding, type inspection, and diagnostics through tools like locate, refs, hover, diagnostics, status, and rename.548 npmMIT