LSP MCP Server for VS Code - A broker-based MCP server that exposes VS Code's Language Server Protocol (LSP) capabilities and workspace operations through MCP tools, supporting multi-instance routing and workspace resource management.
LSP MCP demonstrates solid definition quality with well-structured schemas and comprehensive descriptions. All four tools have explicit registrations with descriptions and input schemas visible in src/broker/tools.ts. The execute_lsp tool is particularly well-documented with detailed parameter descriptions addressing positional operations, transaction IDs, and safety requirements. However, some parameter descriptions contain example values (e.g., 'quickfix or source.fixAll'), and output schemas are not formally documented. Tool naming follows verb_noun convention appropriately. The rename_resource tool correctly marks IRREVERSIBLE operations, showing security awareness.
Execute LSP Operation. Executes Language Server Protocol operations (navigation, symbols, diagnostics, code actions, rename, call hierarchy) on files within VS Code workspaces. Position-based operations require 1-based line and character indices; transaction-based operations (rename, code actions) require IDs from preview operations. Ensures safety through intent descriptions and explicit parameter requirements. Pass instanceId when multiple VS Code instances cover the same project.
Report the global VS Code LSP MCP broker status.
List active VS Code workspace instances. Use instanceId to select one explicitly.
Rename Workspace Resource. Rename a file or directory inside the selected VS Code workspace. Both paths must remain inside its workspace roots. Language extensions may update affected references. Changes are written immediately to disk.
Output schemas not documented. Tools return JSON responses (e.g., { status: 'ok' }, { instances: [...] }) but the LLM has no formal schema describing the structure, field types, or expected fields for downstream tool composition.
Example values embedded in parameter descriptions (e.g., 'quickfix or source.fixAll', 'red, blue, green'). LLMs latch onto examples and may reuse them literally rather than adapting to context. Should use enum constraints or formal patterns instead.
No pagination or result limiting documented for execute_lsp operations that may return large result sets (e.g., workspace_symbols, references, diagnostics). If result sets exceed token budgets, context will degrade.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | A | 80 | <=2025-11-25 | v2 |
| 2026-03-09 | C | 67 | - | v1 |
Error handling guidance missing. Tools do not document what errors may occur, how to recover, or what the LLM should do if instanceId resolution fails or LSP operations timeout (30s timeout observed in code but not documented).
Parameter dependency documentation incomplete. execute_lsp has complex conditional requirements (e.g., 'line' and 'character' required only for position-based operations, 'renameId' required only for rename_apply). While mentioned, the conditions are not systematically documented per operation enum value.