Universal LSP MCP server that bridges Language Server Protocol servers to the Model Context Protocol
LSP MCP server has 13 tools with complete input schemas and descriptions. Naming follows verb_noun convention (lsp_definition, lsp_references, etc.), which is good. However, descriptions are inconsistent in depth, some are terse (e.g., 'Find definitions' at 17 chars, below the 20-char floor), while others are detailed (lsp_init at 156 chars). Parameter descriptions are present but minimal. Output schemas are not documented in the visible code. Error handling is absent from tool definitions. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classification (READ_ONLY vs WRITE). The server lacks pagination guidance for tools returning lists (lsp_references, lsp_workspace_symbols). Overall, definitions are functional but lack LLM-optimization depth.
List or apply code actions
Find definitions
Get errors and warnings. Pass a file path to trigger analysis of that file and its language server, then return diagnostics for that file (scope: file) or all files seen so far (scope: workspace). Omit file for workspace scope to query whatever has been opened previously.
List document symbols
Format document
Show LSP server health
Find implementations
Terse descriptions on 4 tools (lsp_definition, lsp_type_definition, lsp_implementation, lsp_health) are under 20 characters, violating the minimum threshold for LLM comprehension. 'Find definitions' (17 chars) does not explain when to use this tool vs lsp_references or lsp_type_definition.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite explicit risk classification in metadata. WRITE tools (lsp_rename, lsp_code_action, lsp_formatting) should declare destructiveHint=true; READ_ONLY tools should declare readOnlyHint=true. This prevents accidental misuse by agents.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | <=2025-11-25 | v2 |
Initialize LSP for a project root. Pass languages to pre-warm specific servers; omit to auto-detect from project files (lazy startup per file if none found).
Format selected range
Find references
Rename symbol
Find type definitions
Search workspace symbols
Output schemas are not documented. Tools returning lists (lsp_references, lsp_workspace_symbols, lsp_document_symbols, lsp_diagnostics) do not specify pagination limits, result structure, or field names. LLMs cannot plan downstream calls without knowing what fields are returned.
No error handling guidance in tool definitions. Tools that call external LSP servers (lsp_definition, lsp_references, etc.) can timeout or fail, but descriptions do not explain recovery steps or retryability. Agents have no guidance on what to do if a call fails.
Parameter descriptions are minimal or missing context. 'file' appears in 11 tools but is never described as 'absolute path' vs 'relative path' vs 'URI'. 'line' and 'character' lack explanation of 0-based vs 1-based indexing. Agents cannot reliably construct valid calls without this detail.