mcpField
G
Grasp — Code Architecture & Dependency Analysis

Grasp — Code Architecture & Dependency Analysis

本地服务
github.com开发工具317 周前更新

关于 Grasp — Code Architecture & Dependency Analysis

Grasp 是一个面向 Claude Code 等 LLM Agent 的代码库分析 MCP 服务,支持 GitHub 仓库与本地目录。它提供依赖图、架构分层、循环依赖、安全扫描、重构计划等工具,适用于需要理解大型代码库结构的开发者与团队。

主要功能

  1. 01依赖图与循环依赖检测
  2. 02架构分层与热点文件分析
  3. 03安全问题与依赖漏洞扫描
  4. 04重构建议与重构计划生成
  5. 05支持 GitHub 与 GitLab 仓库

适用场景

  1. 01评估修改某个文件的影响范围
  2. 02检查代码库中的架构规则违规
  3. 03生成分阶段的重构计划
  4. 04扫描依赖中的已知 CVE

MCP 相关

Grasp 作为 MCP 服务运行,向 Claude Code 等客户端暴露 grasp_analyze、grasp_dependents、grasp_security 等分析工具,并可通过 Streamable HTTP 供团队共享访问。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"ashfordeou-grasp": {
"command": "npx",
"args": [
"-y",
"grasp-mcp-server"
]
}
}
}
启动命令npx -y grasp-mcp-server

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmgrasp-mcp-server3.21.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Grasp MCP 服务

将 Grasp 代码库分析引擎作为 MCP 工具开放,供 Claude Code 和其他大模型 Agent 使用。

支持 GitHub 仓库和本地目录。可分析依赖关系图、架构分层、循环依赖、安全问题、设计模式、死代码、代码指标、Git 历史、重复项检测、跨仓库对比、单体仓库工作区、运行时调用图、数据库架构耦合、API 面图和迁移规划。

Grasp 依赖关系图 力导向依赖关系图——MCP 服务通过 grasp_analyze、grasp_dependents、graph_query 等工具开放的正是这些数据。

目录


当前版本: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。可插拔的大模型后端(Anthropic、OpenAI、Gemini、DeepSeek、Kimi、Azure、Bedrock、Ollama — 本地优先,可选择使用云端;提取功能可回退到确定性的本地提取器,无需任何凭据)。可选的 MCP-over-HTTP 传输方式,支持团队共享访问(GRASP_HTTP_MCP=1,可选 API 密钥)。新增三种 AST 语言(Bash、Elixir、Julia → 19 种由 tree-sitter 支持的语言)。请参阅下文的 ## Multimodal Knowledge Graph。

v3.20.0 新增: 完整的安全扫描套件 — grasp_vulnerabilities 覆盖五种威胁向量(OSV.dev 依赖项 CVE、NIST NVD 容器/运行时 CVE、本地供应链完整性检查、Socket.dev 行为分析,以及定时的 grasp_vuln_watch 监控),并提供 skip_container / skip_socket / skip_integrity 快速扫描标志。

v3.19.0 新增: 团队仪表板在视觉上与 Grasp 应用保持一致 — 青绿色品牌风格、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-config 路径别名和 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 vulns CLI);架构漂移检测(grasp_snapshot + grasp_diff_snapshots + grasp drift CLI);组织级仪表板(grasp_org_summary + grasp org CLI);测试覆盖率缺口图;图架构 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 跟踪、职责分离、金融延迟/模型风险)、操作系统/内核(子系统边界、ABI 稳定性、Kconfig、IRQ 图、补丁系列影响)、开源(适合新手的问题、分支分歧、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,则会回退到确定性提取器,因此离线时仍可正常工作。每条边都会标记为已提取(源文件中明确说明)或已推断(推导所得),并附带来源定位信息。

后端环境变量
Ollama(本地,默认)在 localhost:11434 运行——无需其他配置
Anthropic / OpenAI / Gemini / DeepSeek / KimiANTHROPIC_API_KEY / OPENAI_API_KEY / GEMINI_API_KEY / DEEPSEEK_API_KEY / MOONSHOT_API_KEY
Azure OpenAI / AWS BedrockAZURE_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。音频/视频转录还需要将 ffmpeg 加入 PATH。

团队共享访问(通过 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 的工具是无状态的,因此一个端点即可供团队的多个 Agent 使用。

代码所在位置

多模态流水线位于 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按层对文件分组(服务/数据/工具/测试……)
grasp_hotspots按耦合度和复杂度排名最高的文件
grasp_metrics每个文件的行数、函数数、复杂度、扇入/扇出
grasp_find_path两个文件之间最短的依赖路径
grasp_security硬编码密钥、SQL 注入风险、不安全模式
grasp_patterns检测到的设计模式和反模式
grasp_unused死代码——已定义但从未调用的函数
grasp_sessions列出已持久化的分析会话——重启后仍保留,7 天后过期
grasp_config_check对会话运行 grasp.yml 架构规则——返回带严重性级别的违规项
历史记录与比较
工具描述
grasp_diff比较两个会话快照——新增/删除的文件、健康度变化
grasp_watch重新分析本地目录,并与之前的会话进行差异比较
grasp_timeline最近 N 次 git 提交,包含每次提交变更的文件和共同变更矩阵
grasp_cross_repo比较两个会话——共享文件名、存在差异的函数、工作区信息
grasp_similarity排序后的重复代码簇、代码克隆、命名冲突和最热门文件
代码质量
工具描述
grasp_suggest根据热点和问题数据生成排序后的重构建议
grasp_explain用通俗易懂的语言解释任意文件或函数
grasp_rules_check运行架构规则并报告所有违规项
grasp_refactor为文件或会话提供分步重构计划和指标表
grasp_coverage测试覆盖率叠加视图——列出没有对应测试的文件
grasp_vulnerabilitiesOSV.dev SCA 扫描器——检查已声明依赖项(npm/PyPI/Go/Cargo/Maven)中的已知 CVE。按严重程度(CVSS)分类,提供修复版本建议,并支持严重程度筛选(all/critical/high/medium/low)。可与 grasp vulns <path> CLI 配合使用(存在严重/高危问题时退出码为 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将分析结果导出为 SARIF 2.1.0,以便上传到 GitHub Code Scanning
运行时与基础设施智能分析
工具描述
grasp_runtime_calls将 GraspTracer JSON 跟踪记录与静态边合并——显示实际调用路径和热点文件
grasp_db_couplingORM/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映射事件发送器和订阅者——检测孤立的事件发送(无监听器)和无来源的订阅(无发送器)
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安全约束追踪器——标记安全关卡、入口点和输出点;返回所有绕过每个关卡的入口→输出路径(未设关卡的路径为严重问题)
grasp_run_diff训练运行差异分析——比较两个 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_doraDORA 指标——通过 GitHub Actions 和 PR 历史记录计算部署频率、变更前置时间和变更失败率。分为 Elite/High/Medium/Low 级别。
grasp_adrAI 驱动的 ADR 生成——结合代码库上下文和可选的 PR 差异,生成 MADR 格式的架构决策记录。支持任意 AI Chat 提供商。
多仓库 / 平台(v3.4.x)
工具描述
grasp_org_graph组织级多仓库依赖图——将 N 个会话合并为一个组织视图,包含仓库间依赖边和共享库
grasp_api_diff破坏性 API 变更检测器——比较两个会话的导出符号,标记已移除或签名已更改的符号
grasp_plugins扩展点映射——在整个代码库中检测插件接口、钩子点和策略模式
grasp_semver语义化版本管理强制器——比较两个会话,并验证版本递增是否与变更集相符
金融 / 合规(v3.5.x)
工具描述
grasp_pii_tracePII 数据流追踪器 — 从用户标记的 PII 源文件开始进行下游广度优先遍历;显示所有使用方
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_diffABI/API 稳定性检查器 — 比较不同会话之间的导出符号,稳定性评分为 0–100
grasp_kconfigKconfig/构建时条件分析 — CONFIG_* 使用情况图、影响超过 50 个文件的高风险开关
grasp_irqIRQ/中断依赖关系图 — 中断处理程序中的动态分配、阻塞调用和扇出
grasp_patch_impact补丁系列影响分析器 — 在内核代码审查中按影响范围和复杂度对补丁排序
开源(v3.7.x)
工具描述
grasp_good_first_issues新手友好问题生成器 — 找出独立、低复杂度、未经测试的文件,并生成 GitHub 问题草稿文本
grasp_api_stability两个会话之间的 API 稳定性评分(0–100)— 为库作者追踪破坏性变更率
grasp_dependents公开使用方 — 查询 deps.dev,获取公开软件包的依赖方数量
grasp_fork_diffFork 差异分析 — 找出存在差异、相同和仅在 Fork 中存在的文件,以及合并影响范围
Ada / 遗留系统(v3.8.x)
工具描述
grasp_multilang跨语言调用图 — Ada→C pragma Import、Python ctypes/cffi、JS→WASM 边界
grasp_heritage遗留软件谱系分析 — 叠加源任务清单,识别零差异认证捷径
grasp_icdICD 映射器 — 将接口控制文档条目与导出函数匹配,并标记未实现的接口
grasp_ecssECSS-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 Agent 自动生成 SKILL.md / CLAUDE.md 片段——包括层级、关键文件、健康评级、模式和安全发现
grasp_hooks生成 .claude/settings.json PostToolUse hook 和 .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 维基:index.md 概览、每个文件夹一个页面、按调用方数量排序的 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查询 deps.dev,获取任意 npm/PyPI/Go 软件包的公开依赖方数量、OpenSSF 记分卡和依赖健康状况
语义搜索与重命名(v3.14+)
工具描述
grasp_search针对 brain 索引进行混合语义搜索(BM25 FTS5 + 384D 向量嵌入,并通过 Reciprocal Rank Fusion 合并结果)。结果包含 processes[] 字段,按执行流程对匹配项分组。支持 @groupName 扇出
grasp_rename在 brain 索引的所有文件中,以图感知方式重命名完整单词符号。apply: false(默认值)返回试运行差异;apply: true 将更改写入磁盘
grasp_route_map扫描 HTTP 路由定义(Express/Fastify/Hono、FastAPI/Flask、Gin),将每条路由映射到其处理函数及文件位置
grasp_api_impact给定路由或处理函数名称,使用 brain 图谱边返回所有调用方、下游服务和影响范围
grasp_tool_map扫描 MCP 工具定义(server.tool / server.registerTool)和 gRPC 服务定义,返回服务契约映射
grasp_shape_check对任意函数,通过 brain 索引追踪所有调用点的参数类型和返回类型;标记调用点不匹配
grasp_group_add将仓库源添加到 ~/.grasp/groups.json 中的命名组,以支持多仓库扇出
grasp_group_list列出 ~/.grasp/groups.json 中所有命名组及其成员仓库
图谱智能(v3.15.0)
工具描述
grasp_graph_schemaKuzu schema v3 内省——所有节点/边表定义(File、Function、Class、Interface、Method、Constructor、TestFile,以及包括 TESTS 和 COVERS 在内的 12 种边类型),并显示每张表的实时行数
grasp_type_propagation通过拓扑传播进行跨文件类型推断——沿导入图(Kahn 算法)推断每个调用点的返回类型;返回置信度为 0–1 的前 20 种推断类型
grasp_orm_mapORM 查询追踪器——检测 Prisma、TypeORM、Sequelize、SQLAlchemy 模式;按模型对结果分组,包含调用点、操作和频率;可通过 orm_filter 参数筛选
grasp_detect_changesGit 差异 → 符号影响映射。scope:unstaged · staged · all · compare(搭配 base_ref)。返回已更改文件、受影响函数及行范围、受影响的流程,以及风险级别:LOW · MEDIUM · HIGH · CRITICAL
grasp_generate_agents_md根据 brain 会话数据在仓库根目录生成内容丰富的 AGENTS.md——排名前 5 的功能社区及其关键文件、排名前 3 的执行流程及其入口点、健康等级和主要问题
grasp_generate_skills按社区生成技能文件——为每个检测到的功能集群写入 .claude/skills/generated/<community>.md;每项技能都包含关键文件、入口点、跨区域依赖项和常见操作
v3.20.0 — 团队仪表板功能对齐

团队仪表板在视觉和用户体验上与 Grasp 应用全面对齐——采用青绿色品牌设计令牌、全面使用 Lucide SVG 图标、多提供商身份验证(GitLab、GitHub Enterprise、Bitbucket、Azure DevOps、Gitea)并共享 localStorage 键、≤860px 时显示移动端“更多”菜单、身份验证栏支持 flex-wrap,以及键盘快捷键弹出框(kbd-fab)。

v3.18.0 — 图分析与大模型上下文
工具描述
grasp_hub_nodes按入度 + 出度(度中心性)列出连接最多的前 N 个文件。用于识别架构枢纽
grasp_bridge_nodesBrandes 中介中心性。列出位于其他文件关键路径上的文件。对于节点数 > 500 的代码库,会自动抽样 100 个源节点
grasp_surprising_connections按频率加权稀有度标记罕见的跨层边。可能是架构违规
grasp_knowledge_gaps孤立文件(没有边,且不是测试/fixture)、未经测试但调用次数很高的热点,以及薄弱社区(出度耦合高的小型层)
grasp_suggested_questions自动生成 5–10 个审查问题,结合枢纽、桥接节点、循环依赖、重复项和层违规
grasp_minimal_context不足 100 个 token 的代码库概览。大模型深入查询前的首次调用。返回主要枢纽、层分布、语言列表和健康状况摘要
grasp_traverse感知 token 预算,从起始节点开始进行 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_dotGraphviz DOT(digraph),包含 rankdir=LR、分层子图集群、按层着色的节点和带标签的边。默认上限为 200 个节点(优先选择连接最多的节点)——设置 max_nodes 可覆盖此上限
grasp_export_mermaid生成每层一个子图的 Mermaid graph LR。可在 GitHub / GitLab / Notion / Obsidian 中内嵌渲染
grasp_export_d2生成带有分层容器和带标签 imports 边的 Terrastruct D2(direction: right)。通过 d2 CLI 渲染
grasp_export_plantuml生成 PlantUML 类图(@startuml ... @enduml、!theme cerulean),每层使用一个 package。可用于 Confluence、Jira、IntelliJ、VS Code 和 PlantUML 服务
grasp_export_dgml导出 Visual Studio 有向图(DGML)XML。可在 VS Architecture 窗口中原生打开,每层对应一个 Category
grasp_export_gexf导出 Gephi 原生 GEXF 1.3,包含层 / 行数 / 复杂度 / 变更量节点属性及加权边
grasp_export_drawio导出 draw.io / diagrams.net XML,采用简单网格布局(每层一列)。可在 https://app.diagrams.net 或 VS Code draw.io 扩展中打开和编辑
grasp_export_csv生成三个 CSV(文件 / 连接 / 问题),并以 --- <name>.csv --- 分隔符串联。传入 format=files|connections|issues 可导出单个工作表;默认 bundle 导出全部三个
MCP 资源(v3.15.0)

8 个实时数据 URI,MCP 客户端无需调用工具即可直接使用:

资源 URI描述
grasp://repos列出 brain store 中索引的所有仓库
grasp://setup适用于所有已索引仓库的 AGENTS.md 风格上下文块
grasp://repo/{repoId}/context代码库统计数据、健康等级、陈旧度检查
grasp://repo/{repoId}/clustersLouvain 检测得出的所有功能社区
grasp://repo/{repoId}/processes从入口点追踪的所有执行流程
grasp://repo/{repoId}/schemaKuzu 节点/边数量及架构定义
grasp://repo/{repoId}/cluster/{clusterName}深入了解一个功能社区
grasp://repo/{repoId}/process/{processName}逐步追踪执行流程
MCP 提示词(v3.15.0)
提示词参数描述
detect_impactsource、scope?、base_ref?引导式多步骤工作流:检测变更 → 确定受影响的符号 → 追踪流程 → 评估风险 → 建议测试范围
generate_mapsource?、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_...")

不使用令牌:60 次请求/小时。使用令牌: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

然后注册一个 GitLab webhook,指向 http://your-host:7332/webhook,并使用你的 WEBHOOK_SECRET。

隧道 Agent(内部 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 / 向 main 提交 PR构建、测试、代码检查
publish.yml推送标签 v*发布到 npm
grasp-sarif.yml推送至 main自分析 → SARIF → GitHub Code Scanning
grasp-health.yml定时(每天)将健康摘要作为提交状态发布

Claude Code 斜杠命令

.claude/commands/ 下提供了三个预构建的斜杠命令,任何 Claude Code 工作区都可以通过一步操作调用 Grasp 最常用的流程:

命令功能
/grasp:build-graph对当前目录运行 grasp_analyze,并运行 grasp_minimal_context,生成少于 100 个 token 的概览
/grasp:review-delta检测自基准分支以来的更改,并生成带风险评分的影响报告
/grasp:review-pr完整的 PR 审查,组合调用 grasp_detect_changes、grasp_suggested_questions、grasp_surprising_connections 和 grasp_knowledge_gaps

每个命令都是一个 Markdown 文件(.claude/commands/grasp-*.md),包含 allowed-tools 和模板正文;可在仓库中编辑这些文件以进行自定义。

工作流提示

始终先调用 grasp_analyze——它会返回一个其他所有工具都需要的 session_id。会话保存在内存中,并会在 MCP 服务重启时过期。

应用内帮助:运行浏览器应用时,按 ? 可打开浮动弹出窗口,其中列出了所有快捷键、选项卡和覆盖层。Team Dashboard(team-dashboard.html)自带帮助模态框。

隐私

Grasp 不会收集任何数据。MCP 服务以本地子进程的形式运行;唯一的外发请求是调用 GitHub/GitLab API、OSV.dev 进行 CVE 查询,以及(可选)调用你配置的 AI 服务提供商。你的代码绝不会经过 Ashforde 服务器。完整隐私政策:PRIVACY.md。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。