MCP-MultilspyLSP

by asimihsan
Verified
# MCP-MultilspyLSP An MCP server that exposes Language Server Protocol (LSP) capabilities through multilspy. ## What is this? This project provides an [MCP (Model Context Protocol)](https://modelcontextprotocol.io/) server that gives language models access to language intelligence features from the Language Server Protocol (LSP). It uses [multilspy](https://github.com/microsoft/multilspy), a Python library that simplifies interfacing with various language servers. ## Features - **Language Intelligence**: Get code completions, find definitions, references, and more - **Multi-language Support**: Works with multiple programming languages including Python, Java, TypeScript, and more - **Easy Integration**: Works with any MCP-compatible client like Claude Desktop - **Static Analysis**: Leverage the power of language servers for code understanding ## Installation ```bash pip install mcp-multilspy ``` ## Usage Start the server directly: ```bash mcp-multilspy ``` Or install it in Claude Desktop: ```bash mcp install mcp-multilspy ``` ## Supported Languages - Java (Eclipse JDTLS) - Python (jedi-language-server) - Rust (Rust Analyzer) - C# (OmniSharp/RazorSharp) - TypeScript (TypeScriptLanguageServer) - JavaScript (TypeScriptLanguageServer) - Go (gopls) - Dart (Dart Language Server) - Ruby (Solargraph) ## Example Here's how to use this server with an MCP client: ```python # Initialize a TypeScript language server session session = await initialize_language_server( session_id="ts-session", project_root="/path/to/project", language="typescript" ) # Find where a symbol is defined definitions = await request_definition( session_id="ts-session", file_path="src/index.ts", line=10, # 0-indexed column=15 # 0-indexed ) # Find all references to a symbol references = await request_references( session_id="ts-session", file_path="src/index.ts", line=10, column=15 ) # Get code completion suggestions completions = await request_completions( session_id="ts-session", file_path="src/index.ts", line=10, column=15 ) # Get hover information hover_info = await request_hover( session_id="ts-session", file_path="src/index.ts", line=10, column=15 ) # Get document symbols symbols = await request_document_symbols( session_id="ts-session", file_path="src/index.ts" ) # Clean up when done await shutdown_language_server(session_id="ts-session") ``` ## Requirements - Python 3.12 or higher - Language-specific requirements: - For Java: JDK 17.0.6 or higher - For JavaScript/TypeScript: Node.js v18.16.0 or higher ## License MIT