TypeScript MCP

Um servidor especializado em TypeScript que oferece capacidades avançadas de manipulação e análise de código.

Documentação

lsmcp - Servidor MCP de Protocolo de Serviço de Linguagem

CI Language Server Tests npm version License: MIT

Um servidor MCP (Model Context Protocol) unificado que fornece capacidades avançadas de manipulação e análise de código para múltiplas linguagens de programação através da integração com o Protocolo de Serviço de Linguagem.

  • 🌍 Suporte a Múltiplas Linguagens
  • 🔍 Análise Semântica de Código
  • 🤖 Otimizado para IA

Veja examples/ para exemplos funcionais de cada configuração de linguagem suportada.

Requisitos

  • Node.js 22.0.0 ou superior (necessário para suporte integrado a SQLite)

Início 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>"
📖 Exemplo de Uso com Claude

FLUXO DE TRABALHO RECOMENDADO

🎯 Fluxo Principal: Visão Geral → Busca → Detalhes

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

📋 Quando Usar Cada Ferramenta

Exploração Inicial:

  • get_project_overview - Primeira ferramenta para entender qualquer base de código
  • list_dir - Navegar pela estrutura de diretórios
  • get_symbols_overview - Visão de alto nível dos símbolos do arquivo

Encontrando Código:

  • search_symbols - Busca principal por funções, classes, interfaces
  • lsp_get_document_symbols - Listar todos os símbolos em um arquivo específico
  • lsp_get_workspace_symbols - Busca alternativa em todo o espaço de trabalho

Entendendo Código:

  • get_symbol_details - Informações completas em uma única chamada (recomendado)
  • lsp_get_definitions - Ir para a definição (use includeBody: true para o código completo)
  • lsp_find_references - Encontrar todos os usos
  • lsp_get_hover - Informações rápidas de tipo

Qualidade do Código:

  • lsp_get_diagnostics - Verificar erros
  • lsp_get_code_actions - Obter correções disponíveis

Modificação de Código:

  • lsp_rename_symbol - Renomeação segura em toda a base de código
  • lsp_format_document - Formatar código
  • replace_range / replace_regex - Substituições de texto

Exemplos de Fluxos de Trabalho

1. EXPLORANDO UMA NOVA 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 UM BUG

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. REFATORANDO 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. ADICIONANDO NOVOS RECURSOS

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

FERRAMENTAS DE FALLBACK (USE SOMENTE QUANDO NECESSÁRIO):

  • ⚠️ Read - Somente quando precisar ver arquivos que não são de código ou quando as ferramentas LSMCP falharem
  • ⚠️ Grep - Para buscas de padrões de texto em arquivos
  • ⚠️ Glob - Somente quando a busca de arquivos do LSMCP não funcionar
  • ⚠️ LS - Somente para listagem básica de diretórios quando o LSMCP falhar
  • ⚠️ Comandos Bash - Somente para operações que não envolvem código ou para solução de problemas

QUANDO USAR FERRAMENTAS DE FALLBACK

Use as ferramentas padrão SOMENTE nestas situações:

  1. Arquivos que não são de código: README, documentação, arquivos de configuração
  2. Falhas nas ferramentas LSMCP: Quando as ferramentas LSMCP retornarem erros ou nenhum resultado
  3. Depuração: Quando estiver solucionando problemas de por que as ferramentas LSMCP não estão funcionando
  4. Formatos de arquivo especiais: Arquivos que o LSMCP não suporta
  5. Verificação rápida: Conferindo novamente os resultados do LSMCP quando necessário

Sistema de Memória

Você tem acesso a memórias de projeto armazenadas em .lsmcp/memories/. Use estas ferramentas:

  • mcp__lsmcp__list_memories - Listar arquivos de memória disponíveis
  • mcp__lsmcp__read_memory - Ler conteúdo específico de memória
  • mcp__lsmcp__write_memory - Criar ou atualizar memórias
  • mcp__lsmcp__delete_memory - Excluir um arquivo de memória

As memórias contêm contexto importante do projeto, convenções e diretrizes que ajudam a manter a consistência.

Presets Disponíveis

O lsmcp inclui presets integrados para servidores de linguagem 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 linguagem oficial do Go)
  • hls - Haskell Language Server (requer configuração do ghcup, veja docs/HASKELL_SETUP.md)
  • ocaml - OCaml Language Server

Configuração

.lsmcp/config.json

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

Para um exemplo abrangente de configuração, veja examples/full-lsmcp-config.json.

Ferramentas

O lsmcp fornece ferramentas MCP abrangentes para análise e manipulação de código:

Nota: Os nomes das ferramentas listados abaixo são os nomes brutos das ferramentas MCP (snake_case, ex.: get_hover). Alguns clientes os exibem com um prefixo qualificado pelo servidor (ex.: mcplsmcpget_hover). Para convenções de nomenclatura e limites de módulos, veja docs/TOOL_REFERENCE.md.

Ferramentas LSP Principais

  • lsp_get_hover - Obter informações de tipo e documentação para símbolos
  • lsp_find_references - Encontrar todas as referências a um símbolo em toda a base de código
  • lsp_get_definitions - Navegar para definições de símbolos com corpo de código opcional
  • lsp_get_diagnostics - Verificar erros e avisos em arquivos
  • lsp_get_all_diagnostics - Obter diagnósticos para o projeto inteiro
  • lsp_get_document_symbols - Listar todos os símbolos em um arquivo
  • lsp_get_workspace_symbols - Buscar símbolos em todo o espaço de trabalho
  • lsp_get_completion - Obter sugestões de conclusão de código
  • lsp_get_signature_help - Obter dicas de parâmetros para chamadas de função
  • lsp_format_document - Formatar documentos inteiros usando o servidor de linguagem
  • lsp_rename_symbol - Renomear símbolos em toda a base de código
  • lsp_get_code_actions - Obter correções rápidas e refatorações disponíveis
  • lsp_delete_symbol - Excluir um símbolo e opcionalmente todas as suas referências
  • lsp_check_capabilities - Verificar recursos LSP suportados

Ferramentas de Alto Nível

  • get_project_overview - Análise rápida da estrutura do projeto e componentes
  • search_symbols - Busca rápida de símbolos usando índice pré-construído (cria o índice automaticamente se necessário)
  • get_symbol_details - Obter detalhes abrangentes sobre um símbolo (hover, definição, referências)

Ferramentas de Bibliotecas Externas

  • index_external_libraries - Indexar arquivos de declaração TypeScript de node_modules
  • get_typescript_dependencies - Listar dependências TypeScript disponíveis
  • search_external_library_symbols - Buscar símbolos em bibliotecas externas indexadas
  • resolve_symbol - Resolver símbolos para suas definições em bibliotecas externas
  • get_available_external_symbols - Obter símbolos disponíveis de bibliotecas importadas
  • parse_imports - Analisar e processar declarações de importação

Ferramentas de Edição de Código

  • replace_range - Substituir intervalos específicos de texto em arquivos
  • replace_regex - Substituições avançadas baseadas em regex

Ferramentas de Sistema de Arquivos

  • list_dir - Listar diretórios com suporte a gitignore
  • get_symbols_overview - Visão geral de alto nível de símbolos por arquivo

Gerenciamento de Memória

  • list_memories - Listar memórias do projeto
  • read_memory - Ler conteúdo específico de memória
  • write_memory - Criar ou atualizar memórias
  • delete_memory - Remover memórias

Otimização de Desempenho

O LSMCP inclui várias otimizações de desempenho:

  • Indexação Incremental: Somente arquivos modificados são reindexados
  • Monitoramento de Memória: Coleta automática de lixo quando o uso de memória está alto
  • Processamento em Lote: Processamento eficiente e concorrente de arquivos
  • Cache Inteligente: Cache de 15 minutos para dados acessados com frequência

Opções de configuração em .lsmcp/config.json:

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

Desenvolvimento

Veja CONTRIBUTING.md para configuração detalhada de desenvolvimento, instruções de teste e diretrizes de contribuição.

# Quick start
pnpm install
pnpm build
pnpm test

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

Registro de Depuração

O LSMCP possui sistemas de registro separados para o servidor MCP e o cliente LSP que podem ser controlados de forma independente:

Registro do Servidor MCP

Ative a saída de depuração do servidor MCP com qualquer uma das variáveis de ambiente:

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

Registro do Cliente LSP

Ative a saída de depuração do cliente LSP separadamente:

LSP_DEBUG=1 lsmcp       # Enable LSP client debug logging

Registro Combinado

Ative a saída de depuração de MCP e LSP juntos:

MCP_DEBUG=1 LSP_DEBUG=1 lsmcp

Licença

MIT - Veja o arquivo LICENSE para detalhes.