lsp-backed symbol definition retrieval with full source context
Bridges MCP clients to language server textDocument/definition requests, returning complete source code definitions for any symbol in a workspace. Implements a stateful LSP client that maintains workspace context and file state, translating MCP tool calls into LSP protocol messages and parsing responses into structured definition objects with file paths, line/column positions, and full source text. Supports Go, Python, TypeScript, Rust, and other LSP-compliant languages through language-agnostic LSP client abstraction.
Unique: Acts as a transparent bridge to native language servers rather than reimplementing semantic analysis; leverages existing LSP infrastructure (gopls, rust-analyzer, pyright) to provide accurate, language-specific definition resolution without building custom parsers or type systems
vs alternatives: More accurate than regex-based or AST-only approaches because it uses the same type-aware analysis that IDEs rely on, and more efficient than sending code to cloud APIs because language servers run locally with full workspace context
cross-reference discovery with workspace-wide symbol tracking
Exposes LSP textDocument/references capability through MCP, enabling AI assistants to locate all usages and references of a symbol across an entire codebase. The LSP client maintains a workspace model synchronized via file watcher events, allowing the language server to build accurate reference indexes. Returns structured reference lists with file paths, line/column positions, and surrounding context for each occurrence.
Unique: Delegates reference indexing to language servers rather than building custom reference graphs; maintains workspace state through file watcher integration to ensure language servers have current file content for accurate reference resolution
vs alternatives: More accurate than grep-based search because it understands scope and binding rules; more efficient than re-parsing the entire codebase on each query because language servers maintain incremental indexes
real-time diagnostic aggregation from language servers
Aggregates textDocument/publishDiagnostics notifications from language servers and exposes them through MCP, providing AI assistants with real-time error, warning, and info-level diagnostics for any file. The LSP client subscribes to diagnostic notifications as files are opened or modified, maintaining a current diagnostic state that reflects the language server's analysis. Diagnostics include message text, severity level, line/column ranges, and diagnostic codes for rule-based filtering.
Unique: Passively subscribes to language server diagnostic notifications rather than polling; maintains a live diagnostic cache synchronized with file watcher events, enabling low-latency diagnostic queries without re-triggering analysis
vs alternatives: More comprehensive than linter-only approaches because language servers combine syntax checking, type checking, and semantic analysis; more efficient than running separate linters because it reuses the language server's existing analysis pipeline
workspace-aware symbol renaming with multi-file refactoring
Exposes LSP textDocument/rename capability through MCP, enabling AI assistants to rename symbols across an entire workspace with proper scope awareness. The LSP client translates rename requests into LSP protocol messages, and the language server computes all affected locations considering scope rules, shadowing, and language-specific binding semantics. Returns a workspace edit object containing all file modifications needed to complete the rename, which can be applied atomically via the apply_text_edit tool.
Unique: Delegates scope-aware rename logic to language servers rather than implementing custom symbol tracking; coordinates with apply_text_edit tool to enable atomic multi-file refactoring through MCP
vs alternatives: More reliable than find-and-replace because it understands scope and binding rules; safer than manual renaming because it considers all language-specific edge cases (shadowing, imports, exports)
type information and documentation hover retrieval
Exposes LSP textDocument/hover capability through MCP, providing AI assistants with type signatures, documentation, and contextual information for any symbol. The LSP client sends hover requests to the language server, which returns structured hover content including type information, docstrings, and markdown-formatted documentation. Enables AI assistants to understand symbol semantics without requiring full source code analysis.
Unique: Retrieves hover information directly from language servers rather than parsing docstrings or comments; provides type-aware context that reflects the language server's semantic understanding
vs alternatives: More accurate than comment-based documentation because it includes inferred type information; more efficient than full definition retrieval because it returns only the essential context needed for understanding a symbol
code lens hint retrieval and action execution
Exposes LSP textDocument/codeLens and codeLens/resolve capabilities through MCP, enabling AI assistants to retrieve code lens hints (e.g., test counts, reference counts, implementation counts) and execute code lens actions. The LSP client requests code lenses for a file, resolves them on demand, and executes the associated commands through the language server. Enables AI assistants to trigger language-server-provided actions like running tests or navigating to implementations.
Unique: Bridges MCP tool calls to LSP command execution, enabling AI assistants to trigger language-server-provided actions; maintains command context and handles asynchronous command execution
vs alternatives: More flexible than hardcoded actions because it supports any command the language server provides; more integrated than separate tool invocation because code lenses are context-aware and tied to specific code locations
batch text editing with workspace-wide file modifications
Implements workspace/applyEdit capability through MCP, enabling AI assistants to apply multiple text edits across multiple files atomically. The tool accepts a workspace edit object (containing file paths and text edit ranges/replacements) and applies all edits through the LSP client, which coordinates with the file system and workspace watcher. Supports inserting, replacing, and deleting text at precise line/column positions, with proper handling of line ending conventions and file encoding.
Unique: Coordinates text edits through the LSP client and workspace watcher, ensuring language servers are notified of changes and can update their indexes; supports precise line/column-based edits rather than regex-based replacements
vs alternatives: More reliable than direct file system writes because it coordinates with language servers and respects workspace configuration; more precise than regex-based find-and-replace because it uses exact line/column positions
workspace file change monitoring with language server synchronization
Implements a file system watcher that monitors workspace directory changes and synchronizes file state with connected language servers through LSP didOpen, didChange, and didClose notifications. The watcher uses OS-level file system events (inotify on Linux, FSEvents on macOS, etc.) to detect file creations, modifications, and deletions, and translates these into LSP protocol messages that keep language servers' workspace models current. Enables language servers to maintain accurate indexes and provide up-to-date analysis without manual file opening.
Unique: Uses OS-level file system events rather than polling, reducing latency and CPU overhead; maintains a workspace model that tracks open files and their content, enabling language servers to provide analysis without explicit file opening
vs alternatives: More efficient than polling-based file monitoring because it responds immediately to file system events; more reliable than manual file management because it automatically keeps language servers synchronized
+2 more capabilities