Snyk CLI MCP服务器-Docker镜像
Unofficial Multi-Architecture Docker Image for Snyk CLI MCP Server
概述
这是一个非官方的、由社区维护的Docker镜像,它打包了 Snyk CLI MCP服务器 用于集装箱化部署。它使AI代理(Claude Code、VS Code Copilot、Cursor、Windsurf等)能够通过模型上下文协议(MCP)执行安全扫描。
上游: (Apache许可证2.0)
主要特点
- 多架构支持 -原生支持x86-64和ARM64
- 多种传输协议 -可流式传输的HTTP、SSE和WebSocket支持(可通过env-var选择)
- 11安全扫描工具 -SCA、SAST、容器、IaC、SBOM和AIBOM扫描
- Python AI项目支持 -
snyk_aibom用于生成人工智能物料清单 - 设计安全 -API密钥认证(不区分大小写的承载)、CORS、TLS终止、安全头
- 高性能 -HAProxy支持QUIC/HTTP3,ZSTD压缩
可用的Snyk MCP工具
| 工具 | 说明 |
|---|---|
snyk_sca_scan | 开源依赖漏洞扫描(pip、pipenv、poetry、npm等) |
snyk_code_scan | 源代码的静态应用程序安全测试(SAST) |
snyk_container_scan | 容器映像漏洞扫描 |
snyk_iac_scan | 基础设施即代码安全扫描(Terraform、K8s、Docker Compose) |
snyk_sbom_scan | 软件物料清单分析 |
snyk_aibom | Python AI项目的AI物料清单(模型、数据集、工具) |
snyk_auth | 使用Snyk进行身份验证 |
snyk_logout | 退出Snyk |
snyk_auth_status | 检查身份验证状态 |
snyk_trust | 信任用于扫描的文件夹 |
snyk_version | 显示版本信息 |
______________________________________________________________________
😎 给我买杯咖啡☕︎
您的支持鼓励我继续创建/支持我的开源项目。 如果你在这个项目中发现了价值,你可以给我买杯咖啡,让我保持灵感。
快速开始
先决条件
- Docker引擎: 23.0+
- Snyk帐户: 免费套餐可在 app.snyk.io
- Snyk API代币: 自 app.snyk.io/account (API代币部分)
关键: 在没有适当的安全措施(反向代理、SSL/TLS、身份验证、防火墙规则)的情况下,不要将此容器直接暴露在互联网上。
______________________________________________________________________
Docker Compose(推荐)
services:
snyk-mcp:
image: mekayelanik/snyk-mcp:latest
container_name: snyk-mcp
restart: unless-stopped
ports:
- "8010:8010"
volumes:
- /path/to/your/projects:/data:ro
environment:
- SNYK_TOKEN=${SNYK_TOKEN}
- PORT=8010
- INTERNAL_PORT=38011
- PUID=1000
- PGID=1000
- TZ=UTC
- NODE_ENV=production
- PROTOCOL=SHTTP
- ENABLE_HTTPS=false
- HTTP_VERSION_MODE=auto
- DATA_DIR=/data
- SNYK_MCP_PROFILE=full
# Optional: Snyk organization ID
# - SNYK_CFG_ORG=your-org-id
# Optional: require Bearer token auth at HAProxy layer
# - API_KEY=replace-with-strong-secret
# Optional: CORS origins
# - CORS=*Docker运行
docker run -d \
--name=snyk-mcp \
--restart=unless-stopped \
-p 8010:8010 \
-v /path/to/your/projects:/data:ro \
-e SNYK_TOKEN=your-snyk-api-token \
-e PORT=8010 \
-e PROTOCOL=SHTTP \
-e SNYK_MCP_PROFILE=full \
mekayelanik/snyk-mcp:latest访问端点
| 服务 | 端点 | 描述 |
|---|---|---|
| MCP(shtp) | http://host-ip:8010/mcp | 流式HTTP MCP端点(推荐) |
| MCP(SSE) | http://host-ip:8010/sse | 服务器发送事件MCP端点 |
| MCP(WS) | ws://host-ip:8010/message | WebSocket MCP端点 |
| 健康 | http://host-ip:8010/healthz | 健康检查端点 |
启用HTTPS时(ENABLE_HTTPS=true),使用TLS端点:
| 服务 | 端点 |
|---|---|
| MCP(shtp) | https://host-ip:8010/mcp |
| MCP(SSE) | https://host-ip:8010/sse |
| MCP(WS) | wss://host-ip:8010/message |
安全警告: 容器默认为HTTP(ENABLE_HTTPS=false)以便于本地设置。使用ENABLE_HTTPS=true有自己的生产证书。看 证书_教程_指南.md 以获取说明。
______________________________________________________________________
配置
完整的环境变量参考
核心设置
| 变量 | 默认值 | 可能值 | 描述 |
|---|---|---|---|
PORT | 8010 | 1-65535 | 外部HAProxy侦听端口 |
INTERNAL_PORT | 38011 | 1-65535 | 内部超级网关端口(不要暴露) |
PROTOCOL | SHTTP | SHTTP, SSE, WS | MCP传输协议 |
PUID | 1000 | 任何有效的UID | 进程用户ID |
PGID | 1000 | 任何有效的GID | 进程组ID |
TZ | UTC | 任何时区 | 容器时区 |
NODE_ENV | *(空)* | production等等。 | Node.js环境 |
DATA_DIR | /data | 任何路径 | 已装载项目的目录 |
Snyk设置
| 变量 | 默认值 | 可能值 | 描述 |
|---|---|---|---|
SNYK_TOKEN | *(空)* | API令牌字符串 | Snyk API令牌(扫描时需要) |
SNYK_CFG_ORG | *(空)* | 组织ID | Snyk组织ID |
SNYK_MCP_PROFILE | full | minimal, full, preview | 刀具轮廓(见下文) |
SNYK_DEBUG | false | true, false | 启用调试日志记录 |
SNYK_DISABLE_ANALYTICS | *(空)* | 1 | 禁用Snyk分析 |
Snyk MCP配置文件
| 配置文件 | 工具 | 描述 |
|---|---|---|
minimal | 基本 | 扫描工具最少,令牌使用率低 |
full | 11 | 所有稳定的工具(推荐) |
preview | 11+ | 完整配置文件和实验工具 |
安全设置
| 变量 | 默认值 | 可能值 | 描述 |
|---|---|---|---|
API_KEY | *(空)* | 5-256个可打印字符 | HAProxy身份验证的承载令牌 |
CORS | *(空)* | 起源(逗号分隔)或 * | 允许的CORS来源 |
ENABLE_HTTPS | false | true, false | 启用TLS终止 |
TLS_CERT_PATH | /etc/haproxy/certs/server.crt | 文件路径 | TLS证书路径 |
TLS_KEY_PATH | /etc/haproxy/certs/server.key | 文件路径 | TLS私钥路径 |
TLS_MIN_VERSION | TLSv1.3 | TLSv1.2, TLSv1.3 | 最低TLS版本 |
HTTP_VERSION_MODE | auto | auto, h1, h2, h3, h1+h2, all | HTTP版本协商 |
RATE_LIMIT | 0 | 0-N | 每台设备的最大请求数 RATE_LIMIT_PERIOD 按IP(0 =禁用) |
RATE_LIMIT_PERIOD | 10s | 10s, 1m, 1h等等。 | 用于速率限制的滑动窗口 |
MAX_CONNECTIONS_PER_IP | 0 | 0-N | 每个IP的最大并发连接数(0 =禁用) |
IP_ALLOWLIST | *(空)* | 逗号分隔的IPs/CIDR | IPs/CIDR允许(所有其他IP被阻止) |
IP_BLOCKLIST | *(空)* | 逗号分隔IPs/CIDR | 要阻止的IPs/CIDR |
布尔值:true,1,yes,on都被视为真理。其他一切都是假的。
API密钥验证说明
- 集
API_KEY在反向代理级别强制执行身份验证。 - 头球
Authorization: Bearer. /healthzCORS飞行前(OPTIONS)绕过身份验证。
速率限制和IP访问控制
- 速率限制: 集
RATE_LIMIT=100允许每100个请求RATE_LIMIT_PERIOD(默认值10s)每个IP。超过限制将返回HTTP 429Retry-After头球 - 连接限制: 集
MAX_CONNECTIONS_PER_IP=50限制每个IP的并发连接。超过此值将返回HTTP 429。 - IP阻止列表: 集
IP_BLOCKLIST=192.0.2.0/24,198.51.100.5以阻止特定IP/CIDR。被阻止的IP接收HTTP 403。 - IP地址列表: 集
IP_ALLOWLIST=10.0.0.0/8,192.168.1.0/24只允许列出的IP/CIDR。所有其他人都接收HTTP 403。始终允许本地主机。 - 所有功能默认为禁用。根据需要进行组合——在分配列表之前检查块列表。
______________________________________________________________________
安装扫描项目
将项目目录装载到 /data (或指定的路径 DATA_DIR).每个子目录都成为一个可扫描的项目。
volumes:
# Mount entire projects directory
- /home/user/projects:/data:ro
# Or mount individual projects
- /home/user/my-python-app:/data/my-python-app:ro
- /home/user/my-node-app:/data/my-node-app:ro然后告诉你的AI代理使用挂载的路径进行扫描:
- “扫描
/data/my-python-app漏洞” - “在上运行SCA扫描
/data/my-node-app" - “为生成AIBOM
/data/my-python-app"
______________________________________________________________________
MCP客户端配置
克劳德代码
添加 ~/.claude.json 在...之下 mcpServers:
{
"mcpServers": {
"snyk": {
"type": "sse",
"url": "http://host-ip:8010/sse"
}
}
}或者对于流式HTTP:
{
"mcpServers": {
"snyk": {
"type": "http",
"url": "http://host-ip:8010/mcp"
}
}
}VS代码/代码/光标/风帆
它们都使用相同的JSON格式。在相应的配置文件中进行配置:
- VS Code:
.vscode/settings.json(按键:mcp.servers) - 法典:
~/.codex/config.json(按键:mcpServers) - 光标:
~/.cursor/mcp.json(按键:mcpServers) - 帆板运动:
.codeium/mcp_settings.json(按键:mcpServers)
{
"mcpServers": {
"snyk": {
"transport": "http",
"url": "http://host-ip:8010/mcp"
}
}
}______________________________________________________________________
可用标签
| 标签 | 平台 | 描述 |
|---|---|---|
latest | amd64, arm64 | 最新稳定版本 |
1.1304.3 | amd64, arm64 | 具体版本 |
______________________________________________________________________
许可证
此Docker镜像打包已获得许可 GNU通用公共许可证v3.0.
上游许可证
- Snyk命令行界面: Apache许可证2.0 -版权所有2015斯奈克有限公司。
- 超级网关:MIT许可证
- HAProxy:GNU通用公共许可证v2.0
这是一个 非官方的 社区包装。它不隶属于斯奈克有限公司、由其背书或由其支持参见 通知 以获得完整的归属。
______________________________________________________________________
😎 给我买杯咖啡☕︎
您的支持鼓励我继续创建/支持我的开源项目。 如果你在这个项目中发现了价值,你可以给我买杯咖啡,让我保持灵感。
______________________________________________________________________
维护者
穆罕默德·梅凯埃尔·阿尼克
