Metadata-Version: 2.4
Name: mseep-mcp-multilspy
Version: 0.1.0
Summary: MCP server that exposes Language Server Protocol functionality via multilspy
Author: Asim Ihsan
Requires-Python: >=3.12
Requires-Dist: mcp[cli]>=1.4.1
Requires-Dist: multilspy>=0.0.14
Description-Content-Type: text/markdown

# 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