TypeScript MCP

Un servidor especializado en TypeScript que ofrece capacidades avanzadas de manipulación y análisis de código.

Documentación

lsmcp - Servidor MCP de Protocolo de Servicio de Lenguaje

CI Language Server Tests npm version License: MIT

Un servidor MCP (Protocolo de Contexto de Modelo) unificado que proporciona capacidades avanzadas de manipulación y análisis de código para múltiples lenguajes de programación mediante la integración del Protocolo de Servicio de Lenguaje.

  • 🌍 Soporte Multi-Lenguaje
  • 🔍 Análisis Semántico de Código
  • 🤖 Optimizado para IA

Consulta examples/ para ver ejemplos funcionales de cada configuración de lenguaje soportada.

Requisitos

  • Node.js 22.0.0 o superior (requerido para soporte SQLite integrado)

Inicio Rápido

# tsgo (reccommended)
npm add -D @mizchi/lsmcp @typescript/native-preview
npx @mizchi/lsmcp init -p tsgo
claude mcp add lsmcp npx -- -y @mizchi/lsmcp -p tsgo

# with manual --bin
claude mcp add lsmcp npx -- -y @mizchi/lsmcp --bin="<lsp-command>"
📖 Ejemplo de Uso con Claude

FLUJO DE TRABAJO RECOMENDADO

🎯 Flujo Principal: Vista General → Búsqueda → Detalles

1. get_project_overview     # Understand the codebase
2. search_symbols           # Find what you need  
3. get_symbol_details       # Deep dive into symbols

📋 Cuándo Usar Cada Herramienta

Exploración Inicial:

  • get_project_overview - Primera herramienta para entender cualquier base de código
  • list_dir - Explorar la estructura de directorios
  • get_symbols_overview - Vista de alto nivel de los símbolos de archivos

Búsqueda de Código:

  • search_symbols - Búsqueda principal de funciones, clases, interfaces
  • lsp_get_document_symbols - Listar todos los símbolos en un archivo específico
  • lsp_get_workspace_symbols - Búsqueda alternativa en todo el espacio de trabajo

Comprensión de Código:

  • get_symbol_details - Información completa en una sola llamada (recomendado)
  • lsp_get_definitions - Ir a la definición (usa includeBody: true para el código completo)
  • lsp_find_references - Encontrar todos los usos
  • lsp_get_hover - Información rápida de tipos

Calidad de Código:

  • lsp_get_diagnostics - Verificar errores
  • lsp_get_code_actions - Obtener correcciones disponibles

Modificación de Código:

  • lsp_rename_symbol - Renombrado seguro en toda la base de código
  • lsp_format_document - Formatear código
  • replace_range / replace_regex - Reemplazos de texto

Ejemplos de Flujos de Trabajo

1. EXPLORANDO UNA NUEVA BASE DE CÓDIGO

1. mcp__lsmcp__get_project_overview
   → Understand structure, main components, statistics
2. mcp__lsmcp__search_symbols --kind "class"
   → Find all classes in the project
3. mcp__lsmcp__get_symbol_details --symbol "MainClass"
   → Deep dive into specific class implementation

2. INVESTIGANDO UN ERROR

1. mcp__lsmcp__search_symbols --name "problematicFunction"
   → Locate the function
2. mcp__lsmcp__get_symbol_details --symbol "problematicFunction"
   → Understand its type, implementation, and usage
3. mcp__lsmcp__lsp_find_references --symbolName "problematicFunction"
   → See all places it's called
4. mcp__lsmcp__lsp_get_diagnostics --relativePath "path/to/file.ts"
   → Check for errors

3. REFACTORIZANDO CÓDIGO

1. mcp__lsmcp__search_symbols --name "oldMethodName"
   → Find the method to refactor
2. mcp__lsmcp__get_symbol_details --symbol "oldMethodName"
   → Understand current implementation and usage
3. mcp__lsmcp__lsp_rename_symbol --symbolName "oldMethodName" --newName "newMethodName"
   → Safely rename across codebase
4. mcp__lsmcp__lsp_format_document --relativePath "path/to/file.ts"
   → Clean up formatting

4. AÑADIENDO NUEVAS FUNCIONALIDADES

1. mcp__lsmcp__get_project_overview
   → Understand existing architecture
2. mcp__lsmcp__search_symbols --kind "interface"
   → Find relevant interfaces to implement
3. mcp__lsmcp__get_symbol_details --symbol "IUserService"
   → Understand interface requirements
4. mcp__lsmcp__lsp_get_completion --line 50
   → Get suggestions while writing new code

HERRAMIENTAS DE RESPALDO (USAR SOLO CUANDO SEA NECESARIO):

  • ⚠️ Read - Solo cuando necesites ver archivos que no son de código o cuando las herramientas LSMCP fallen
  • ⚠️ Grep - Para búsquedas de patrones de texto en archivos
  • ⚠️ Glob - Solo cuando la búsqueda de archivos de LSMCP no funcione
  • ⚠️ LS - Solo para listados básicos de directorios cuando LSMCP falle
  • ⚠️ Comandos Bash - Solo para operaciones que no son de código o solución de problemas

CUÁNDO USAR HERRAMIENTAS DE RESPALDO

Usa las herramientas estándar SOLO en estas situaciones:

  1. Archivos que no son de código: README, documentación, archivos de configuración
  2. Fallos de herramientas LSMCP: Cuando las herramientas LSMCP devuelvan errores o sin resultados
  3. Depuración: Cuando se solucionen problemas de por qué las herramientas LSMCP no funcionan
  4. Formatos de archivo especiales: Archivos que LSMCP no soporta
  5. Verificación rápida: Comprobación doble de resultados LSMCP cuando sea necesario

Sistema de Memoria

Tienes acceso a memorias de proyecto almacenadas en .lsmcp/memories/. Usa estas herramientas:

  • mcp__lsmcp__list_memories - Listar archivos de memoria disponibles
  • mcp__lsmcp__read_memory - Leer contenido de memoria específico
  • mcp__lsmcp__write_memory - Crear o actualizar memorias
  • mcp__lsmcp__delete_memory - Eliminar un archivo de memoria

Las memorias contienen contexto importante del proyecto, convenciones y pautas que ayudan a mantener la consistencia.

Presets Disponibles

lsmcp incluye presets integrados para servidores de lenguaje populares:

  • tsgo - TypeScript (Recomendado)
  • typescript - typescript-language-server
  • rust-analyzer - Rust Analyser
  • moonbit - MoonBit
  • fsharp - F# (fsautocomplete)
  • deno - Deno TypeScript/JavaScript
  • gopls - Go (Servidor de lenguaje oficial de Go)
  • hls - Haskell Language Server (requiere configuración de ghcup, consulta docs/HASKELL_SETUP.md)
  • ocaml - OCaml Language Server

Configuración

.lsmcp/config.json

{
  "$schema": "../node_modules/@mizchi/lsmcp/lsmcp.schema.json",
  "preset": "tsgo",
  "settings": {
    "autoIndex": true,
    "indexConcurrency": 10
  }
}

Para un ejemplo completo de configuración, consulta examples/full-lsmcp-config.json.

Herramientas

lsmcp proporciona herramientas MCP integrales para análisis y manipulación de código:

Nota: Los nombres de herramientas listados a continuación son los nombres de herramientas MCP sin procesar (snake_case, por ejemplo, get_hover). Algunos clientes los muestran con un prefijo calificado por servidor (por ejemplo, mcplsmcpget_hover). Para convenciones de nomenclatura y límites de módulos, consulta docs/TOOL_REFERENCE.md.

Herramientas LSP Principales

  • lsp_get_hover - Obtener información de tipos y documentación para símbolos
  • lsp_find_references - Encontrar todas las referencias a un símbolo en toda la base de código
  • lsp_get_definitions - Navegar a definiciones de símbolos con cuerpo de código opcional
  • lsp_get_diagnostics - Verificar errores y advertencias en archivos
  • lsp_get_all_diagnostics - Obtener diagnósticos para todo el proyecto
  • lsp_get_document_symbols - Listar todos los símbolos en un archivo
  • lsp_get_workspace_symbols - Buscar símbolos en todo el espacio de trabajo
  • lsp_get_completion - Obtener sugerencias de autocompletado de código
  • lsp_get_signature_help - Obtener sugerencias de parámetros para llamadas a funciones
  • lsp_format_document - Formatear documentos completos usando el servidor de lenguaje
  • lsp_rename_symbol - Renombrar símbolos en toda la base de código
  • lsp_get_code_actions - Obtener correcciones rápidas y refactorizaciones disponibles
  • lsp_delete_symbol - Eliminar un símbolo y opcionalmente todas sus referencias
  • lsp_check_capabilities - Verificar las funciones LSP soportadas

Herramientas de Alto Nivel

  • get_project_overview - Análisis rápido de estructura de proyecto y componentes
  • search_symbols - Búsqueda rápida de símbolos usando índice preconstruido (crea índice automáticamente si es necesario)
  • get_symbol_details - Obtener detalles completos sobre un símbolo (información flotante, definición, referencias)

Herramientas de Bibliotecas Externas

  • index_external_libraries - Indexar archivos de declaración TypeScript de node_modules
  • get_typescript_dependencies - Listar dependencias TypeScript disponibles
  • search_external_library_symbols - Buscar símbolos en bibliotecas externas indexadas
  • resolve_symbol - Resolver símbolos a sus definiciones en bibliotecas externas
  • get_available_external_symbols - Obtener símbolos disponibles de bibliotecas importadas
  • parse_imports - Analizar y examinar declaraciones de importación

Herramientas de Edición de Código

  • replace_range - Reemplazar rangos de texto específicos en archivos
  • replace_regex - Reemplazos avanzados basados en expresiones regulares

Herramientas del Sistema de Archivos

  • list_dir - Listar directorios con soporte de gitignore
  • get_symbols_overview - Vista general de símbolos de alto nivel por archivo

Gestión de Memoria

  • list_memories - Listar memorias de proyecto
  • read_memory - Leer contenido de memoria específico
  • write_memory - Crear o actualizar memorias
  • delete_memory - Eliminar memorias

Optimización del Rendimiento

LSMCP incluye varias optimizaciones de rendimiento:

  • Indexación Incremental: Solo los archivos modificados se re-indexan
  • Monitoreo de Memoria: Recolección automática de basura cuando el uso de memoria es alto
  • Procesamiento por Lotes: Procesamiento eficiente concurrente de archivos
  • Caché Inteligente: Caché de 15 minutos para datos de acceso frecuente

Opciones de configuración en .lsmcp/config.json:

{
  "indexConcurrency": 5,
  "maxFileSize": 10485760,
  "enableWatchers": true,
  "memoryLimit": 1024
}

Desarrollo

Consulta CONTRIBUTING.md para obtener instrucciones detalladas de configuración de desarrollo, pruebas y pautas de contribución.

# Quick start
pnpm install
pnpm build
pnpm test

# Run with memory monitoring
node --expose-gc dist/lsmcp.js

Registro de Depuración

LSMCP tiene sistemas de registro separados para el servidor MCP y el cliente LSP que se pueden controlar de forma independiente:

Registro del Servidor MCP

Habilita la salida de depuración del servidor MCP con cualquiera de las variables de entorno:

MCP_DEBUG=1 lsmcp       # Enable MCP server debug logging
LSMCP_DEBUG=1 lsmcp     # Alternative (backward compatible)

Registro del Cliente LSP

Habilita la salida de depuración del cliente LSP por separado:

LSP_DEBUG=1 lsmcp       # Enable LSP client debug logging

Registro Combinado

Habilita la salida de depuración tanto de MCP como de LSP:

MCP_DEBUG=1 LSP_DEBUG=1 lsmcp

Licencia

MIT - Consulta el archivo LICENSE para más detalles.