/ Diretório / Playground / Tree-sitter MCP
● Comunidade wrale ⚡ Instantâneo

Tree-sitter MCP

por wrale · wrale/mcp-server-tree-sitter

Tree-sitter como MCP — dê ao Claude acesso em nível de AST para que ele edite uma função, não 47 correspondências aleatórias de regex.

tree-sitter-mcp encapsula parsers do Tree-sitter como ferramentas MCP. Em vez de pedir ao Claude para fazer grep no código, você dá a ele get_function, list_symbols, find_calls. O agente pode fazer edições cirúrgicas no nível de AST: 'renomeie apenas a definição da função, não o literal de string que por acaso corresponde'.

Por que usar

Principais recursos

Demo ao vivo

Como fica na prática

tree-sitter-mcp.replay ▶ pronto
0/0

Instalar

Escolha seu cliente

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "tree-sitter-mcp": {
      "command": "uvx",
      "args": [
        "mcp-server-tree-sitter"
      ]
    }
  }
}

Abra Claude Desktop → Settings → Developer → Edit Config. Reinicie após salvar.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "tree-sitter-mcp": {
      "command": "uvx",
      "args": [
        "mcp-server-tree-sitter"
      ]
    }
  }
}

Cursor usa o mesmo esquema mcpServers que o Claude Desktop. Config de projeto vence a global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "tree-sitter-mcp": {
      "command": "uvx",
      "args": [
        "mcp-server-tree-sitter"
      ]
    }
  }
}

Clique no ícone MCP Servers na barra lateral do Cline, depois "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "tree-sitter-mcp": {
      "command": "uvx",
      "args": [
        "mcp-server-tree-sitter"
      ]
    }
  }
}

Mesmo formato do Claude Desktop. Reinicie o Windsurf para aplicar.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "tree-sitter-mcp",
      "command": "uvx",
      "args": [
        "mcp-server-tree-sitter"
      ]
    }
  ]
}

O Continue usa um array de objetos de servidor em vez de um map.

~/.config/zed/settings.json
{
  "context_servers": {
    "tree-sitter-mcp": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-server-tree-sitter"
        ]
      }
    }
  }
}

Adicione em context_servers. Zed recarrega automaticamente ao salvar.

claude mcp add tree-sitter-mcp -- uvx mcp-server-tree-sitter

Uma linha só. Verifique com claude mcp list. Remova com claude mcp remove.

Casos de uso

Usos do mundo real: Tree-sitter MCP

Renomear uma função sem renomear uma string coincidentemente correspondente

👤 Devs fazendo refatorações ⏱ ~15 min intermediate

Quando usar: Você quer renomear validateTokenverifyToken sem também renomear a docstring que diz 'este valida token'.

Fluxo
  1. Encontrar definição
    Use o MCP do tree-sitter. Encontre a definição de validateToken — apenas função, ignore strings e comentários.✓ Copiado
    → Nó AST com file:line e node type 'function_definition'
  2. Encontrar referências
    Encontre todos os call sites de validateToken — apenas correspondências de resolução de identificador.✓ Copiado
    → Lista de referências, sem falsos positivos em strings
  3. Renomear
    Renomeie para verifyToken em todos os lugares onde é uma referência real. Mostre-me o diff.✓ Copiado
    → Diff com N renomeações em posições de identificador apenas

Resultado: Renomeação limpa que não toca comentários, strings ou documentação.

Armadilhas
  • Despacho dinâmico / reflection não detectado — Combine com semble para recall semântico de usos dinâmicos
Combine com: filesystem · semble-mcp

Extrair o corpo exato de uma função para uma refatoração extract-method

👤 Engenheiros limpando funções longas ⏱ ~20 min intermediate

Quando usar: Você quer extrair as linhas 42–87 de uma função em um helper — cirurgicamente.

Fluxo
  1. Fatiar
    Mostre-me o nó AST exato para o for-loop na linha 42 em handler.py.✓ Copiado
    → Nó do loop com intervalos de bytes
  2. Extrair
    Mova esse loop para uma nova função process_batch. Substitua o original por uma chamada.✓ Copiado
    → Diff da refatoração respeitando indentação e escopo originais

Resultado: Refatoração que compila na primeira tentativa.

Armadilhas
  • Variáveis capturadas não elevadas para args — Peça ao Claude para enumerar as variáveis livres antes de extrair

Calcular métricas de complexidade por arquivo

👤 Gerentes de engenharia / auditorias de dívida técnica ⏱ ~25 min intermediate

Quando usar: Você precisa de um mapa de hot spots de código complexo.

Fluxo
  1. Percorrer
    Para cada arquivo .py em src/, conte definições de função e complexidade ciclomática aproximada usando AST.✓ Copiado
    → Tabela por arquivo
  2. Classificar
    Top 10 funções mais complexas — reporte arquivo, linha, nome, pontuação.✓ Copiado
    → Lista de hot spots classificada

Resultado: Backlog de refatoração priorizado.

Armadilhas
  • Complexidade ciclomática ≠ legibilidade — Combine com julgamento de revisor; a métrica é um ponto de partida

Combinações

Combine com outros MCPs para 10× de alavancagem

tree-sitter-mcp + semble-mcp

Recall semântico (semble) + precisão estrutural (tree-sitter)

Use semble para encontrar call sites prováveis, depois tree-sitter para verificar se cada um é um identificador real.✓ Copiado
tree-sitter-mcp + filesystem

Leia apenas os intervalos derivados do AST

Tree-sitter o intervalo da função, depois filesystem para despejar os bytes exatos.✓ Copiado

Ferramentas

O que este MCP expõe

FerramentaEntradasQuando chamarCusto
parse_file path Obter o AST completo de um arquivo free
list_symbols path, kind? Inventário de nível superior free
find_definition name, scope? Localizar onde algo é definido free
find_references name Encontrar call sites para renomeação segura free
get_node path, byte_range or line_range Fatiar nó exato para refatoração free

Custo e limites

O que custa rodar

Cota de API
Nenhuma — local
Tokens por chamada
100–1500
Monetário
Gratuito
Dica
Fatie nós, não despeje arquivos inteiros

Segurança

Permissões, segredos, alcance

Escopos mínimos: Leitura local de arquivos
Armazenamento de credenciais: Nenhum
Saída de dados: Nenhuma

Solução de problemas

Erros comuns e correções

Linguagem não suportada

Adicione a gramática Tree-sitter relevante; verifique a lista suportada no README

Erros de análise em arquivos parciais

Tree-sitter se recupera mas sinaliza nós ERROR; ignore ou corrija sintaticamente

Primeira execução lenta

Compilação de gramática acontece uma vez; execuções subsequentes são rápidas

Alternativas

Tree-sitter MCP vs. outros

AlternativaQuando usarTroca
ast-grepVocê quer uma ferramenta de busca/substituição estrutural com foco em CLIMenos integrado como MCP
Servidores de linguagem (LSP)Você precisa de resolução de tipos completa, não apenas sintaxeConfiguração mais pesada; um servidor por linguagem

Mais

Recursos

📖 Leia o README oficial no GitHub

🐙 Ver issues abertas

🔍 Ver todos os 400+ servidores MCP e Skills