/ ディレクトリ / プレイグラウンド / contextplus
● コミュニティ ForLoopCodes ⚡ 即起動

contextplus

作者 ForLoopCodes · ForLoopCodes/contextplus

コーディングエージェントにリポジトリの永続的セマンティックマップ(AST+エンベディング+メモリグラフ+シャドウ元に戻す機能)を提供し、コードベース全体の再読み込みを不要にします。

Context+(ForLoopCodes/contextplus)は、リポジトリ理解のための17個のツールを公開するTypeScript MCPサーバーです。tree-sitter ASTツリー、ファイルスケルトン、セマンティック識別子検索、影響範囲分析、長期プロジェクト向けメモリグラフ、安全な編集のためのシャドウリストアポイントを提供します。OllamaまたはクラウドエンベディングAPIに対応しています。

なぜ使うのか

主な機能

ライブデモ

実際の動作

contextplus.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ],
      "_inferred": true
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ],
      "_inferred": true
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "contextplus": {
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ],
      "_inferred": true
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "contextplus",
      "command": "npx",
      "args": [
        "-y",
        "contextplus"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "contextplus": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "contextplus"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add contextplus -- npx -y contextplus

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: contextplus

大規模リポジトリで新しいエージェントを素早く戦力化する方法

👤 Cursor/Claude Codeをモノレポで使用しているテックリード ⏱ ~20 min intermediate

使うタイミング: エージェントがコンテキストの30%をファイルの読み込みと再読み込みに浪費している場合。

前提条件
  • Node + bunまたはnpm — brew install bunまたはnpmを使用
  • エンベディングプロバイダー(Ollamaローカル、OpenAI、Gemini、またはGroq) — オフライン利用にはollama pull nomic-embed-textを実行
フロー
  1. コンテキストツリーを構築する
    リポジトリルートでget_context_treeを実行し、トップレベルのレイヤーを要約してください。✓ コピーしました
    → ファイルヘッダー付きASTツリー
  2. スケルトンのみ読み取る
    get_file_skeletonをsrc/auth/に対して使用し、シグネチャのみを確認してください。本文はまだ読まないこと。✓ コピーしました
    → 本文なしの関数シグネチャ
  3. セマンティックな質問をする
    semantic_identifier_search: 'JWT検証はどこに実装され、どこから呼ばれているか?'✓ コピーしました
    → ランク付きの実装箇所+コールサイト

結果: エージェントがコンテキスト使用量を約5分の1に削減しながら、リポジトリのメンタルモデルを持って作業できるようになります。

注意点
  • 初回インデックス作成が遅い — 初回スキャンは一度だけ実行すれば、以降の増分更新は高速です
  • インデックス作成時とクエリ時でエンベディングモデルが異なる — エンベディングモデルは一つに統一し、変更した場合は再インデックスしてください
組み合わせ: filesystem · github

シャドウリストアポイントを使った安全なリファクタリング方法

👤 エージェントにコードを編集させることに不安がある開発者 ⏱ ~15 min intermediate

使うタイミング: エージェントによる編集を行いたいが、gitを汚さずにワンクリックで元に戻したい場合。

フロー
  1. リストアポイントを作成する
    'before-auth-refactor'という名前のリストアポイントを作成してください。✓ コピーしました
    → ポイントIDが返される
  2. エージェントに編集させる
    propose_commit: JWT検証を新しいキーローテーションヘルパーを使用するようにリファクタリングしてください。✓ コピーしました
    → ファイル編集完了+バリデーション合格
  3. 問題があればロールバック
    undo_changeで'before-auth-refactor'まで戻してください。✓ コピーしました
    → ファイルが復元され、git履歴はクリーンなまま

結果: gitの履歴を汚さず、安心してリファクタリングを実行できます。

注意点
  • リストアポイントは.contextplus/に保存される — コミットしないこと — .contextplus/を.gitignoreに追加してください
組み合わせ: github

関数を削除する前に影響範囲を評価する方法

👤 不要コードを整理しているエンジニア ⏱ ~10 min intermediate

使うタイミング: シンボルを削除する前に、どこからインポート・使用されているかを正確に把握したい場合。

フロー
  1. 影響範囲を確認する
    src/pricing.tsの関数'legacyFormatPrice'に対してget_blast_radiusを実行してください。✓ コピーしました
    → インポートまたは呼び出しているすべてのファイル/行
  2. 削除計画を立てる
    各コールサイトについて、代替手段を提案してください。クリーンに置き換えられないサイトはリスクありとしてフラグしてください。✓ コピーしました
    → 移行チェックリスト

結果: 想定外のない削除PRを作成できます。

注意点
  • 動的インポート(require、文字列参照)は検出されない — 関数名に対するgrepパスで補完してください
組み合わせ: github

メモリグラフを使ってセッション間で意思決定を永続化する方法

👤 長期プロジェクトでエージェントを使用しているすべてのユーザー ⏱ ~15 min advanced

使うタイミング: 同じアーキテクチャ上の決定をエージェントに何度も説明し直している場合。

フロー
  1. メモリに記録する
    upsert_memory_node: '請求フローのトランザクション整合性のため、MongoDBではなくPostgresを選択した。'✓ コピーしました
    → エンベディング付きノードが作成される
  2. 関連付けを作成する
    create_relation: その決定をsrc/billing/*.tsにエッジタイプ'implements'でリンクしてください。✓ コピーしました
    → エッジが作成される
  3. 次のセッションで呼び出す
    search_memory_graph: 'なぜPostgresを使っているのか?'✓ コピーしました
    → 関連ファイルとともに意思決定が表示される

結果: チャットセッションを超えて永続する、耐久性のあるプロジェクトメモリを構築できます。

注意点
  • メモリグラフが古くなる — 月に一度prune_stale_linksを実行してください
組み合わせ: memory-service

組み合わせ

他のMCPと組み合わせて10倍の力を

contextplus + github

影響範囲分析の結果を使ってGitHubトラッキングイシューを作成する

LegacyAuthに対してget_blast_radiusを実行し、各コールサイトをチェックリスト項目としたGitHubトラッキングイシューを作成してください。✓ コピーしました
contextplus + memory-service

mcp-memory-serviceを共有ストアとして使い、長期的な意思決定をプロジェクト横断で永続化する

Context+が新しいアーキテクチャ上の決定を記録するたびに、mcp-memory-serviceにもミラーリングしてください。✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
get_context_tree root: str, depth?: int 新しいリポジトリセッションでの最初の呼び出し free
get_file_skeleton path: str 低コストなファイル概要の取得 free
semantic_code_search query: str, k?: int 意味でコードを検索する 1 embedding + 1 vector search
semantic_identifier_search query: str 関数/クラスの場所を特定する 1 vector search
get_blast_radius symbol: str, file?: str 削除/リネームの前に free
run_static_analysis path?: str 未使用コード+型エラーの検出 free
propose_commit files: Edit[] バリデーション付きで編集を適用する free
list_restore_points 利用可能なロールバックを確認する free
undo_change restore_point_id: str シャドウ編集を元に戻す free
upsert_memory_node content: str, tags?: str[] 永続的な事実を保存する 1 embedding
search_memory_graph query: str, traversal?: int 過去の意思決定を呼び出す 1 vector search

コストと制限

運用コスト

APIクォータ
エンベディングプロバイダーに依存:Ollamaは無料、OpenAIは約$0.02/100万トークン
呼び出しあたりのトークン
スケルトン読み取り:100〜500トークン。フル検索:500〜2000トークン
金額
無料(オープンソース)+クラウドプロバイダー使用時のエンベディングコスト
ヒント
Ollamaとnomic-embed-textを使用すれば、限界コストゼロで利用できます。

セキュリティ

権限、シークレット、影響範囲

最小スコープ: Filesystem read/write to the indexed repo
認証情報の保管: エンベディングプロバイダーのAPIキーは環境変数で管理
データ送信先: エンベディングは選択したプロバイダーに送信されます(Ollamaの場合はローカルに留まります)
絶対に付与しない: Do not index directories with secrets like .env

トラブルシューティング

よくあるエラーと対処法

Indexing is extremely slow(インデックス作成が非常に遅い)

大きなディレクトリ(node_modules、dist)を.contextplusignoreに追加し、Ollamaをローカルで使用してください。

Semantic search returns irrelevant results(セマンティック検索が無関係な結果を返す)

クエリが抽象的すぎます。具体的なシンボル名やファイル名のヒントを含めてください。

undo_change fails with 'point not found'(undo_changeが'point not found'で失敗する)

シャドウポイントはデフォルトでセッション単位です。コンフィグフラグでセッション間の永続化を有効にしてください。

Tree-sitter grammar missing for a language(言語のtree-sitterグラマーが見つからない)

サポート対象の拡張子リストを確認してください。未対応の型のファイルはスキップされますが、プレーンテキストとしてインデックスされます。

代替案

contextplus 他との比較

代替案代わりに使う場面トレードオフ
mcp-language-serverエンベディングベースの検索よりもLSPセマンティクス(リネーム、参照検索)を使いたい場合メモリグラフなし、シャドウ元に戻す機能なし
codebase-memory-mcpファイル単位のスケルトンよりもナレッジグラフビューを好む場合インデックス構造が異なる。66言語対応

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る