Sourcerer Mcp について
Sourcerer MCP は、セマンティックなコード検索とナビゲーションを行う MCP サーバーです。トークン消費を抑えたいコーディングエージェント向けに、Tree-sitter でコードをチャンクに分割し、ファイル全体を読まずに関数やクラスへ直接たどり着けるようにします。
主な機能
- 01Tree-sitter によるコードの解析とチャンク化
- 02埋め込みを用いた概念ベースの検索
- 03安定した ID によるチャンクの取得
- 04類似チャンクの検索
- 05ファイル変更時の自動再インデックス
- 06gitignore ルールへの対応
活用シーン
- 01大規模なコードベースで関連する関数を特定する
- 02コーディングエージェントのトークン消費を抑える
- 03既存コードと類似する実装を探す
MCP 対応
semantic_search、get_chunk_code、find_similar_chunks、index_workspace、get_index_status などのツールを MCP クライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Sourcerer MCP 🧙
AI エージェントが高価なトークンを消費せずに効率よく作業できるよう支援する、セマンティックコード検索・ナビゲーション用の MCP サーバーです。 ファイル全体を読む代わりに、エージェントは概念的に検索し、必要な特定の関数、クラス、コードチャンクに直接移動できます。
デモ
要件
- OpenAI API Key:埋め込みの生成に必要です(ローカルでの埋め込み生成は今後対応予定です)
- Git:Git リポジトリである必要があります(
.gitignoreファイルを尊重します) .sourcerer/を.gitignoreに追加:このディレクトリには埋め込みベクトルデータベースが保存されます
インストール
Go
go install github.com/st3v3nmw/sourcerer-mcp/cmd/sourcerer@latest
Homebrew
brew tap st3v3nmw/tap
brew install st3v3nmw/tap/sourcerer
設定
Claude Code
claude mcp add sourcerer -e OPENAI_API_KEY=your-openai-api-key -e SOURCERER_WORKSPACE_ROOT=$(pwd) -- sourcerer
mcp.json
{
"mcpServers": {
"sourcerer": {
"command": "sourcerer",
"env": {
"OPENAI_API_KEY": "your-openai-api-key",
"SOURCERER_WORKSPACE_ROOT": "/path/to/your/project"
}
}
}
}
仕組み
Sourcerer 🧙 は、コードベースのセマンティック検索インデックスを構築します。
1. コードの解析とチャンク分割
- Tree-sitter を使用して、ソースファイルを AST に解析します
- 意味のあるチャンク(関数、クラス、メソッド、型)を安定した ID で抽出します
- 各チャンクには、ソースコード、位置情報、コンテキストを示す要約が含まれます
- チャンク ID は
file.ext::Type::methodの形式です
2. ファイルシステムとの統合
fsnotifyを使用してファイルの変更を監視しますgit check-ignoreを介して.gitignoreファイルを尊重します- 変更されたファイルを自動的に再インデックスします
- 変更時刻を追跡するためのメタデータを保存します
3. ベクトルデータベース
.sourcerer/db/に永続的なベクトルストレージを構築するため、chromem-go を使用します- OpenAI の API を介して埋め込みを生成し、セマンティックな類似性を実現します
- 単なるテキスト一致ではなく、概念に基づく検索を可能にします
- チャンク、埋め込み、メタデータを保持します
4. MCP ツール
semantic_search:セマンティック検索で関連するコードを見つけますget_chunk_code:ID を指定して特定のチャンクを取得しますfind_similar_chunks:類似したチャンクを見つけますindex_workspace:再インデックスを手動で開始しますget_index_status:インデックス作成の進捗を確認します
この方法により、AI エージェントはファイル全体を読まずに関連するコードを見つけられるため、 トークンの使用量と認知負荷を大幅に削減できます。
対応言語
各言語の関数、クラス、インターフェース、その他のコード構造を識別するには、Tree-sitter クエリを記述する必要があります。
対応済み: Go、JavaScript、Markdown、Python、TypeScript
対応予定: C、C++、Java、Ruby、Rust など
コントリビューション
すべてのコントリビューションを歓迎します!CONTRIBUTING.md をご覧ください。
$ ls @stephenmwangi.com
- gh:st3v3nmw/obsidian-spaced-repetition
- gh:st3v3nmw/lsfr
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。