AST MCP Server について
AST MCP Server は、抽象構文木(AST)と抽象意味グラフ(ASG)によるコード構造と意味の解析を提供する MCP サーバーです。コード構造の理解が必要な AI アシスタント向けで、複数の言語に対応し、ツールはすべてローカルで実行されます。
主な機能
- 01コードを抽象構文木(AST)に解析
- 02コードから抽象意味グラフ(ASG)を生成
- 03コード構造と複雑度の分析
- 04コードのバージョン間における AST の差分比較
- 05結果のキャッシュと増分解析
- 06Python、JavaScript、TypeScript、Go、Rust、C/C++、Java に対応
活用シーン
- 01AI アシスタントによるコード構造や依存関係の理解を支援する
- 022 つのバージョンのコードの構造的な変更を比較する
- 03大きなファイルを増分的に解析する
MCP 対応
本プロジェクトは MCP サーバーであり、Claude Desktop などの MCP クライアントにコード解析ツールとリソースを登録します。parse_to_ast、generate_asg、analyze_code などが含まれます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AST MCP サーバー
抽象構文木(AST)と抽象意味グラフ(ASG)を通じて、コード構造と意味解析の機能を提供する MCP(Model Context Protocol)サーバーです。
機能
- コードを抽象構文木(AST)に解析します
- コードから抽象意味グラフ(ASG)を生成します
- コードの構造と複雑さを分析します
- 複数のプログラミング言語(Python、JavaScript、TypeScript、Go、Rust、C/C++、Java)をサポートします
- Claude Desktop やその他の MCP クライアントと互換性があります
- 大きなファイルをより高速に処理するための増分解析に対応しています
- スコープ処理を強化し、より包括的な意味解析を行います
- AST の差分を取得し、コードのバージョン間の変更を特定します
- パフォーマンスを向上させるためにリソースをキャッシュします
インストール
前提条件
- Python 3.9 以降
- パッケージマネージャーの uv(推奨)または pip
uv を使用する場合(推奨)
- このリポジトリをクローンします。
git clone https://github.com/angrysky56/ast-mcp-server.git
cd ast-mcp-server
- プロジェクトと依存関係をインストールします。
# Install the project in development mode with all dependencies
uv sync
# Or install with specific optional dependencies
uv sync --extra dev # Development tools
uv sync --extra testing # Testing dependencies
uv sync --extra docs # Documentation tools
- tree-sitter パーサーをビルドします。
uv run build-parsers
pip を使用する場合(代替方法)
# Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install dependencies
pip install -e .
# Build parsers
python build_parsers.py
Claude Desktop での使用方法
- 設定ファイルを編集して、サーバーを使用するよう Claude Desktop を設定します。
設定ファイルの場所:
- macOS:
~/Library/Application Support/claude-desktop/claude_desktop_config.json - Linux:
~/.config/claude-desktop/claude_desktop_config.json - Windows:
%APPDATA%\claude-desktop\claude_desktop_config.json
- AST MCP サーバーの設定を追加します。
{
"mcpServers": {
"AstAnalyzer": {
"command": "uv",
"args": [
"--directory",
"/home/ty/Repositories/ai_workspace/ast-mcp-server/ast_mcp_server",
"run",
"server.py"
]
}
}
}
重要: /absolute/path/to/ast-mcp-server を、お使いのシステム上の実際の絶対パスに置き換えてください。
-
Claude Desktop を再起動して、新しい MCP サーバーを読み込みます。
-
Claude Desktop で、コードファイルを指定するか、コードスニペットを貼り付けると、AST ベースのコード解析ツールを使用できます。

開発
開発環境のセットアップ
# Install with development dependencies
uv sync --extra dev
# Install pre-commit hooks (optional)
uv run pre-commit install
開発モードでの実行
MCP インスペクターを使用して、開発モードでサーバーを実行します。
# Using uv
uv run --extra dev -- -m mcp dev server.py
# Or using the development script
./dev_server.sh
テスト
# Run all tests
uv run --extra testing pytest
# Run tests with coverage
uv run --extra testing pytest --cov=ast_mcp_server --cov-report=html
# Run specific tests
uv run --extra testing pytest tests/test_specific.py
コード品質
# Format code
uv run black .
uv run isort .
# Lint code
uv run flake8 .
# Type checking
uv run mypy ast_mcp_server/
利用可能なツール
サーバーはコード解析用に以下のツールを提供します。
基本ツール
parse_to_ast:コードを抽象構文木に解析しますgenerate_asg:コードから抽象意味グラフを生成しますanalyze_code:コードの構造と複雑さを分析しますsupported_languages:サポート対象のプログラミング言語の一覧を取得します
キャッシュツール
parse_and_cache:コードを AST に解析し、リソースからアクセスできるようにキャッシュしますgenerate_and_cache_asg:ASG を生成し、リソースからアクセスできるようにキャッシュしますanalyze_and_cache:コードを分析し、結果をリソースからアクセスできるようにキャッシュします
拡張ツール
parse_to_ast_incremental:増分解析に対応してコードを解析し、処理を高速化しますgenerate_enhanced_asg:スコープ処理を改善した拡張 ASG を生成しますdiff_ast:2 つのコードバージョン間の差分を検出しますfind_node_at_position:指定した行と列にあるノードを特定しますparse_and_cache_incremental:コードを増分解析し、結果をキャッシュしますgenerate_and_cache_enhanced_asg:拡張 ASG を生成してキャッシュしますast_diff_and_cache:AST の差分を生成してキャッシュします
言語サポートの追加
追加のプログラミング言語をサポートするには:
- 対応する tree-sitter 言語パッケージをインストールします。
uv add tree-sitter-<language>
-
build_parsers.pyとast_mcp_server/tools.pyのLANGUAGE_MODULES辞書を更新します。 -
パーサーをビルドします。
uv run build-parsers
現在サポートされている言語
- Python(
tree-sitter-python) - JavaScript(
tree-sitter-javascript) - TypeScript(
tree-sitter-typescript) - Go(
tree-sitter-go) - Rust(
tree-sitter-rust) - C(
tree-sitter-c) - C++(
tree-sitter-cpp) - Java(
tree-sitter-java)
仕組み
AST MCP Server は、Model Context Protocol(MCP)を通じて Claude Desktop に接続します。
- 初期化:Claude Desktop は、適切な作業ディレクトリで
uv runを使用してサーバーを起動します - 言語の読み込み:サーバーは、さまざまなプログラミング言語を解析するための tree-sitter 言語モジュールを読み込みます
- MCP への登録:MCP プロトコルにツールとリソースを登録します
- 分析:Claude は、共有したコードやローカルファイルを分析するために、これらのツールにアクセスできます。ツールは堅牢に設計されており、提供されたコードがプレースホルダーの場合、ローカルの
filenameパスからインテリジェントに読み取ることができます。 - キャッシュ:パフォーマンス向上のため、結果はローカルにキャッシュされます
すべてのツールの実行はお使いのマシン上でローカルに行われ、結果は解釈や支援のために Claude に返されます。
設定ファイル
pyproject.toml:プロジェクトのメタデータ、依存関係、ツールの設定claude_desktop_config.json:Claude Desktop の設定例dev_server.sh:開発サーバーのスクリプト.gitignore:Git の無視ルール
ディレクトリ構成
ast-mcp-server/
├── ast_mcp_server/ # Main package
│ ├── __init__.py
│ ├── tools.py # Core AST/ASG tools
│ ├── enhanced_tools.py # Enhanced analysis features
│ ├── resources.py # MCP resource handlers
│ └── parsers/ # Tree-sitter parser cache
├── examples/ # Usage examples
├── tests/ # Test suite
├── server.py # Main server entry point
├── build_parsers.py # Parser setup script
├── pyproject.toml # Project configuration
└── README.md # This file
トラブルシューティング
パーサーの問題
パーサー関連のエラーが発生した場合:
# Rebuild parsers
uv run build-parsers
# Check for missing language packages
uv add tree-sitter-python tree-sitter-javascript
Claude Desktop の接続に関する問題
- Claude Desktop の設定で絶対パスを確認します
- uv がシステムの PATH に含まれていることを確認します
- Claude Desktop のログでエラーメッセージを確認します
- 設定を変更した後、Claude Desktop を再起動します
パフォーマンスの問題
- 大きなファイルにはインクリメンタル解析ツールを使用します
- 解析を繰り返す場合はキャッシュを有効にします
- より小さなコードセクションの分析を検討します
コントリビューション
- リポジトリをフォークします
- 機能ブランチを作成します:
git checkout -b feature-name - 適切なテストを含めて変更を加えます
- テストスイートを実行します:
uv run pytest - プルリクエストを送信します
開発ガイドライン
- PEP 8 のスタイルガイドラインに従います(black と flake8 によって適用されます)
- すべての公開関数に型ヒントを追加します
- すべてのモジュール、クラス、関数に docstring を記述します
- 新しい機能のテストを作成します
- 必要に応じてドキュメントを更新します
ライセンス
MIT License — 詳細は LICENSE ファイルを参照してください。
変更履歴
v0.2.0
- pyproject.toml の設定を追加
- uv との互換性を向上
- キャッシュシステムを強化
- インクリメンタル解析のサポートを追加
- 言語のサポートを拡充
- エラー処理とロギングを改善
v0.1.0
- 初回リリース
- 基本的な AST/ASG 解析
- Claude Desktop との統合
- Python と JavaScript をサポート
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。