vulnicheck について
VulniCheckは、PythonプロジェクトやGitHubリポジトリを検査するDockerベースのHTTP MCPサーバーです。依存関係やシークレットの確認、Dockerfile分析に加え、任意でAIによるリスク評価を行います。
主な機能
- 01Python依存関係の脆弱性スキャン
- 02露出したシークレットや認証情報の検出
- 03Dockerfileのセキュリティ分析
- 04公開・非公開GitHubリポジトリのスキャン
- 05MCPセキュリティ設定の検証
- 06AIを用いたリスク評価
活用シーン
- 01Pythonプロジェクトの依存関係確認
- 02リポジトリ内の認証情報漏えい調査
- 03Dockerfile内の脆弱なパッケージの評価
- 04MCPサーバーのセキュリティ設定の確認
MCP 対応
HTTPストリーミング経由で、依存関係確認、シークレット検出、リポジトリスキャン、リスク評価などのセキュリティツールをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
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:mainNVD_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 operationsANTHROPIC_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
VulniCheck - AI を活用したセキュリティスキャナー
VulniCheck は、AI を活用した脆弱性検出により、Python プロジェクトと GitHub リポジトリの包括的なセキュリティ分析を提供します。標準の HTTP ストリーミング(SSE 不要)を使用する Docker ベースの HTTP MCP サーバーとして動作し、包括的な脆弱性スキャン機能を備えた安全なコンテナ化デプロイを実現します。
クイックスタート
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 キーを設定すると、レート制限が緩和され、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 の有効化
-
Google OAuth の認証情報を取得する:
- Google Cloud Console にアクセスします
- プロジェクトを作成し、Google+ API を有効にします
- OAuth 2.0 の認証情報(Web application)を作成します
- 承認済みのリダイレクト URI を追加します:
http://localhost:3000/oauth/callback(またはご利用のドメイン)
-
環境変数を設定する:
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" -
認証を有効にして実行する:
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 -
docker-compose を使用する: 設定例の全体については、
docker-compose.auth-example.ymlを参照してください。
注:OAuth トークンは /home/vulnicheck/.vulnicheck/tokens に保存されます。コンテナの再起動後もトークンを保持するには、Docker ボリュームを使用してください。
⚠️ 既知の OAuth の制限
FastMCP OAuth と HTTP トランスポートの非互換性
FastMCP 2.12.4 の制限により、HTTP トランスポート(streamable-http)では OAuth 認証が正しく動作しません。認可エンドポイント(/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 の有料プランを使用してください
今後の解決策: この制限は、次のいずれかが実現した場合に解消されます。
- FastMCP が OAuth と HTTP トランスポートのサポートを修正する、または
- 代替の認証方式が実装される
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 は動作しません):
OAuth をテストするための便利なスクリプト restart-vulnicheck-ngrok.sh が用意されていますが、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 Hub:andrasfe/vulnicheck
- 最新タグ:
andrasfe/vulnicheck:latest
要件
- Docker
- Claude Code または HTTP トランスポートをサポートする任意の MCP クライアント(標準 HTTP、SSE は不要)
- オプション:拡張機能用の API キー
サポートされるファイル形式
- 依存関係:
requirements.txt、pyproject.toml、setup.py、ロックファイル - コンテナ:
Dockerfile、docker-compose.yml - シークレット:すべてのテキスト形式のソースファイル
- GitHub:公開または非公開の任意のリポジトリ URL
サポート
- 問題:問題は https://github.com/andrasfe/vulnicheck/issues で報告してください
- 開発:開発の詳細については CLAUDE.md を参照してください
- セキュリティ:セキュリティ上の問題は GitHub Security Advisories から非公開で報告してください
免責事項:脆弱性データは保証なしの「現状有姿」で提供されます。検証と修正は利用者の責任です。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。