用途 本技能通过插件内置的 snyk MCP 服务器调用 Snyk 各类扫描器,面向代码、依赖、容器镜像、IaC 文件与 SBOM 发现已知漏洞、错误配置和高风险包,并给出修复建议。它不替代代码审查,也不用于密钥检测、动态测试,或扫描不允许上传的代码。
主要能力
- 源码 SAST:对刚生成或修改的目录运行 snyk_code_scan。
- 依赖评估:添加或升级依赖前,用 snyk_package_health_check 查看漏洞、维护状态与流行度;替换版本时用 snyk_breakability_check 评估升级路径风险。
- 软件成分分析:对带 manifest/lockfile 的项目运行 snyk_sca_scan;monorepo 可用 all_projects,Python 项目必须传 command: "python3"。
- 容器与 IaC:用 snyk_container_scan 扫描镜像或 Dockerfile,用 snyk_iac_scan 扫描 Terraform/Kubernetes/CloudFormation 目录,Terraform plan 可指定 resource-changes。
- SBOM:用 snyk_sbom_scan 解析 CycloneDX 1.4–1.6 或 SPDX 2.3 JSON 文件;另有预览功能 snyk_aibom 针对 Python 项目,可能不可用。
- 认证与版本:snyk_auth、snyk_logout、snyk_version;snyk_send_feedback 属于出站遥测,仅在用户明确要求时使用。
使用方式
- 安装并启用插件:hermes plugins install snyk、hermes plugins enable snyk,随后开启新的 Hermes 会话以加载 MCP 工具。服务器通过 npx -y snyk@<pinned> mcp -t stdio --profile full --DISABLE_ANALYTICS 启动,需要 Node.js/npm 在 PATH 中。
- 准备 Snyk 账户(免费层覆盖代码与开源扫描);安装时不提示登录,首次扫描前调用 snyk_auth,浏览器会打开登录页,令牌保存在 Snyk CLI 自身配置中。
- 用 pwd 取得目标的绝对路径,所有路径参数必须为绝对路径;若扫描返回信任错误,对用户要求扫描的该目录运行 snyk_trust 后重试。
- 运行对应扫描器;大项目可先用 severity_threshold: "high" 控制输出量。阅读结果、修复可修项(升级版本、修补代码),重跑同一扫描并报告前后问题数变化。
- SCA 需要项目所用包管理器(npm、pip/uv、maven、gradle 等)已安装,以便解析依赖树。
适用场景 编码后即时检查新写代码;引入或升级依赖前做风险评估;存量项目依赖审计;推送容器镜像或基础设施代码前检查;拿到 SBOM 时做漏洞比对。
限制与注意事项
- 相对路径在各类扫描器中都会失败,必须先解析绝对路径。
- snyk_trust 是对用户机器的单向授权,仅对用户要求扫描的目录执行。
- Python SCA 不带 command: "python3" 时结果没有意义。
- 扫描会将代码元数据(SAST 还包括代码)上传至 Snyk 云;扫描私有或客户仓库前应先征得同意,不要扫描包含密钥或 .env 文件的目录。
- 首次 npx 启动会下载固定版本的 CLI(数十 MB),首次连接较慢属正常;版本固定在 mcp.json 中,升级需作为插件变更评审。
- 免费层账户有每月测试次数限制,出现 "limit reached" 错误属配额限制而非缺陷。
- 验证方式:snyk_version 返回 1.1306.0,snyk_auth 显示已认证;对已知漏洞夹具(如 npm init -y && npm i lodash@4.17.15)扫描应报告问题,升级后重扫问题减少。
- 工具名在从目录安装时带前缀 mcp__agent_plugin_snyk_8cb0f11d__sn__,可用 tool_search 搜索 "snyk" 定位。