MCP ツリーシッターサーバー
Tree-Sitterを用いたコード分析機能を提供するモデルコンテキストプロトコル(MCP)サーバー。適切なコンテキスト管理によってAIアシスタントがコードベースにインテリジェントにアクセスできるよう設計されています。Claude Desktopがリファレンス実装ターゲットです。
特徴
🔍柔軟な探索:複数の粒度レベルでコードを調査
🧠コンテキスト管理: コンテキストウィンドウを圧迫することなく、必要な情報だけを提供します
🌐言語に依存しない: tree-sitter-language-pack を介して、Python、JavaScript、TypeScript、Go、Rust、C、C++、Swift、Java、Kotlin、Julia、APL など、多くのプログラミング言語をサポートします。
🌳構造認識: 効率的なカーソルベースのトラバーサルで AST ベースの理解を使用します
🔎検索可能:テキスト検索とツリーシッタークエリを使用して特定のパターンを見つけます
🔄キャッシュ: 解析ツリーのキャッシュによるパフォーマンスの最適化
🔑シンボル抽出:関数、クラス、その他のコードシンボルを抽出して分析します
📊依存関係分析:コードの依存関係と関係を特定して分析します
🧩状態の永続性: 呼び出し間でプロジェクト登録とキャッシュされたデータを維持します
🔒安全: 組み込みのセキュリティ境界と入力検証
利用可能なすべてのコマンドの包括的なリスト、現在の実装ステータス、および詳細な機能マトリックスについては、 FEATURES.mdドキュメントを参照してください。
Related MCP server: MCTS MCP Server
インストール
前提条件
Python 3.10以上
お好みの言語のための Tree-sitter 言語パーサー
基本的なインストール
開発インストール
クイックスタート
Claude Desktopで実行
MCP CLI を使用するか、Claude Desktop を手動で構成することにより、Claude Desktop でサーバーを利用できるようにすることができます。
MCP CLIの使用
サーバーをClaude Desktopに登録します。
手動設定
あるいは、Claude Desktop を手動で構成することもできます。
Claude Desktop 構成ファイルを開きます。
macOS/Linux:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
ファイルが存在しない場合は作成します。
mcpServersセクションにサーバーを追加します。{ "mcpServers": { "tree_sitter": { "command": "python", "args": [ "-m", "mcp_server_tree_sitter.server" ] } } }あるいは、uv または別のパッケージ マネージャーを使用する場合:
{ "mcpServers": { "tree_sitter": { "command": "uv", "args": [ "--directory", "/ABSOLUTE/PATH/TO/YOUR/PROJECT", "run", "-m", "mcp_server_tree_sitter.server" ] } } }注意:
/ABSOLUTE/PATH/TO/YOUR/PROJECTプロジェクト ディレクトリへの実際の絶対パスに置き換えてください。ファイルを保存し、Claude Desktop を再起動します。
少なくとも1つのMCPサーバーを適切に設定すると、Claude DesktopのインターフェースにMCPツールアイコン(ハンマー)が表示されます。このアイコンをクリックすると、 tree_sitterサーバーの機能にアクセスできます。
リリースバージョンでの設定
PyPI (リリース バージョン) からパッケージを手動でインストールしたり、リポジトリをクローンしたりしたくない場合は、Claude Desktop に対して次の構成を使用します。
Claude Desktop 構成ファイル (上記と同じ場所) を開きます。
mcpServersセクションに tree-sitter サーバーを追加します。{ "mcpServers": { "tree_sitter": { "command": "uvx", "args": [ "--directory", "/ABSOLUTE/PATH/TO/YOUR/PROJECT", "mcp-server-tree-sitter" ] } } }ファイルを保存し、Claude Desktop を再起動します。
この方法は、 uvxを使用してインストールされたPyPIパッケージを直接実行します。これはリリースバージョンで推奨される方法です。サーバーは基本設定のままで実行するために追加のパラメータを必要としません。
状態の永続性
MCP Tree-sitter Serverは、呼び出し間で状態を維持します。これは次のことを意味します。
プロジェクトは明示的に削除されるか、サーバーが再起動されるまで登録されたままになります。
解析ツリーは設定に従ってキャッシュされます
言語情報はサーバーの存続期間中保持されます
この永続性は、主要コンポーネントのシングルトン パターンを使用して、サーバーの存続期間中メモリ内に維持されます。
スタンドアロンサーバーとして実行
サーバーを実行するにはいくつかの方法があります。
MCP CLI を直接使用する:
Makefile ターゲットの使用:
インストールされたスクリプトを使用する:
MCPインスペクターと併用する
MCP CLI を直接使用する:
または Makefile ターゲットを使用します:
引数を渡すこともできます:
使用法
プロジェクトを登録する
まず、分析するプロジェクトを登録します。
ファイルの探索
プロジェクト内のファイルを一覧表示します。
ファイルの内容を表示:
コード構造を分析する
構文ツリーを取得します。
シンボルを抽出します:
検索コード
テキストを検索:
tree-sitter クエリを実行します。
複雑さを分析する
Pythonの直接使用
主な使用目的は MCP サーバー経由ですが、Python コードでライブラリを直接使用することもできます。
構成
YAML 構成ファイルを作成します。
以下をロードします:
ログ構成
サーバーのログの詳細度は、環境変数を使用して制御できます。
ログ設定に関する包括的な情報については、ログに関するドキュメントを参照してください。コマンドラインインターフェースの詳細については、 CLIに関するドキュメントを参照してください。
preferred_languagesについて
preferred_languages設定は、オンデマンドではなくサーバー起動時に事前にロードされる言語パーサーを制御します。これにはいくつかの利点があります。
より高速な初期分析: 事前にロードされた言語のファイルを最初に分析するときに遅延が発生しません
早期エラー検出: パーサーの問題は使用中ではなく起動時に発見されます
予測可能なメモリ割り当て: 頻繁に使用されるパーサーのメモリは事前に割り当てられます
デフォルトでは、すべてのパーサーは最初に必要になったときにオンデマンドで読み込まれます。最適なパフォーマンスを得るには、プロジェクトで最も頻繁に使用する言語を指定してください。
特定の設定を構成することもできます。
または環境変数を使用します:
環境変数は、セクション設定の場合はMCP_TS_SECTION_SETTING (例: MCP_TS_CACHE_MAX_SIZE_MB ) の形式を使用し、最上位レベルの設定の場合はMCP_TS_SETTING (例: MCP_TS_LOG_LEVEL ) の形式を使用します。
構成値は次の優先順位で適用されます。
環境変数(最高)
configure()呼び出しで設定された値YAML設定ファイル
デフォルト値(最低)
サーバーは次の場所で構成を検索します:
configure()呼び出しで指定されたパスMCP_TS_CONFIG_PATH環境変数で指定されたパスデフォルトの場所:
~/.config/tree-sitter/config.yaml
開発者向け
診断機能
MCP Tree-sitter Server には、問題を特定して修正するのに役立つ診断フレームワークが含まれています。
診断テストはサーバーの動作に関する詳細な情報を提供し、特定の問題の特定に役立ちます。診断フレームワークの詳細については、診断ドキュメントをご覧ください。
型安全性に関する考慮事項
MCP Tree-sitter Serverは、慎重な設計パターンとプロトコルにより、Tree-sitterライブラリとのインターフェースにおいて型安全性を維持しています。コードベースを拡張する場合は、Tree-sitter APIのバリエーションの取り扱いに関する重要な情報について、型安全性ガイドをご確認ください。
利用可能なリソース
サーバーは次の MCP リソースを提供します。
project://{project}/files- プロジェクト内のすべてのファイルを一覧表示しますproject://{project}/files/{pattern}- パターンに一致するファイルを一覧表示しますproject://{project}/file/{path}- ファイルの内容を取得するproject://{project}/file/{path}/lines/{start}-{end}- ファイルから特定の行を取得しますproject://{project}/ast/{path}- ファイルのASTを取得するproject://{project}/ast/{path}/depth/{depth}- カスタム深度で AST を取得します
利用可能なツール
サーバーは次のツールを提供します:
プロジェクト管理:
register_project_tool、list_projects_tool、remove_project_tool言語管理:
list_languages、check_language_availableファイル操作:
list_files、get_file、get_file_metadataAST 分析:
get_ast、get_node_at_positionコード検索:
find_text、run_queryシンボル抽出:
get_symbols、find_usageプロジェクト分析:
analyze_project、get_dependencies、analyze_complexityクエリ構築:
get_query_template_tool、list_query_templates_tool、build_query、adapt_query、get_node_types類似コード検出:
find_similar_codeキャッシュ管理:
clear_cache構成診断:
diagnose_config
各ツールの実装状況、依存関係、使用例の詳細については、 FEATURES.md を参照してください。
利用可能なプロンプト
サーバーは次の MCP プロンプトを提供します。
code_review- コードレビュー用のプロンプトを作成するexplain_code- コードを説明するプロンプトを作成するexplain_tree_sitter_query- tree-sitter クエリ構文の説明suggest_improvements- コードの改善を提案するためのプロンプトを作成するproject_overview- プロジェクト概要分析のプロンプトを作成する
ライセンス
マサチューセッツ工科大学