| name | lsp-local-symbols |
| description | Fast file-scoped symbol analysis — find all usages of a symbol within the current file, list all symbols defined in the file, and get type info at a position. Use when you need local-scope analysis without a workspace-wide search. |
| argument-hint | [symbol-name] in [file-path] |
| user-invocable | true |
| allowed-tools | mcp__lsp__open_document mcp__lsp__list_symbols mcp__lsp__inspect_symbol mcp__lsp__get_document_highlights |
| license | MIT |
| compatibility | Requires the agent-lsp MCP server (github.com/blackwell-systems/agent-lsp) |
| metadata | {"required-capabilities":"documentSymbolProvider","optional-capabilities":"documentHighlightProvider hoverProvider"} |
Requires the agent-lsp MCP server.
lsp-local-symbols
File-scoped symbol analysis using the language server index. Faster than
workspace-wide search for questions about a single file: what symbols are
defined here, where is this symbol used within the file, and what type does it
have.
Read-only — does not modify any files.
When to use
- "Where is
x used in this file?" — use get_document_highlights
- "What functions and types are defined in this file?" — use
list_symbols
- "What type does this symbol have?" — use
inspect_symbol
- Reviewing a file before editing — get the full symbol map first
- Local refactor scoping — confirm a symbol is only used in one place before inlining it
Use /lsp-impact instead when you need workspace-wide callers and cross-file
references. Use /lsp-dead-code when auditing exported symbols for zero callers.
When NOT to use
get_document_highlights is file-scoped by design — it only finds usages within
the open file. If a symbol is used across multiple files, this skill will not
find those. Use find_references (via /lsp-impact) for cross-file analysis.
Workflow
Step 1 — Open the file
Open the file so the language server tracks it:
mcp__lsp__open_document
file_path: "/abs/path/to/file.go"
language_id: "go" # go, typescript, python, rust, etc.
Step 2 — List all symbols in the file
Get the full symbol tree for the file:
mcp__lsp__list_symbols
file_path: "/abs/path/to/file.go"
This returns all functions, types, variables, constants, and methods defined in
the file — including nested symbols (methods on types, fields in structs).
Use this to:
- Understand the file's structure before editing
- Find the exact position of a named symbol
- See what a file exposes before reading it in full
Reading the output: Each symbol has a range (full body including braces)
and a selectionRange (just the name). Coordinates are 1-based. Use
selectionRange.start.line and selectionRange.start.character as inputs to
get_document_highlights and inspect_symbol.