mcpField
V
vulnicheck

vulnicheck

本地服务
github.com/andrasfe安全1135 周前更新

关于 vulnicheck

VulniCheck 是基于 Docker 的 HTTP MCP 服务,用于扫描 Python 项目和 GitHub 仓库安全问题。它结合依赖与密钥检查、Dockerfile 分析,以及可选的 AI 风险评估。

主要功能

  1. 01扫描 Python 依赖中的漏洞
  2. 02检测暴露的密钥和凭据
  3. 03分析 Dockerfile 安全问题
  4. 04扫描公开和私有 GitHub 仓库
  5. 05验证 MCP 安全配置
  6. 06生成 AI 辅助风险评估

适用场景

  1. 01检查 Python 项目的依赖
  2. 02排查仓库中泄露的凭据
  3. 03评估 Dockerfile 中的易受攻击软件包
  4. 04审查 MCP 服务的安全配置

MCP 相关

通过 HTTP 流式传输向 MCP 客户端提供安全扫描工具,包括依赖检查、密钥检测、仓库扫描和风险评估。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"andrasfe-vulnicheck": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"NVD_API_KEY",
"-e",
"GITHUB_TOKEN",
"-e",
"OPENAI_API_KEY",
"-e",
"ANTHROPIC_API_KEY",
"-e",
"MCP_PORT",
"-e",
"CACHE_TTL",
"-e",
"VULNICHECK_HTTP_ONLY",
"docker.io/andrasfe/vulnicheck:main"
],
"env": {
"NVD_API_KEY": "<NVD_API_KEY>",
"GITHUB_TOKEN": "<GITHUB_TOKEN>",
"OPENAI_API_KEY": "<OPENAI_API_KEY>",
"ANTHROPIC_API_KEY": "<ANTHROPIC_API_KEY>",
"MCP_PORT": "<MCP_PORT>",
"CACHE_TTL": "<CACHE_TTL>",
"VULNICHECK_HTTP_ONLY": "<VULNICHECK_HTTP_ONLY>"
}
}
}
}
启动命令docker run -i --rm -e NVD_API_KEY -e GITHUB_TOKEN -e OPENAI_API_KEY -e ANTHROPIC_API_KEY -e MCP_PORT -e CACHE_TTL -e VULNICHECK_HTTP_ONLY docker.io/andrasfe/vulnicheck:main
需要配置的环境变量
NVD_API_KEY密钥API key for NIST National Vulnerability Database (increases rate limit from 5 to 50 requests per 30 seconds)
GITHUB_TOKEN密钥GitHub token for Advisory Database access (increases rate limit to 5000 requests per hour)
OPENAI_API_KEY密钥OpenAI API key for LLM-based risk assessment in MCP passthrough operations
ANTHROPIC_API_KEY密钥Anthropic API key for LLM-based risk assessment (alternative to OpenAI)
MCP_PORTPort for MCP HTTP server (default: 3000)
CACHE_TTLCache time-to-live in seconds for vulnerability data (default: 900)
VULNICHECK_HTTP_ONLYEnable HTTP-only mode with MCP client delegation (true/false, default: auto-detect)

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

安装包
ocidocker.io/andrasfe/vulnicheck:main

工具

还没有获取到工具列表

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

详细介绍

VulniCheck - AI 驱动的安全扫描器

VulniCheck 利用 AI 驱动的漏洞检测,为 Python 项目和 GitHub 仓库提供全面的安全分析。它以基于 Docker 的 HTTP MCP 服务运行,使用标准 HTTP 流式传输(无需 SSE),提供安全的容器化部署和全面的漏洞扫描功能。

快速开始

1. 拉取并运行 Docker 容器
# Pull the latest image from Docker Hub
docker pull andrasfe/vulnicheck:latest

# Run with OpenAI API key (for enhanced AI-powered risk assessment)
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  -e OPENAI_API_KEY=your-openai-api-key \
  andrasfe/vulnicheck:latest

# Or run without API key (basic vulnerability scanning)
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  andrasfe/vulnicheck:latest
2. 添加到 Claude Code
claude mcp add --transport http vulnicheck http://localhost:3000/mcp

完成!VulniCheck 现已可在 Claude Code 中使用。

用法

安装后,只需向 Claude 提问:

"Run a comprehensive security check on my project"

"Scan https://github.com/owner/repo for vulnerabilities"

"Check my dependencies for security issues"

"Scan my Dockerfile for vulnerable packages"

VulniCheck 将会:

  • ✅ 扫描依赖项中的已知漏洞(requirements.txt、pyproject.toml、setup.py)
  • ✅ 检测泄露的机密信息和凭据
  • ✅ 分析 Dockerfile 中的安全问题
  • ✅ 验证 MCP 配置
  • ✅ 生成 AI 驱动的风险评估
  • ✅ 提供可执行的修复建议

主要功能

  • Docker 部署:通过 HTTP 流式传输实现安全的容器化部署(无需 SSE/Server-Sent Events)
  • 可选身份验证:支持 Google OAuth 2.0,以进行安全访问控制(默认禁用)
  • 可用于生产环境:可扩展的 HTTP 服务架构
  • 全面覆盖:查询 5+ 个漏洞数据库(OSV.dev、NVD、GitHub Advisory、CIRCL、Safety DB)
  • GitHub 集成:直接扫描任何公开或私有的 GitHub 仓库(最大 1GB)
  • AI 驱动的分析:使用 OpenAI/Anthropic API 进行智能安全评估
  • 机密信息检测:查找泄露的 API 密钥、密码和凭据
  • Docker 安全:分析 Dockerfile 中存在漏洞的依赖项
  • 智能缓存:通过提交级缓存避免重复扫描
  • 空间管理:自动清理,防止磁盘空间耗尽(总量上限为 2GB)
  • 零配置:开箱即用,也可通过可选 API 密钥增强功能

可用工具

工具描述
check_package_vulnerabilities检查特定 Python 包是否存在漏洞
scan_dependencies扫描依赖文件(requirements.txt、pyproject.toml 等)
scan_installed_packages扫描当前已安装的 Python 包
get_cve_details获取特定 CVE 的详细信息
scan_for_secrets检测代码中泄露的机密信息和凭据
scan_dockerfile分析 Dockerfile 中存在漏洞的 Python 依赖项
scan_github_repo全面扫描 GitHub 仓库的安全性
assess_operation_safety由 AI 驱动的操作风险评估
validate_mcp_security验证 MCP 服务安全配置
comprehensive_security_check交互式 AI 驱动的安全评估

可选 API 密钥

使用 API 密钥增强 VulniCheck,以获得更高的速率限制和 AI 功能:

docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  -e OPENAI_API_KEY=your-key \           # AI-powered risk assessment
  -e ANTHROPIC_API_KEY=your-key \        # Alternative AI provider
  -e GITHUB_TOKEN=your-token \           # Higher GitHub API rate limits
  -e NVD_API_KEY=your-key \              # Higher NVD rate limits
  andrasfe/vulnicheck:latest

身份验证(可选)

VulniCheck 支持可选的 Google OAuth 2.0 身份验证,以实现安全访问控制。默认情况下,身份验证处于禁用状态。

启用 Google OAuth
  1. 获取 Google OAuth 凭据:

    • 前往 Google Cloud Console
    • 创建项目并启用 Google+ API
    • 创建 OAuth 2.0 凭据(Web 应用)
    • 添加授权重定向 URI:http://localhost:3000/oauth/callback(或你的域名)
  2. 配置环境变量:

    export FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_ID="your-client-id.apps.googleusercontent.com"
    export FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_SECRET="GOCSPX-your-secret-here"
    export FASTMCP_SERVER_BASE_URL="http://localhost:3000"
    
  3. 启用身份验证运行:

    docker run -d --name vulnicheck-mcp -p 3000:3000 \
      --restart=unless-stopped \
      -e FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_ID=your-client-id \
      -e FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_SECRET=your-secret \
      -e FASTMCP_SERVER_BASE_URL=http://localhost:3000 \
      -v vulnicheck_tokens:/home/vulnicheck/.vulnicheck/tokens \
      andrasfe/vulnicheck:latest \
      python -m vulnicheck.server --auth-mode google
    
  4. 使用 docker-compose: 完整配置示例请参阅 docker-compose.auth-example.yml。

注意:OAuth 令牌会保存在 /home/vulnicheck/.vulnicheck/tokens。使用 Docker 卷可在容器重启后保留令牌。

⚠️ 已知 OAuth 限制

FastMCP OAuth 与 HTTP 传输不兼容

由于 FastMCP 2.12.4 的限制,OAuth 身份验证与 HTTP 传输(streamable-http)配合使用时无法正常工作。授权端点(/oauth/authorize、/oauth/callback)未正确挂载,因此会返回 404 错误。

OAuth 可用的情况:

  • ✅ 本地连接(未来版本的 FastMCP 支持时)
  • ✅ OAuth 发现端点可用(/.well-known/oauth-protected-resource)

OAuth 不可用的情况:

  • ❌ 外部客户端(ChatGPT、Claude Desktop 等)使用 HTTP 传输
  • ❌ 授权端点返回 404
  • ❌ 令牌交换失败

外部客户端(ChatGPT 等)的解决方法:

通过 ngrok 或其他公开 URL 访问时,不使用身份验证运行 VulniCheck:

# Start without OAuth (recommended for external clients)
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  andrasfe/vulnicheck:latest

# Then configure ngrok
ngrok http 3000

在 MCP 客户端(ChatGPT 等)中:

  • URL:https://your-ngrok-url.ngrok-free.dev/mcp
  • 身份验证:无

安全注意事项:

  • ✅ 流量通过 HTTPS(ngrok)加密
  • ⚠️ 无身份验证——任何拥有 URL 的人都可以访问
  • 💡 ngrok 免费 URL 会在重启后改变(依靠隐蔽性实现安全)
  • 🔒 在生产环境中,请使用带密码保护或 IP 白名单的 ngrok 付费套餐

未来的解决方案: 此限制将在以下情况得到解决:

  1. FastMCP 修复对 OAuth + HTTP 传输的支持,或
  2. 实现其他身份验证机制
使用 ngrok

快速开始(无 OAuth):

# 1. Start VulniCheck
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  andrasfe/vulnicheck:latest

# 2. Start ngrok
ngrok http 3000

# 3. Use the ngrok URL in your MCP client
# URL: https://your-generated-url.ngrok-free.dev/mcp
# Authentication: None

可选 OAuth 脚本(实验性——OAuth 不可用):

提供了便捷脚本 restart-vulnicheck-ngrok.sh,用于测试 OAuth,但由于 FastMCP 的限制,OAuth 目前无法正常工作:

# Copy the example environment file
cp .env.example .env

# Edit .env and add your credentials
GOOGLE_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=GOCSPX-your-secret-here
NGROK_URL=https://your-ngrok-url.ngrok-free.dev

# Run the script (OAuth will not work)
./restart-vulnicheck-ngrok.sh

注意:此脚本供未来使用,待 FastMCP 修复 OAuth + HTTP 传输后即可使用。目前,外部客户端始终应在不使用 OAuth 的情况下运行。

从源代码构建

# Clone the repository
git clone https://github.com/andrasfe/vulnicheck.git
cd vulnicheck

# Build Docker image
docker build -t vulnicheck .

# Run locally built image (no auth)
docker run -d --name vulnicheck-mcp -p 3000:3000 --restart=unless-stopped vulnicheck

# Run with Google OAuth
docker run -d --name vulnicheck-mcp -p 3000:3000 \
  --restart=unless-stopped \
  -e FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_ID=your-client-id \
  -e FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_SECRET=your-secret \
  -e FASTMCP_SERVER_BASE_URL=http://localhost:3000 \
  -v vulnicheck_tokens:/home/vulnicheck/.vulnicheck/tokens \
  vulnicheck \
  python -m vulnicheck.server --auth-mode google

Docker Hub

官方 Docker 镜像可在以下位置获取:

要求

  • Docker
  • Claude Code 或任何支持 HTTP 传输的 MCP 客户端(标准 HTTP,无需 SSE)
  • 可选:用于增强功能的 API 密钥

支持的文件类型

  • 依赖项:requirements.txt、pyproject.toml、setup.py、锁定文件
  • 容器:Dockerfile、docker-compose.yml
  • 机密信息:所有基于文本的源文件
  • GitHub:任何公开或私有仓库 URL

支持


免责声明:漏洞数据按“原样”提供,不作任何保证。用户有责任进行验证和修复。

评论

支持 Markdown

第一次接触 MCP?

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

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