Grasp — Code Architecture & Dependency Analysis について
Grasp は、Claude Code などの LLM エージェント向けのコードベース分析 MCP サーバーで、GitHub リポジトリとローカルディレクトリに対応します。依存関係グラフ、アーキテクチャ階層、セキュリティチェック、リファクタリング計画を提供し、大規模なコードベースの構造を把握したい開発者やチームを対象としています。
主な機能
- 01依存関係グラフと循環依存の検出
- 02アーキテクチャ階層とホットスポット分析
- 03セキュリティ問題と依存関係の CVE スキャン
- 04リファクタリング提案と段階的な計画
- 05GitHub と GitLab リポジトリへの対応
活用シーン
- 01ファイル変更時の影響範囲の見積もり
- 02コードベース全体のアーキテクチャルール違反の確認
- 03段階的なリファクタリング計画の作成
- 04依存関係の既知の CVE スキャン
MCP 対応
Grasp は MCP サーバーとして動作し、grasp_analyze、grasp_dependents、grasp_security などの分析ツールを Claude Code などのクライアントに公開します。Streamable HTTP で複数人のチームからの共有アクセスも提供できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Grasp MCP サーバー
Grasp のコードベース解析エンジンを、Claude Code やその他の LLM エージェント向けの MCP ツールとして公開します。
GitHub リポジトリとローカルディレクトリをサポートします。依存関係グラフ、アーキテクチャレイヤー、循環依存、セキュリティ問題、デザインパターン、デッドコード、コードメトリクス、git 履歴、重複検出、リポジトリ間の比較、モノレポのワークスペース、実行時コールグラフ、データベーススキーマの結合、API サーフェスマップ、移行計画を分析します。
力学モデルによる依存関係グラフ — MCP サーバーが grasp_analyze、grasp_dependents、graph_query などを通じて公開するのと同じデータです。
目次
- セットアップ
- Claude Code での設定
- ツール
- 使用例
- GitHub トークン
- GitLab サポート
- CLI
- JetBrains プラグイン
- Claude Code スラッシュコマンド
- プライバシー
現在のバージョン: 3.21.0 — 150 個のツール + 8 個の MCP リソース + 2 個のガイド付きプロンプト。
v3.21.0 の新機能 — マルチモーダルナレッジグラフ: あらゆる成果物(コード、Markdown、PDF、Word .docx、Excel .xlsx、HTML、OCR 経由の画像、ローカル Whisper 経由の音声・動画、YouTube)を取り込み、クエリ可能なセマンティックナレッジグラフに変換し、自然言語で問い合わせることができます。新しいツール: grasp_ingest、grasp_kg_ask、grasp_kg_trace、grasp_kg_explain、grasp_kg_stats、grasp_kg_export(Cypher/Neo4j/GraphML/JSON/Mermaid)、grasp_llm_status。プラグイン可能な LLM バックエンド(Anthropic、OpenAI、Gemini、DeepSeek、Kimi、Azure、Bedrock、Ollama — ローカル優先、クラウドはオプトイン。抽出は資格情報ゼロの決定論的ローカル抽出器にフォールバックします)。チーム共有アクセス用のオプションの MCP-over-HTTP トランスポート(GRASP_HTTP_MCP=1、オプションの API キー)。3 つの新しい AST 言語(Bash、Elixir、Julia → tree-sitter ベースで 19 言語に)。以下の ## Multimodal Knowledge Graph を参照してください。
v3.20.0 で追加: 完全なセキュリティスキャン suite — grasp_vulnerabilities は 5 つの脅威ベクトル(OSV.dev の依存関係 CVE、NIST NVD のコンテナ/ランタイム CVE、ローカルサプライチェーン整合性チェック、Socket.dev の行動分析、およびスケジュールされた grasp_vuln_watch モニタリング)をカバーし、さらに skip_container / skip_socket / skip_integrity の高速スキャンフラグを備えています。
v3.19.0 で追加: Grasp アプリと視覚的に同等な Team Dashboard — teal ブランドの全面適用、Lucide SVG アイコンシステム、マルチプロバイダー認証(GitLab、GitHub Enterprise、Bitbucket、Azure DevOps、Gitea)、モバイル用 More メニュー、キーボードショートカットのポップオーバー。
v3.18.0 で追加: 10 個の新しい MCP ツール(grasp_hub_nodes、grasp_bridge_nodes、grasp_surprising_connections、grasp_knowledge_gaps、grasp_suggested_questions、grasp_minimal_context、grasp_traverse、grasp_semantic_search、grasp_apply_refactor、grasp_architecture_overview)、3 つのグラフエクスポート形式(grasp_export_graphml、grasp_export_cypher、grasp_export_obsidian)、TS 設定のパスエイリアスおよび Jedi スタイルの Python インポートリゾルバー、Claude Code スラッシュコマンド、トークン削減評価ハーネス(scripts/eval-token-reduction.mjs)、ローカライズされた README(ヒンディー語/日本語/韓国語/簡体字中国語)。
最近の追加 (完全な履歴は CHANGELOG.md を参照):
- v3.17.1 — OSV スキャナーにおけるディレクトリごとのロックファイルスコープ設定、テストフィクスチャのマニフェストをスキップ、CWS トークンローテーションスクリプト。
- v3.17.0 — OSV.dev SCA スキャナー(
grasp_vulnerabilities+grasp vulnsCLI)、アーキテクチャドリフト検出(grasp_snapshot+grasp_diff_snapshots+grasp driftCLI)、組織レベルのダッシュボード(grasp_org_summary+grasp orgCLI)、テストカバレッジギャップマップ、グラフスキーマ v3(TestFile ノード、TESTS/COVERS エッジ)。 - v3.16.0 — PR Impact GitHub Action、Brain コンテキストツール(
grasp_diff_symbols、grasp_exec_flow、grasp_skillmd、grasp_hooks、grasp_mro、grasp_communities、grasp_contracts)、信頼度スコアリング、wiki ジェネレーター、レジストリツール。 - v3.15.0 — Kuzu グラフスキーマ v2、ファイル間の型伝播、ORM トラッカー、
grasp_detect_changes、8 個の MCP リソース、2 個の MCP プロンプト、grasp setupワンコマンドエディター自動設定。
v3.15 より前に提供された業種別ソリューション: 航空宇宙/安全クリティカル(要件トレーサビリティ、MISRA、DO-178C、ECSS-E-ST-40C、Ada/SPARK)、AI 研究(安全制約のトレーシング、評価カバレッジ、ML パイプライン DAG、Jupyter ノートブック)、エンタープライズ(SBOM CycloneDX/SPDX、DORA、AI を活用した ADR、PII トレース、職務分掌、ファイナンスのレイテンシー / モデルリスク)、OS/カーネル(サブシステム境界、ABI 安定性、Kconfig、IRQ グラフ、パッチシリーズの影響)、オープンソース(good-first-issues、フォークの分岐、OpenSSF スコアカード、deps.dev)、およびホスト型 SaaS API(saas/)。
来歴の検証
すべてのリリースは署名されています。インストール前に検証してください:
npm パッケージ (SLSA 来歴):
npm install -g @sigstore/verify # one-time
sigstore verify npm [email protected]
Docker イメージ (Cosign キーレス署名):
cosign verify \
--certificate-identity-regexp="https://github.com/ashfordeOU/grasp/.github/workflows/publish.yml" \
--certificate-oidc-issuer="https://token.actions.githubusercontent.com" \
ghcr.io/ashfordeou/grasp:v3.21.0
署名は Sigstore Rekor の公開台帳に透過的に保存されます。
マルチモーダルナレッジグラフ
コード解析にとどまらず、Grasp はあらゆる成果物を取り込み、クエリ可能なセマンティックナレッジグラフを構築し、引用付きで根拠づけられた自然言語の質問に回答できます。
// Ingest a folder of docs, a PDF, or a URL (incl. YouTube)
grasp_ingest { "source": "./docs" }
grasp_ingest { "source": "/papers/spec.pdf" }
grasp_ingest { "source": "https://youtu.be/…" } // local Whisper transcription
// Ask it
grasp_kg_ask { "question": "How does auth flow through the billing service?" }
grasp_kg_trace { "from": "Auth", "to": "Postgres" } // shortest relationship path
grasp_kg_explain { "name": "Billing Service" } // neighbourhood + sources
grasp_kg_stats {} // counts + god-nodes
grasp_kg_export { "format": "cypher", "out_path": "kg.cypher" } // Neo4j/FalkorDB
ローカルファースト、クラウドはオプトイン。 コード解析は決定論的 (tree-sitter AST) のままです。セマンティックなエンティティ/リレーションシップの抽出には、設定した任意の LLM を使用し、クラウドのキーより先にローカルの Ollama を自動検出します。LLM がまったくない場合は決定論的な抽出器にフォールバックするため、すべてがオフラインでも動作します。すべてのエッジはEXTRACTED (ソースに明記) とINFERRED (導出) のタグが付き、ソースの位置情報も含まれます。
| バックエンド | 環境変数 |
|---|---|
| Ollama (ローカル、デフォルト) | localhost:11434 で動作 — 他に何も必要ありません |
| Anthropic / OpenAI / Gemini / DeepSeek / Kimi | ANTHROPIC_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY / DEEPSEEK_API_KEY / MOONSHOT_API_KEY |
| Azure OpenAI / AWS Bedrock | AZURE_OPENAI_* / AWS_* |
GRASP_LLM_PROVIDER + GRASP_LLM_MODEL で明示的に選択するか、呼び出しごとに provider/model/api_key ツール引数で指定します。利用可能なものを確認するには grasp_llm_status を実行してください。
オプションのパーサー (オンデマンドでインストールされ、コアインストールを軽量に保ちます): npm i pdf-parse mammoth xlsx tesseract.js youtube-transcript。音声/動画の文字起こしには追加で PATH 上の ffmpeg が必要です。
チームでの共有アクセス (HTTP 上の MCP)
GRASP_HTTP_MCP=1 GRASP_HTTP_API_KEY=… grasp-mcp # serves Streamable HTTP on :7333/mcp
任意の MCP クライアントを http://host:7333/mcp に向けてください (キーは Authorization: Bearer … または x-api-key として送信します)。/health は稼働状態を返します。Grasp のツールはステートレスなので、1 つのエンドポイントでチームのエージェント全体にサービスを提供できます。
配置場所
マルチモーダルパイプラインは MCP サーバー側 (Node) であり、ブラウザアプリでは実行されません — mcp/src/ 以下のソースレイアウトを参照してください:
ingest/*— 成果物パーサー (PDF、Word.docx、Excel.xlsx、HTML、画像 OCR、音声/動画、URL、YouTube; 重いパーサーはオンデマンドで遅延読み込み)llm/provider.ts— プラグイン可能なマルチプロバイダー LLM レイヤー (ローカルファーストの Ollama 自動検出 → クラウドキー → 決定論的フォールバック)semantic/*— SQLite ナレッジグラフストア、ハイブリッド BM25 + ベクトル検索、BFS パス探索、ハブ/ゴッドノード検出tree-sitter/*— 19 言語にわたる決定論的な AST 解析
セットアップ
cd mcp
npm install
npm run build
Claude Code での設定
~/.claude/claude_mcp_settings.json に追加します:
{
"mcpServers": {
"grasp": {
"command": "node",
"args": ["/absolute/path/to/grasp/mcp/dist/index.js"]
}
}
}
または npm でグローバルにインストールします:
{
"mcpServers": {
"grasp": {
"command": "npx",
"args": ["grasp-mcp-server"]
}
}
}
ツール
コア解析
| ツール | 説明 |
|---|---|
grasp_analyze | 完全な解析 — 最初に実行し、session_id を返します |
grasp_file_deps | ファイルの外向き依存関係 (何をインポートしているか) |
grasp_dependents | 内向き依存関係 — このファイルを変更した場合の影響範囲 |
grasp_cycles | すべての循環依存チェーン |
grasp_architecture | レイヤー別にグループ化されたファイル (services/data/utils/test…) |
grasp_hotspots | 最も結合度が高く複雑なファイルのランキング |
grasp_metrics | ファイルごとの行数、関数数、複雑度、ファンイン/ファンアウト |
grasp_find_path | 2 つのファイル間の最短依存パス |
grasp_security | ハードコードされたシークレット、SQL インジェクションのリスク、安全でないパターン |
grasp_patterns | 検出されたデザインパターンとアンチパターン |
grasp_unused | デッドコード — 定義されているが一度も呼び出されない関数 |
grasp_sessions | 永続化された解析セッションの一覧 — 再起動後も保持され、7 日後に失効します |
grasp_config_check | セッションに対して grasp.yml のアーキテクチャルールを実行 — 重大度付きで違反を返します |
履歴と比較
| ツール | 説明 |
|---|---|
grasp_diff | 2 つのセッションスナップショットを比較 — 追加/削除されたファイル、ヘルスデルタ |
grasp_watch | ローカルディレクトリを再分析し、以前のセッションと差分を取ります |
grasp_timeline | 直近 N 件の git コミットと、コミットごとの変更ファイルおよび共変更マトリクス |
grasp_cross_repo | 2 つのセッションを比較 — 共有ファイル名、分岐した関数、ワークスペース情報 |
grasp_similarity | ランク付けされた重複クラスタ、コードクローン、命名の衝突、最もホットなファイル |
コード品質
| ツール | 説明 |
|---|---|
grasp_suggest | ホットスポットと issue データに基づく、ランク付けされたリファクタリング提案 |
grasp_explain | 任意のファイルまたは関数を平易な英語で説明 |
grasp_rules_check | アーキテクチャルールを実行し、すべての違反を報告 |
grasp_refactor | ファイルまたはセッションのメトリクス表を伴う、段階的なリファクタリング計画 |
grasp_coverage | テストカバレッジのオーバーレイ — 対応するテストが存在しないファイル |
grasp_vulnerabilities | OSV.dev SCA スキャナー — 宣言された依存関係(npm/PyPI/Go/Cargo/Maven)に含まれる既知の CVE。重要度分類(CVSS)、修正バージョンの提案、重要度フィルター(all/critical/high/medium/low)。grasp vulns <path> CLI と組み合わせて使用(critical/high で終了コード 1)— v3.17.0 の新機能 |
エコシステム統合
| ツール | 説明 |
|---|---|
grasp_issues | GitHub Issues を、それらが言及しているファイルにマッピング |
grasp_contributors | ファイルごとのオーナーシップ、バスファクタースコア、上位のコントリビューター |
grasp_bundle | バンドルサイズのツリーマップ — カテゴリ別の内訳を伴う、サイズ順にランク付けされたファイル |
grasp_dep_impact | 依存関係をアップグレードした場合の影響 — どのファイルがそれをインポートしているか |
grasp_pr_comment | 変更されたファイルのブラストラディアスを伴う PR ヘルスコメントを生成 |
grasp_embed | 共有用の iframe、README バッジ、React スニペットを生成 |
grasp_dead_packages | package.json で宣言されているが、どのソースファイルからもインポートされていない npm 依存関係 |
grasp_sarif | GitHub Code Scanning へのアップロード用に、分析結果を SARIF 2.1.0 としてエクスポート |
ランタイムとインフラストラクチャのインテリジェンス
| ツール | 説明 |
|---|---|
grasp_runtime_calls | GraspTracer の JSON トレースを静的エッジとマージ — 実際の呼び出しパスとホットなファイルを表示 |
grasp_db_coupling | ORM/SQL とテーブルの結合マップ — 神テーブル、結合度の高いファイル、共有テーブルクラスタ |
grasp_migration_plan | パッケージ/モジュールを置き換えまたは削除するための、段階的でトポロジカル順に並んだ計画 |
grasp_api_surface | OpenAPI 仕様、GraphQL SDL、Express/FastAPI/Next.js ルートから統合された API サーフェスマップ |
GitHub アクティビティ
| ツール | 説明 |
|---|---|
grasp_commits | 直近 7 日間と 30 日間のコミット数、および指定されたタイムスタンプ以降のコミット(最後の分析からの経過期間) |
grasp_ci_status | 最新の GitHub Actions 実行 — 成功/失敗/進行中、および最近の実行履歴 |
コードベースインテリジェンス (v2.4–v2.9)
| ツール | 説明 |
|---|---|
grasp_env_vars | すべての環境変数読み取りをスキャン — .env.example と照合し、未文書化およびテスト専用の変数にフラグを立てます |
grasp_events | イベントエミッターとサブスクライバーをマッピング — 孤立した emit (リスナーなし) とゴーストサブスクリプション (エミッターなし) を検出します |
grasp_stale | アクティブだが放置されたファイルを検出 — 低い変更頻度、高いファンイン、対応するテストなし。陳腐化スコア 0~100 を返します |
grasp_change_risk | 変更されたファイル群のリスクスコア 0~100 — ブラスト半径、複雑度、変更頻度、レイヤー違反を統合します |
grasp_feature_flags | すべてのフィーチャーフラグの読み取りを検出 — LaunchDarkly、GrowthBook、OpenFeature、環境変数フラグ、カスタムパターンに対応 |
grasp_perf | N+1 クエリ、同期 I/O 呼び出し、ループ内の JSON シリアライゼーションを検出します |
grasp_license | node_modules の依存関係ライセンスをスキャン — 寛容型、コピーレフト、不明を報告し、違反にフラグを立てます |
grasp_onboard | コードベースの特定領域に新しく入るエンジニア向けの順序付き読解パス — レイヤーとファンインでソートします |
grasp_types | ファイルごとの型注釈カバレッジ — 型がないファンインの高いファイルを優先します |
grasp_diagram | 依存関係グラフから Mermaid フローチャートまたは C4 図 (コンテキスト、コンテナ、コンポーネントレベル) を生成します |
grasp_pr_review | GitHub PR の高重要度行にインラインレビューコメントを投稿 — ブラスト半径、複雑度、セキュリティ |
grasp_suggest | 労力対効果比を付けたランク付きリファクタリング提案 — ROI の高い順にソートします |
航空宇宙 / セーフティクリティカル
| ツール | 説明 |
|---|---|
grasp_req_trace | 要件トレーサビリティ — コード内の @REQ-NNN タグを要件 CSV と照合してスキャンし、カバレッジ %、カバー済み、未カバー、未指定のファイルを返します |
grasp_anomaly | 異常調査 — 呼び出し元、呼び出し先、推移的ブラスト半径 (BFS 50 ファイル)、呼び出しチェーン内のセキュリティ、平易な英語による要約。インシデント対応向け |
grasp_reuse | ソフトウェア再利用アセスメント — インターフェース互換性、依存関係、セキュリティ、アーキテクチャ適合性にわたる赤/黄/緑のマトリクス |
AI 研究 / AI セーフティ
| ツール | 説明 |
|---|---|
grasp_safety_trace | 安全制約トレーサー — 安全ゲート、エントリーポイント、出力ポイントをマークし、すべてのゲートをバイパスするすべての entry→output パスを返します (ゲートなしパス = クリティカル) |
grasp_run_diff | トレーニング実行の差分 — 2 つの YAML/JSON 設定を比較し、変更されたハイパーパラメータと、変更された各キーを読み取るコードファイルを検出します |
grasp_eval_coverage | 評価カバレッジマップ — 評価スクリプトからインポートを経由する BFS トレース。カバレッジ % を表示し、未カバーのファイルをリストし、評価カバレッジのない安全ゲートにフラグを立てます |
エンタープライズ / コンプライアンス
| ツール | 説明 |
|---|---|
grasp_sbom | SBOM 生成 — CycloneDX 1.4 または SPDX 2.3 JSON。package.json、requirements.txt、Cargo.toml、go.mod、pyproject.toml を解析します。オプションの CVE エンリッチメント。 |
grasp_dora | DORA メトリクス — GitHub Actions と PR 履歴によるデプロイ頻度、変更のリードタイム、変更失敗率。Elite/High/Medium/Low の階層。 |
grasp_adr | AI を活用した ADR 生成 — コードベースのコンテキスト + オプションの PR 差分を用いた MADR 形式のアーキテクチャ決定記録。任意の AI Chat プロバイダーをサポートします。 |
マルチリポジトリ / プラットフォーム (v3.4.x)
| ツール | 説明 |
|---|---|
grasp_org_graph | 組織レベルのマルチリポジトリ依存関係グラフ — N 個のセッションをリポジトリ間エッジと共有ライブラリを備えた 1 つの組織ビューにマージします |
grasp_api_diff | 破壊的 API 変更検出 — 2 つのセッション間でエクスポートされたシンボルを比較し、削除/変更されたシグネチャにフラグを立てます |
grasp_plugins | 拡張ポイントマップ — コードベース全体にわたるプラグインインターフェース、フックポイント、ストラテジーパターンを検出します |
grasp_semver | セマンティックバージョニング施行 — 2 つのセッションを比較し、semver のバンプが変更セットに対して正しいかを検証します |
財務 / コンプライアンス (v3.5.x)
| ツール | 説明 |
|---|---|
grasp_pii_trace | PII データフロートレーサー — ユーザーが指定した PII ソースファイルから下流へ BFS で走査し、すべての利用元を表示します |
grasp_duties | 職務分掌バリデータ — トランザクションを起票しかつ承認するファイルを検出します (SOX/FDA コンプライアンス) |
grasp_reg_impact | 規制変更影響マッパー — GDPR/HIPAA/SOX/PCI-DSS の条文変更に対するキーワードから影響範囲へのマッピング |
grasp_latency | 財務/トレーディングのレイテンシーホットスポット検出 — ブロッキング I/O、GC 負荷、ロック競合、ループ内のアロケーション |
grasp_model_risk | 財務モデルリスク監査 — ハードコードされたパラメータ、NaN チェックの欠落、ゼロ除算ガードのない除算 |
OS / カーネル (v3.6.x)
| ツール | 説明 |
|---|---|
grasp_subsystems | カーネル/OS サブシステム境界マップ — ディレクトリ単位のグルーピング、サブシステム間依存関係の違反 |
grasp_abi_diff | ABI/API 安定性チェッカー — セッション間でエクスポートされたシンボルを比較し、安定性スコアを 0〜100 で算出 |
grasp_kconfig | Kconfig/ビルド時の条件分岐分析 — CONFIG_* の使用マップ、50 ファイル超に影響する高リスクなトグル |
grasp_irq | IRQ/割り込み依存関係グラフ — 割り込みハンドラー内の動的アロケーション、ブロッキング呼び出し、ファンアウト |
grasp_patch_impact | パッチシリーズ影響アナライザー — カーネルコードレビュー向けに、影響範囲と複雑さでパッチをランク付け |
オープンソース (v3.7.x)
| ツール | 説明 |
|---|---|
grasp_good_first_issues | Good first issue ジェネレーター — 分離され、低複雑度で、テストされていないファイルを GitHub issue のドラフトテキスト付きで提示 |
grasp_api_stability | 2 つのセッション間の API 安定性スコア (0〜100) — ライブラリ作者向けに破壊的変更率を追跡 |
grasp_dependents | 世の中の依存元 — deps.dev に問い合わせて公開パッケージの依存元数を取得 |
grasp_fork_diff | フォーク差分分析 — 分岐/同一/フォーク固有のファイルとマージ時の影響範囲 |
Ada / ヘリテージ (v3.8.x)
| ツール | 説明 |
|---|---|
grasp_multilang | クロスランゲージコールグラフ — Ada→C の pragma Import、Python の ctypes/cffi、JS→WASM の境界 |
grasp_heritage | ヘリテージソフトウェアの系譜 — 起源ミッションのマニフェストを重ね合わせ、ゼロ差分の認証ショートカットを特定 |
grasp_icd | ICD マッパー — Interface Control Document のエントリをエクスポートされた関数に照合し、未実装のインターフェースを指摘 |
grasp_ecss | ECSS-E-ST-40C コンプライアンスチェッカー — DI-01 ヘッダー、DI-04 ドキュメント、DI-07 テスト、DI-10 循環なし、DI-15 デッドコードなし |
グラフツール (v3.11.0 で新登場)
| ツール | 説明 |
|---|---|
graph_query | Grasp の関数レベルのコールグラフに対して読み取り専用の Cypher クエリを実行 |
call_chain | 名前付き関数から呼び出し元/呼び出し先を N ホップたどる |
type_propagation | 指定した型を返すすべての関数と、その呼び出しの隣接関係を検出 |
function_graph | 関数のサブグラフを Mermaid、DOT、または JSON としてレンダリング |
先に grasp_brain_index を実行する必要があります。
例: AuthToken を返すものを最終的に呼び出すすべての関数を検出する:
MATCH (f:Function)-[:CALLS*1..3]->(g:Function)
WHERE g.returnType CONTAINS 'AuthToken'
RETURN f.name, g.name, g.returnType
ブレイン & 永続インテリジェンス (v3.10+)
| ツール | 説明 |
|---|---|
grasp_brain_index | リポジトリを永続的な SQLite ブレインストア (~/.grasp/brain.db) にインデックス化します — ファイル、関数、エッジ、ヘルス、セキュリティ、レイヤー。さらに FTS インデックス、384D ベクトル埋め込み、実行フロープロセスタグも構築します |
grasp_brain_status | ブレインにインデックス化されたすべてのリポジトリを一覧表示します: ソース、ファイル数、インデックス日時のタイムスタンプ、ヘルススコア |
grasp_context | ブレインから任意のファイルに関する豊富なコンテキストを取得します: レイヤー、複雑度、結合度、チャーン、グレード、最大 20 件の依存関係/被依存関係、セキュリティ問題 — 再分析なしで即時取得 |
grasp_arch_diff | 現在のコードベースをブレインのベースラインと比較します: グレードの後退、ヘルスの差分、前回のインデックス以降の新しいセキュリティ問題 |
grasp_ask | ブレインストアに対する自然言語の質問 — AI キーは不要です。インテントを認識します: 複雑度 · 結合度 · セキュリティ · ブラスト半径 · レイヤー · グレード · チャーン · 循環。ハイブリッドセマンティック検索 (BM25 + ベクトル) にフォールバックします |
grasp_diff_symbols | git diff のハンク → 関数をマッピングします。PR で変更されたすべての関数のブラスト半径と複雑度を返します |
grasp_exec_flow | 任意のエントリーポイントからの BFS 実行フロー — STEP_IN_PROCESS エッジで呼び出しパスをトレースし、Mermaid フローチャートを出力します |
grasp_skillmd | AI エージェント向けの SKILL.md / CLAUDE.md スニペットを自動生成します — レイヤー、主要ファイル、ヘルスグレード、パターン、セキュリティ検出事項 |
grasp_hooks | ファイル編集のたびにコンテキストを自動注入するための .claude/settings.json の PostToolUse フックと .cursor/rules/grasp.mdc を生成します |
grasp_mro | メソッド解決順序 — Python の多重継承に対する C3 線形化、Ruby および Java の階層に対する MRO |
grasp_communities | Kuzu グラフ上での Leiden/Louvain コミュニティ検出 — 凝集度の高いクラスター、境界づけられたコンテキスト、マイクロサービス分割の候補 |
grasp_contracts | マルチリポジトリのコントラクト分析 — リポジトリ間のプロバイダーのエクスポートとコンシューマーのインポート、違反、カバレッジ % |
grasp_confidence | すべてのファイル間接続を 0〜1 でスコアリングします: 明示的なインポート = 1.0 · 同一フォルダ = 0.8 · フォルダ間 = 0.6 · 低頻度 = 0.4 |
grasp_wiki | markdown wiki を自動生成します: index.md の概要、フォルダごとに 1 ページ、呼び出し元数でソートされた api.md |
grasp_registry_list | Grasp Brain レジストリ内のすべてのリポジトリを、ヘルスグレード、ファイル数、関数数、アクティブなセッション ID とともに一覧表示します |
grasp_registry_status | レジストリのヘルスサマリー: インデックス化されたリポジトリの総数、アクティブなセッション数、グレード分布 (A/B/C/D/F) |
grasp_resolve_receiver | すべてのメソッド呼び出しについて具象クラスを解決します — Python、JavaScript、Java、Ruby の self/this 推論 |
grasp_service_graph | OpenTelemetry トレースからサービス依存関係グラフを構築します — ノードはサービス、エッジはレイテンシとエラー率を伴う呼び出しパス |
grasp_jira_issues | リポジトリの Jira 課題を取得し、それらをファイルにマッピングします — どのファイルに未解決のバグが最も多いかを特定します |
grasp_deps_dev | 任意の npm/PyPI/Go パッケージについて、deps.dev に公開されている依存先数、OpenSSF スコアカード、依存関係のヘルスを照会します |
セマンティック検索とリネーム (v3.14+)
| ツール | 説明 |
|---|---|
grasp_search | ブレインインデックスに対するハイブリッドセマンティック検索 (BM25 FTS5 + 384D ベクトル埋め込みを Reciprocal Rank Fusion で統合)。結果には processes[] フィールドが含まれ、実行フローごとにマッチをグループ化します。@groupName によるファンアウトをサポート |
grasp_rename | ブレインインデックス内のすべてのファイルにわたる、グラフ認識型の単語単位シンボルリネーム。apply: false (デフォルト) はドライラン diff を返し、apply: true は変更をディスクに書き込みます |
grasp_route_map | HTTP ルート定義 (Express/Fastify/Hono、FastAPI/Flask、Gin) をスキャンし、各ルートをファイル位置とともに対応するハンドラー関数へマッピングします |
grasp_api_impact | ルートまたはハンドラー名を指定すると、ブレイングラフのエッジを使用してすべての呼び出し元、下流サービス、影響範囲を返します |
grasp_tool_map | MCP ツール定義 (server.tool / server.registerTool) と gRPC サービス定義をスキャンし、サービスコントラクトマップを返します |
grasp_shape_check | 任意の関数について、ブレインインデックスからすべての呼び出し箇所にわたってパラメーター型と戻り値の型を追跡し、呼び出し箇所の不一致を報告します |
grasp_group_add | ~/.grasp/groups.json 内の名前付きグループにリポジトリソースを追加し、マルチリポジトリのファンアウトを可能にします |
grasp_group_list | ~/.grasp/groups.json からすべての名前付きグループとそのメンバーリポジトリを一覧表示します |
グラフインテリジェンス (v3.15.0)
| ツール | 説明 |
|---|---|
grasp_graph_schema | Kuzu スキーマ v3 のイントロスペクション — すべてのノード/エッジテーブル定義 (File、Function、Class、Interface、Method、Constructor、TestFile + TESTS や COVERS を含む 12 種類のエッジ型) を、テーブルごとのライブ行数とともに表示します |
grasp_type_propagation | トポロジカル伝播によるファイル間の型推論 — インポートグラフ (Kahn のアルゴリズム) をたどり、すべての呼び出し箇所で戻り値の型を推論します。信頼度 0〜1 の上位 20 件の推論型を返します |
grasp_orm_map | ORM クエリトラッカー — Prisma、TypeORM、Sequelize、SQLAlchemy のパターンを検出します。結果はモデルごとにグループ化され、呼び出し箇所、操作、頻度を含みます。orm_filter パラメーターでフィルタリングできます |
grasp_detect_changes | Git diff → シンボル影響マップ。scope: unstaged · staged · all · compare (base_ref を伴う)。変更されたファイル、行範囲付きの影響を受ける関数、影響を受けるプロセスフロー、リスクレベル (LOW · MEDIUM · HIGH · CRITICAL) を返します |
grasp_generate_agents_md | ブレインのセッションデータから、リポジトリルートにリッチな AGENTS.md を生成します — 主要ファイルを含む上位 5 つの機能コミュニティ、エントリーポイントを含む上位 3 つの実行プロセス、ヘルスグレード、上位の課題 |
grasp_generate_skills | コミュニティごとのスキルファイル — 検出された各機能クラスターに対して .claude/skills/generated/<community>.md を書き込みます。各スキルには主要ファイル、エントリーポイント、エリア間の依存関係、一般的な操作が含まれます |
v3.20.0 — チームダッシュボードのパリティ
チームダッシュボードが Grasp アプリと完全な視覚的・UX 的パリティを実現しました — ティールのブランドトークン、全体を通した Lucide SVG アイコン、localStorage キーを共有するマルチプロバイダー認証 (GitLab、GitHub Enterprise、Bitbucket、Azure DevOps、Gitea)、≤860px でのモバイル More メニュー、認証バーの flex-wrap、キーボードショートカットのポップオーバー (kbd-fab)。
v3.18.0 — グラフ分析と LLM コンテキスト
| ツール | 説明 |
|---|---|
grasp_hub_nodes | ファンイン + ファンアウト(次数中心性)による接続数上位 N 件のファイル。アーキテクチャ上のハブを特定します |
grasp_bridge_nodes | Brandes 媒介中心性。他のノード間のクリティカルパス上に位置するファイル。500 ノード超のリポジトリでは 100 件のソースを自動サンプリングします |
grasp_surprising_connections | 頻度加重レアリティでフラグ付けされた、まれなレイヤー間エッジ。アーキテクチャ違反の可能性が高いものです |
grasp_knowledge_gaps | 孤立ファイル(エッジなし、テスト/フィクスチャ以外)、テストされていない呼び出し回数の多いホットスポット、弱いコミュニティ(結合度の高い小さなレイヤー) |
grasp_suggested_questions | ハブ + ブリッジ + 循環依存 + 重複 + レイヤー違反を組み合わせたレビュー質問を 5~10 件自動生成します |
grasp_minimal_context | 100 トークン未満のリポジトリ概観。より深いクエリの前に LLM が最初に呼び出すものです。上位ハブ、レイヤー内訳、言語リスト、健全性サマリーを返します |
grasp_traverse | 開始ノードからのトークン予算を考慮した BFS。予算または深さを使い切るまでファイル/関数グラフを走査します。残り予算付きの切り詰めたビューを返します |
grasp_semantic_search | @xenova/transformers(Xenova/all-MiniLM-L6-v2)による関数シグネチャのコサイン類似度検索。15 秒のエンベッダー読み込みタイムアウトレースと部分文字列キーワードフォールバック付き。シグネチャは最大 2,000 件 |
grasp_apply_refactor | デフォルトで dry_run プレビュー付きのリネーム操作を実行します。dry_run=false の場合、ローカルソースではファイルをディスクに書き戻します |
grasp_architecture_overview | コミュニティ + ハブ + 質問レポートを統合したもの。新しいコントリビューター/レビュアー向けの単一のエグゼクティブサマリー |
grasp_export_graphml | yEd / Gephi 互換の依存関係グラフの GraphML XML エクスポート |
grasp_export_cypher | オフライン分析のために完全なグラフを再現する Neo4j の CREATE ステートメント |
grasp_export_obsidian | レイヤーごとの列レイアウトを備えた Obsidian Canvas 用の .canvas JSON |
grasp_export_dot | Graphviz DOT(digraph)。rankdir=LR、レイヤーごとのサブグラフクラスター、レイヤー別に色分けされたノード、ラベル付きエッジ。デフォルト上限は 200 ノード(最も接続の多い順)— max_nodes で上書きできます |
grasp_export_mermaid | レイヤーごとに 1 つのサブグラフを持つ Mermaid の graph LR。GitHub / GitLab / Notion / Obsidian 上でインライン表示されます |
grasp_export_d2 | Terrastruct D2(direction: right)。レイヤーコンテナとラベル付き imports エッジ付き。d2 CLI でレンダリングします |
grasp_export_plantuml | PlantUML クラス図(@startuml ... @enduml、!theme cerulean)。レイヤーごとに package を持ちます。Confluence、Jira、IntelliJ、VS Code、PlantUML サーバーで動作します |
grasp_export_dgml | Visual Studio Directed Graph(DGML)XML。VS のアーキテクチャウィンドウでレイヤーごとに 1 つのカテゴリとしてネイティブに開けます |
grasp_export_gexf | Gephi ネイティブの GEXF 1.3。レイヤー / 行数 / 複雑度 / 変更頻度のノード属性と重み付きエッジ付き |
grasp_export_drawio | シンプルなグリッドレイアウト(レイヤーごとに 1 列)を持つ draw.io / diagrams.net XML。https://app.diagrams.net または VS Code の draw.io 拡張機能で開いて編集できます |
grasp_export_csv | 3 つの CSV(files / connections / issues)を --- <name>.csv --- 区切りで連結したもの。単一シートには format=files|connections|issues を渡し、デフォルトの bundle で 3 つすべてを出力します |
MCP リソース (v3.15.0)
ツール呼び出しなしで MCP クライアントから直接利用できる 8 つのライブデータ URI:
| リソース URI | 説明 |
|---|---|
grasp://repos | ブレインストアにインデックスされたすべてのリポジトリを一覧表示 |
grasp://setup | インデックスされたすべてのリポジトリ向けの AGENTS.md 形式のコンテキストブロック |
grasp://repo/{repoId}/context | コードベースの統計、健全性グレード、陳腐化チェック |
grasp://repo/{repoId}/clusters | Louvain 検出によるすべての機能コミュニティ |
grasp://repo/{repoId}/processes | エントリーポイントからトレースされたすべての実行プロセス |
grasp://repo/{repoId}/schema | Kuzu のノード/エッジ数 + スキーマ定義 |
grasp://repo/{repoId}/cluster/{clusterName} | 1 つの機能コミュニティの詳細分析 |
grasp://repo/{repoId}/process/{processName} | 実行プロセスのステップバイステップのトレース |
MCP プロンプト (v3.15.0)
| プロンプト | 引数 | 説明 |
|---|---|---|
detect_impact | source、scope?、base_ref? | ガイド付きマルチステップワークフロー: 変更を検出 → 影響を受けるシンボルを特定 → プロセスをトレース → リスクを評価 → テスト範囲を提案 |
generate_map | source?、format? | ガイド付きマルチステップワークフロー: リポジトリを一覧表示 → grasp_analyze を実行 → アーキテクチャ図 → コミュニティを一覧表示 → wiki を生成 |
使用例
"Analyze the express repo"
→ grasp_analyze("expressjs/express")
"What would break if I change src/router/index.js?"
→ grasp_dependents(session_id, "src/router/index.js")
"Are there any circular dependencies?"
→ grasp_cycles(session_id)
"Which files are riskiest to touch?"
→ grasp_hotspots(session_id)
"Show me the architecture layers"
→ grasp_architecture(session_id)
"What files changed most often together in the last 20 commits?"
→ grasp_timeline(session_id, n=20)
"Are there duplicate code blocks I should clean up?"
→ grasp_similarity(session_id)
"Give me a refactor plan for src/services/auth.ts"
→ grasp_refactor(session_id, file="src/services/auth.ts")
"Compare main and feature branch analyses"
→ grasp_cross_repo(session_id_a, session_id_b)
"Generate a PR comment for these changed files"
→ grasp_pr_comment(session_id, changed_files=["src/auth.ts","src/router.ts"])
"Which npm packages are declared but never actually imported?"
→ grasp_dead_packages(session_id)
"Export this session as SARIF for GitHub Code Scanning"
→ grasp_sarif(session_id)
"Show me which files actually call each other at runtime"
→ grasp_runtime_calls(trace_json="...", session_id=session_id)
"Which database tables are touched by the most files?"
→ grasp_db_coupling(session_id)
"Plan a migration from moment.js to date-fns"
→ grasp_migration_plan(session_id, from_package="moment", to_package="date-fns")
"Map all our API endpoints across Express routes and our OpenAPI spec"
→ grasp_api_surface(session_id)
"How many commits landed in express/express in the last 7 days?"
→ grasp_commits("expressjs/express")
"Is CI passing on vuejs/vue right now?"
→ grasp_ci_status("vuejs/vue")
"How many commits landed since my last analysis at 2026-04-10T12:00:00Z?"
→ grasp_commits("owner/repo", since_timestamp="2026-04-10T12:00:00Z")
"Which requirements are not covered by any code? Upload our REQ-NNN CSV."
→ grasp_req_trace(session_id, requirements=[{id:"REQ-001",desc:"Input validation",level:"A"},...])
"Which file in our codebase is most suspicious for this anomaly? Trace callers and callees."
→ grasp_anomaly(session_id, suspect_file="src/sensor/parser.c")
"Can we safely reuse the auth module from project A in project B?"
→ grasp_reuse(session_id_candidate, session_id_target, module_path="src/auth")
"Which code paths reach an output without passing through a safety gate?"
→ grasp_safety_trace(session_id, gates=["src/filters/constitutional_ai.py","src/output/sanitizer.py"])
"What changed semantically between training run A and run B?"
→ grasp_run_diff(session_id, config_a="...", config_b="...", format="yaml")
"Which parts of the model code are NOT exercised by any eval script?"
→ grasp_eval_coverage(session_id, eval_patterns=["evals/","*_eval.py"])
"Generate a CycloneDX SBOM with CVE data for this repo."
→ grasp_sbom(session_id, format="cyclonedx", include_vulns=true)
"What are our DORA metrics — deployment frequency, lead time, failure rate?"
→ grasp_dora(session_id, token="ghp_...")
"How much technical debt do we have in developer-days?"
→ grasp_adr(session_id, focus_files=["src/auth.ts","src/router.ts"], llm_provider="anthropic", api_key="sk-ant-...")
GitHub トークン
大規模なリポジトリ (>100 ファイル) では、レート制限を回避するために GitHub PAT を渡してください:
grasp_analyze("owner/repo", token="ghp_...")
トークンなしの場合: 1 時間あたり 60 リクエスト。トークンありの場合: 1 時間あたり 5,000 リクエスト。
GitLab サポート
Grasp は gitlab.com およびセルフホストの GitLab インスタンスで動作します。
トークン認証 (最も簡単)
# Set env vars — works for all MCP tools
export GITLAB_TOKEN=glpat-xxxxxxxxxxxxxxxxxxxx
export GITLAB_HOST=gitlab.internal.company.com # omit for gitlab.com
セルフホスト Docker ボット (自動 MR コメント)
cd deploy
cp .env.gitlab.example .env.gitlab
# Edit .env.gitlab with your GITLAB_HOST, GITLAB_TOKEN, WEBHOOK_SECRET
docker compose -f docker-compose.gitlab.yml --env-file .env.gitlab up -d
次に、WEBHOOK_SECRET を指定して http://your-host:7332/webhook を指す GitLab Webhook を登録します。
トンネルエージェント (社内 GitLab、受信ポート不要)
docker run ghcr.io/ashfordeou/grasp-agent:latest \
--token=<your-agent-token> \
--gitlab-host=gitlab.internal.company.com
CLI
Grasp は MCP サーバーとともに grasp CLI を提供します:
# Analyze a local directory
npx grasp analyze ./my-project
# Export analysis as SARIF (for GitHub Code Scanning)
npx grasp analyze ./my-project --format=sarif --output=grasp.sarif
# Scan declared dependencies for known CVEs (OSV.dev)
# Exits 1 if any critical or high vulnerability — drop into CI as a quality gate
grasp vulns ./my-project
# Detect architecture drift vs the last snapshot — exits 1 on CRITICAL drift
grasp drift ./my-project
# Generate a multi-repo org dashboard (HTML / JSON / Markdown)
grasp org my-github-org --format=html --max=20
# One-command MCP auto-config for Claude Code, Cursor, Windsurf, Codex, OpenCode
grasp setup
JetBrains プラグイン
JetBrains IDE プラグイン (IntelliJ IDEA、WebStorm、PyCharm、GoLand) が jetbrains-plugin/ で利用可能です。以下を追加します:
- ツールウィンドウ — JCEF でレンダリングされるインタラクティブな依存関係グラフ、テキストサマリーにフォールバック
- ステータスバーウィジェット — ライブの健全性スコア (例:
⬡ 87 B)、クリックで開く - エディター注釈 — レイヤー違反および循環依存に関するインライン警告
- ファイル保存時の再分析 — 監視対象の拡張子に対して保存時に自動再分析
- 設定 — 構成可能な CLI パス、注釈のオン/オフ
jetbrains-plugin/ から ./gradlew buildPlugin でビルドします。
SaaS API サーバー
軽量なホスト型分析 API が saas/ にあります。Grasp 分析を以下でラップします:
- Redis/LRU キャッシュ — 同一のリクエストは即座に応答、TTL は構成可能
- スライディングウィンドウレートリミッター — キーごと、制限は構成可能
- 非同期ジョブキュー — POST は即座に 202 を返し、分析はバックグラウンドで実行
POST /analyze—{ repo: "owner/repo" }または{ repo: "https://github.com/..." }を受け付け
cd saas && npm install && npm run build && npm start
Slack / Teams ボット
自動健全性アラートと週次ダイジェストが slack-bot/ にあります。機能:
- 毎時のリグレッションアラート — スコアが 10 ポイント以上低下した場合、新しいセキュリティ問題、または新しい循環依存が現れた場合に発火
- 週次ダイジェスト — 構成可能な cron (デフォルトは月曜 09:00)、マルチリポジトリのサマリー付き
- Slack Block Kit および MS Teams Adaptive Cards (v1.4) のフォーマット
- 環境変数 (
SLACK_WEBHOOK_URL、TEAMS_WEBHOOK_URL、GRASP_REPOSなど) で構成可能
cd slack-bot && npm install && npm run build && npm start
GitHub Actions ワークフロー
| ワークフロー | トリガー | 目的 |
|---|---|---|
ci.yml | main へのプッシュ / PR | ビルド、テスト、リント |
publish.yml | タグ v* のプッシュ | npm への公開 |
grasp-sarif.yml | main へのプッシュ | 自己分析 → SARIF → GitHub Code Scanning |
grasp-health.yml | スケジュール (毎日) | 健全性サマリーをコミットステータスとして投稿 |
Claude Code スラッシュコマンド
3 つの組み込みスラッシュコマンドが .claude/commands/ 配下に同梱されているため、どの Claude Code ワークスペースでも Grasp の最も一般的なフローを 1 ステップで呼び出せます:
| コマンド | 実行内容 |
|---|---|
/grasp:build-graph | 現在のディレクトリに対して grasp_analyze を実行し、さらに grasp_minimal_context で 100 トークン未満のオリエンテーションを生成します |
/grasp:review-delta | ベースブランチ以降の変更を検出し、リスクスコア付きの影響レポートを生成します |
/grasp:review-pr | grasp_detect_changes + grasp_suggested_questions + grasp_surprising_connections + grasp_knowledge_gaps を組み合わせた完全な PR レビュー |
各コマンドは markdown ファイル (.claude/commands/grasp-*.md) で、allowed-tools とテンプレート本文を含みます — リポジトリ内で編集してカスタマイズできます。
ワークフローのヒント
必ず最初に grasp_analyze を呼び出してください — これは他のすべてのツールが要求する session_id を返します。セッションはメモリ内に保持され、MCP サーバーが再起動すると失効します。
アプリ内ヘルプ: ブラウザアプリの実行中に ? を押すと、すべてのショートカット、タブ、オーバーレイを一覧表示するフローティングポップオーバーが開きます。Team Dashboard (team-dashboard.html) には独自のヘルプモーダルが同梱されています。
プライバシー
Grasp はいかなるデータも収集しません。MCP サーバーはローカルサブプロセスとして実行されます。外部への呼び出しは、GitHub/GitLab API、CVE 検索のための OSV.dev、および (オプションで) 設定した AI プロバイダーのみです。あなたのコードが Ashforde のサーバーを経由することはありません。プライバシーポリシー全文: PRIVACY.md。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。