webnav-ts-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| WEBNAV_MCP_ROOTS | No | Comma-separated label=relative/path pairs to index separately, e.g. app=src,prototypes=design. Default is the whole workspace as one root, labelled web. | |
| WEBNAV_MCP_PUBLIC | No | Comma-separated workspace-relative stylesheets (files or directories) that are a public API, e.g. a design-token file consumed by other projects. diagnostics stops reporting their custom properties as "declared but never used" and their selectors as "never referenced"; undefined var() usages are still reported. Default is nothing. | |
| WEBNAV_MCP_EXCLUDE | No | Comma-separated workspace-relative paths of generated script output (e.g. the JS a TS build emits). Not opened, hidden from search_symbol, rejected by the position tools; the CSS/selector index still reads them. Default is nothing. | |
| WEBNAV_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. In Cursor, set to ${workspaceFolder} because Cursor may start MCP servers with your home directory as the working directory. |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| hoverB | Get type/documentation info for the symbol at a position.
|
| workspaceA | Which directory is webnav navigating, and why? Use when results look like they come from the wrong checkout/worktree. |
| definitionA | Go to the definition of the symbol at a position.
|
| referencesB | Find all usages of the symbol at a position across the workspace.
|
| search_symbolA | Search JS/TS files for a symbol by name (function, class, const, etc.). JS/TS-only: the HTML/CSS language servers don't implement useful workspace-wide symbol search (webnav does not reimplement it). Prefer |
| symbol_infoA | What is X and where is it used? Example: One-call summary for a JS/TS name: header, hover text, definition, and references grouped by file, the usual first lookup instead of chaining search_symbol → hover → definition → references by hand. Pass |
| callersA | Who calls this function? Example: Narrower than references, since it leaves out imports and type-only usages and only lists actual call sites, each with the calling function and its call-site lines. |
| implementationsA | Who implements or extends this? Example: For an interface or class, lists the classes that implement or extend it (transitively); for an interface or abstract method ( |
| outlineA | What's in this file? Example: Indented outline (functions, classes, interfaces, with |
| diagnosticsA | Get the relevant language server's diagnostics (errors/warnings) for a single file. For |
| css_varA | Where is this The CSS/HTML language servers only see one file at a time, so |
| selectorA | Who uses this Looks up the selector across the whole workspace. Cross-references CSS rule definitions, HTML |
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 12 tools
Most tools map to distinct navigation operations, and descriptions explicitly delineate boundaries (e.g. callers is 'narrower than references', symbol_info is a one-call bundle). The main risk is overlap between symbol_info and the chained search_symbol/hover/definition/references set, plus references vs callers vs implementations, but the descriptions steer selection clearly.
Names are uniformly lowercase, mostly bare LSP-style nouns (hover, definition, references, diagnostics, outline) with a few snake_case compound names (search_symbol, symbol_info, css_var). The style is predictable and readable despite not being a strict single verb_noun pattern.
Twelve tools is well within the ideal 3-15 range and each tool earns its place (a distinct LSP capability or a deliberate cross-file index feature). No obvious redundancy or padding.
Covers the core navigation lifecycle: diagnostics, hover, definition, references, outline, symbol search, callers, implementations, plus CSS custom-property and selector cross-referencing. Missing rename/refactor, code actions, and workspace symbol search for non-JS/TS languages (a limitation the descriptions acknowledge), which are minor workaroundable gaps.