local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Integrates with Python language server (pyright) to provide code intelligence, including definitions, references, diagnostics, and code lens for Python codebases
Integrates with Rust language server (rust-analyzer) to provide code intelligence, including definitions, references, diagnostics, and code lens for Rust codebases
Integrates with TypeScript language server (tsserver) to provide code intelligence, including definitions, references, diagnostics, and code lens for TypeScript codebases
Servidor de idiomas MCP
Un servidor de Protocolo de Contexto de Modelo (MCP) que ejecuta un servidor de lenguaje y proporciona herramientas para comunicarse con él.
Motivación
El escritorio de Claude con el servidor de sistema de archivos se siente como magia al trabajar en proyectos pequeños. Esto empieza a fallar después de agregar algunos archivos e importaciones. Con este proyecto, quiero crear esa experiencia al trabajar con proyectos grandes.
Los servidores de lenguajes son excelentes en tareas con las que los LLM suelen tener dificultades, como la comprensión precisa de tipos y relaciones, y la provisión de referencias de símbolos precisas. Este proyecto busca incorporar estas herramientas a los LLM. LSP también parece una clara inspiración para MCP, así que ¿por qué no combinarlas?
Estado
⚠️ Calidad pre-beta ⚠️
He probado este servidor con los siguientes servidores de idiomas
- pyright (Python)
- servidor ts (TypeScript)
- gopls (Ir)
- analizador de óxido (Rust)
Pero debería ser compatible con muchos más.
Herramientas
read_definition
: recupera la definición completa del código fuente de cualquier símbolo (función, tipo, constante, etc.) de su base de código.find_references
: localiza todos los usos y referencias de un símbolo en todo el código base.get_diagnostics
: proporciona información de diagnóstico para un archivo específico, incluidas advertencias y errores.get_codelens
: recupera sugerencias de lentes de código para obtener contexto y acciones adicionales en su código.execute_codelens
: ejecuta una acción de lente de código.apply_text_edit
: permite realizar múltiples ediciones de texto en un archivo mediante programación.
Detrás de escena, este servidor MCP puede actuar sobre solicitudes workspace/applyEdit
del servidor de lenguaje, por lo que puede aplicar cosas como solicitudes de refactorización, agregar importaciones, formatear código, etc.
Cada herramienta ofrece varias opciones para personalizar la salida, como incluir números de línea o contexto adicional. Consulte la documentación de la herramienta para obtener información detallada sobre su uso. Los números de línea son necesarios para que apply_text_edit
pueda realizar ediciones precisas.
Acerca de
Este código base utiliza código editado de gopls para gestionar la comunicación LSP. Consulte ATRIBUCIÓN para obtener más información.
mcp-go se utiliza para la comunicación MCP.
Prerrequisitos
Instalar Go: siga las instrucciones en https://golang.org/doc/install
Obtener o actualizar este servidor:
Instale un servidor de idioma para su base de código:
- Python (pyright):
npm install -g pyright
- TypeScript (servidor ts):
npm install -g typescript typescript-language-server
- Ir (gopls):
go install golang.org/x/tools/gopls@latest
- Rust (analizador de óxido):
rustup component add rust-analyzer
- O utilice cualquier servidor de idioma
Configuración
Agregue algo como la siguiente configuración a la configuración de Claude Desktop (o cliente similar habilitado para MCP):
Reemplazar:
/Users/you/dev/yourcodebase
con la ruta absoluta a su proyecto/opt/homebrew/bin/pyright-langserver
con la ruta a su servidor de idioma (que se encontró usando el comandowhich
, por ejemplowhich pyright-langserver
)- Cualquier argumento después de
--
se envía como argumento a su servidor de idioma. - Todas las variables de entorno se pasan al servidor de idioma. Algunas pueden ser necesarias para el servidor. Por ejemplo,
gopls
requeríaGOPATH
yGOCACHE
para su correcto funcionamiento. LOG_LEVEL
es opcional. Véase más abajo.
Desarrollo
Clonar el repositorio:
Instalar dependencias de desarrollo:
Construir:
Ejecutar pruebas:
Actualizar instantáneas de prueba:
Configure su Claude Desktop (o similar) para utilizar el binario local:
Reconstruir después de realizar cambios.
Comentario
Incluir
Para obtener registros detallados de LSP y aplicaciones, configure LOG_LEVEL
como DEBUG para habilitar el registro detallado de todos los componentes. Al agregar LOG_COMPONENT_LEVELS
con wire:DEBUG
se muestran los mensajes JSON de LSP sin procesar. Incluya la mayor cantidad de información posible al abrir incidencias.
Las siguientes características están en mi radar:
- [x] Leer la definición
- [x] Obtener referencias
- [x] Aplicar edición
- [x] Obtener diagnósticos
- [x] Lente de código
- [ ] Información al pasar el cursor
- [ ] Acciones de código
- [ ] Mejor manejo del contexto y la cancelación
- [ ] Agregar opciones de configuración del servidor LSP y valores preestablecidos para idiomas comunes
- [ ] Crear una API más consistente y escalable para las herramientas (paginación, etc.)
- [ ] Cree herramientas a un nivel más alto de abstracción, combinando diagnósticos, lente de código, desplazamiento y acciones de código al leer definiciones o referencias.
This server cannot be installed
Ejecuta un servidor de idiomas y proporciona herramientas para comunicarse con él. Los servidores de idiomas son excelentes en tareas con las que los LLM suelen tener dificultades, como comprender con precisión los tipos, comprender las relaciones y proporcionar referencias de símbolos precisas.