/ Каталог / Песочница / Tree-sitter MCP
● Сообщество wrale ⚡ Сразу

Tree-sitter MCP

автор wrale · wrale/mcp-server-tree-sitter

Tree-sitter как MCP — дайте Claude доступ на уровне AST, чтобы он редактировал функцию, а не 47 случайных совпадений regex.

tree-sitter-mcp оборачивает парсеры Tree-sitter в MCP-инструменты. Вместо того чтобы просить Claude делать grep по коду, вы даёте ему get_function, list_symbols, find_calls. Агент может выполнять точечные правки на уровне AST: «переименуй только определение функции, а не строковый литерал, который случайно совпадает».

Зачем использовать

Ключевые функции

Живое демо

Как выглядит на практике

tree-sitter-mcp.replay ▶ готово
0/0

Установка

Выберите клиент

~/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"
      ]
    }
  }
}

Откройте Claude Desktop → Settings → Developer → Edit Config. Перезапустите после сохранения.

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

Cursor использует ту же схему mcpServers, что и Claude Desktop. Конфиг проекта приоритетнее глобального.

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

Щёлкните значок MCP Servers на боковой панели Cline, затем "Edit Configuration".

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

Тот же формат, что и Claude Desktop. Перезапустите Windsurf для применения.

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

Continue использует массив объектов серверов, а не map.

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

Добавьте в context_servers. Zed перезагружается автоматически.

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

Однострочная команда. Проверить: claude mcp list. Удалить: claude mcp remove.

Сценарии использования

Реальные сценарии: Tree-sitter MCP

Переименовать функцию без переименования случайно совпавшей строки

👤 Разработчики, делающие рефакторинг ⏱ ~15 min intermediate

Когда использовать: Хотите переименовать validateTokenverifyToken, не затронув документацию «this validates token».

Поток
  1. Найти определение
    Use tree-sitter MCP. Find the definition of validateToken — function only, ignore strings and comments.✓ Скопировано
    → AST-узел с file:line и node type 'function_definition'
  2. Найти ссылки
    Find all call sites of validateToken — only identifier-resolution matches.✓ Скопировано
    → Список ссылок без ложноположительных в строках
  3. Переименование
    Rename to verifyToken everywhere it's a real reference. Show me the diff.✓ Скопировано
    → Diff с N переименованиями только в позициях идентификаторов

Итог: Чистое переименование без затрагивания комментариев, строк и документации.

Подводные камни
  • Динамическая диспетчеризация / reflection пропускаются — Дополните semble для семантического поиска динамических использований
Сочетать с: filesystem · semble-mcp

Извлечь тело функции для рефакторинга «extract method»

👤 Инженеры, очищающие длинные функции ⏱ ~20 min intermediate

Когда использовать: Хотите вынести строки 42–87 функции в хелпер — хирургически.

Поток
  1. Вырезать
    Show me the exact AST node for the for-loop at line 42 in handler.py.✓ Скопировано
    → Узел цикла с диапазонами байт
  2. Извлечь
    Move that loop into a new function process_batch. Replace original with a call.✓ Скопировано
    → Diff рефакторинга соблюдает исходные отступы и область видимости

Итог: Рефакторинг компилируется с первого раза.

Подводные камни
  • Захваченные переменные не поднимаются в аргументы — Попросите Claude перечислить свободные переменные перед извлечением

Вычислить метрики сложности по файлам

👤 Технические руководители / аудит технического долга ⏱ ~25 min intermediate

Когда использовать: Нужна карта сложных мест в коде.

Поток
  1. Обход
    For every .py file under src/, count function defs and rough cyclomatic complexity using AST.✓ Скопировано
    → Таблица по файлам
  2. Рейтинг
    Top 10 most complex functions — report file, line, name, score.✓ Скопировано
    → Рейтинг горячих точек

Итог: Приоритизированный бэклог рефакторинга.

Подводные камни
  • Цикломатическая сложность ≠ читаемость — Дополните суждением ревьюера; метрика — лишь отправная точка

Комбинации

Сочетайте с другими MCP — эффект x10

tree-sitter-mcp + semble-mcp

Семантический охват (semble) + структурная точность (tree-sitter)

Use semble to find probable call sites, then tree-sitter to verify each is a real identifier.✓ Скопировано
tree-sitter-mcp + filesystem

Читать только AST-производные диапазоны

Tree-sitter the function range, then filesystem to dump the exact bytes.✓ Скопировано

Инструменты

Что предоставляет этот MCP

ИнструментВходные данныеКогда вызыватьСтоимость
parse_file path Получить полный AST файла free
list_symbols path, kind? Инвентаризация верхнего уровня free
find_definition name, scope? Найти место определения free
find_references name Найти места вызова для безопасного переименования free
get_node path, byte_range or line_range Извлечь точный узел для рефакторинга free

Стоимость и лимиты

Во что обходится

Квота API
Нет — локально
Токенов на вызов
100–1500
Деньги
Бесплатно
Совет
Извлекайте узлы, не дампите целые файлы

Безопасность

Права, секреты, радиус поражения

Минимальные скоупы: Local file read
Хранение учётных данных: Нет
Исходящий трафик: Нет

Устранение неполадок

Частые ошибки и исправления

Language not supported

Добавьте соответствующую грамматику Tree-sitter; проверьте поддерживаемый список в README

Parse errors on partial files

Tree-sitter восстанавливается, но помечает ERROR-узлы; игнорируйте или исправьте синтаксис

Slow first run

Компиляция грамматики происходит один раз; последующие запуски быстрые

Альтернативы

Tree-sitter MCP в сравнении

АльтернативаКогда использоватьКомпромисс
ast-grepНужен CLI-ориентированный инструмент структурного поиска/заменыМенее интегрирован как MCP
Language servers (LSP)Нужна полная разрешение типов, а не только синтаксисТяжелее настраивать; отдельный сервер на каждый язык

Ещё

Ресурсы

📖 Читать официальный README на GitHub

🐙 Открытые задачи

🔍 Все 400+ MCP-серверов и Skills