codenav-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CODENAV_MCP_WORKSPACE | No | Pins the project root (never overridden). Default: unset: follows the client's MCP roots when they name a worktree of the same git repository, else CLAUDE_PROJECT_DIR, else the working directory. | |
| CODENAV_MCP_SOURCE_ROOT | No | Directory scanned for `implementations` candidates and used to derive dotted import paths (e.g. `src`). Default: whole workspace. | |
| CODENAV_MCP_EXTRA_SOURCE_ROOTS | No | Comma-separated directories (e.g. `tests`) that `implementations` also scans; matches (test doubles) are listed under a separate heading. Default: none. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| workspaceA | Which directory is codenav navigating, and why? Use when results look like they come from the wrong checkout/worktree. |
| hoverB | Get type/documentation info for the symbol at a position.
|
| definitionA | Go to the definition of the symbol at a position.
Resolves through ty's type inference, so this works even when the call
site only has a typed parameter/attribute (e.g. |
| referencesB | Find all usages of the symbol at a position across the workspace.
|
| search_symbolA | Search the whole workspace for a symbol by name (class, function, method, etc.). Use this to find a symbol's file/position first, then pass that position
to definition/references/hover for precise, type-resolved navigation.
Returned positions point at the identifier name (not the |
| diagnosticsB | Get ty's type-check diagnostics (errors/warnings) for a single file. |
| symbol_infoA | What is X and where is it used? Example: One-call summary for a name: header, hover text, definition, and references grouped by file — the usual first lookup instead of chaining search_symbol → hover → definition → references by hand.
|
| outlineA | What's in this file? Example: Indented outline (classes, methods, functions, with line numbers) of a Python file, so you can navigate a large file without reading it in full. Follow up with hover/definition/references at a listed line, or symbol_info by name. |
| callersA | Who calls this function? Example: Narrower than references, since it leaves out imports and type-only usages and only lists actual call sites.
|
| implementationsA | Find concrete classes that structurally satisfy a Many hexagonal codebases define ports as |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
symbol_info explicitly overlaps with hover, definition, references, and search_symbol by providing a one-call summary, which could confuse an agent choosing between name-based and position-based lookups. However, the descriptions clearly delineate position-based precise navigation from name-based summary and distinguish callers from references. Overall mostly distinct with only minor intentional layering.
Most tools are lowercase snake_case nouns describing the returned information (workspace, diagnostics, hover, definition, references, outline, callers, implementations). search_symbol and symbol_info deviate slightly with verb_noun or noun_noun phrasing, but the set remains predictable and readable. Minor inconsistency, not chaotic.
Ten tools is well-scoped for a code navigation server, and each tool earns its place by covering a distinct navigation need. No tool appears redundant or extraneous at the count level.
The surface covers core navigation operations: symbol lookup, definition, references, hover, outline, callers, implementations, and file diagnostics. Minor gaps exist, such as no workspace-wide diagnostics, no callees (outgoing call hierarchy), or rename, but these are workaroundable and not central to navigation.