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
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ódigolist_dir- Navegar pela estrutura de diretóriosget_symbols_overview- Visão de alto nível dos símbolos do arquivo
Encontrando Código:
search_symbols- Busca principal por funções, classes, interfaceslsp_get_document_symbols- Listar todos os símbolos em um arquivo específicolsp_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 (useincludeBody: truepara o código completo)lsp_find_references- Encontrar todos os usoslsp_get_hover- Informações rápidas de tipo
Qualidade do Código:
lsp_get_diagnostics- Verificar erroslsp_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ódigolsp_format_document- Formatar códigoreplace_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:
- Arquivos que não são de código: README, documentação, arquivos de configuração
- Falhas nas ferramentas LSMCP: Quando as ferramentas LSMCP retornarem erros ou nenhum resultado
- Depuração: Quando estiver solucionando problemas de por que as ferramentas LSMCP não estão funcionando
- Formatos de arquivo especiais: Arquivos que o LSMCP não suporta
- 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íveismcp__lsmcp__read_memory- Ler conteúdo específico de memóriamcp__lsmcp__write_memory- Criar ou atualizar memóriasmcp__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-serverrust-analyzer- Rust Analysermoonbit- MoonBitfsharp- F# (fsautocomplete)deno- Deno TypeScript/JavaScriptgopls- 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.