MCPサーバーのための統合セキュリティスキャナーで、config、pentest、repo-scanモードを備えています。CI/CD統合用にSARIFレポートを生成し、トークンおよびLLMアナライザーを介してシークレット、脆弱性、誤設定を検出します。
[!NOTE] AIエージェントのスキルを保護したいですか? Skill X-Ray をチェックしてください。これは、スキルパッケージを実行せずに、インストール前に悪意のある、またはリスクの高い動作を分析するオープンソースの静的セキュリティスキャナーです。
MCP X-Ray は、Model Context Protocol (MCP) サーバー向けの統合オープンソースのセキュリティスキャンおよびペネトレーションテストソリューションです。セキュリティツールや CI/CD パイプラインとのシームレスな統合のために、本番環境で利用可能な SARIF レポート を生成します。スキャン結果は、一元化されたセキュリティ管理と追跡のために Traceforce Atlas にオプションでアップロードできます。Atlas のレジストリには 600 以上の MCP が登録されており、MCP エコシステム向けの包括的なセキュリティ評価データベースを提供しています。
# Clone the repository
git clone https://github.com/traceforce/mcp-xray
cd mcp-xray
# Install required dependencies (buf, etc.)
make install-dependencies
# Build everything (generates protobuf code and builds the binary)
# The binary will be created as `mcpxray` in the current directory
make all
MCP 設定のセキュリティ問題をスキャンします。ペネトレーションテストの前に実行して、セットアップのベースラインを取得してください。
# Scan a specific MCP config file (uses token analyzer by default)
./mcpxray config-scan /path/to/mcp/config.json
# Scan all known MCP config paths automatically for Cursor, Claude and Windsurf.
# Known config locations (relative to home directory):
# ~/.cursor/mcp.json (Cursor)
# ~/Library/Application Support/Claude/claude_desktop_config.json (Claude Desktop)
# ~/.codeium/windsurf/mcp_config.json (Windsurf)
./mcpxray config-scan --scan-known-configs
# Use LLM analyzer for more extensive and deepr analysis
./mcpxray config-scan /path/to/mcp/config.json --analyzer-type llm --llm-model claude-3-5-sonnet-20241022
# Specify custom output file
./mcpxray config-scan /path/to/mcp/config.json --output custom-report.sarif.json
検出機能:
MCPサーバーに対して実際のツール呼び出しを行うことで、セキュリティテスト計画を実行します。Pentestの実行にはLLMが必要です。本番環境への実際のデプロイ前にこれを実行してください。
# Run pentest with auto-generated test plan (requires LLM model)
./mcpxray pentest /path/to/mcp/config.json --llm-model claude-sonnet-4-5
# Use a custom test plan YAML file
./mcpxray pentest /path/to/mcp/config.json --test-plan /path/to/test-plan.yaml --llm-model claude-sonnet-4-5
検出機能: コード実行、SSRF、パストラバーサル、認可バイパス、入力インジェクション、情報漏えい、DoS 脆弱性
コードベースの脆弱性をスキャンします。コードを所有している場合、またはコードを変更できる場合に使用します。
# Scan current directory
./mcpxray repo-scan
# Scan a specific repository
./mcpxray repo-scan /path/to/repository
# Specify custom output file
./mcpxray repo-scan --output custom-report.sarif.json
検出機能:
テイント SAST は OpenGrep エンジンを使用します。固定され SHA 検証済みのバイナリを make install-opengrep でインストールしてください(Linux x86_64/arm64、macOS arm64/x86_64)。その他のプラットフォームでは、opengrep を自身でインストールし、MCPXRAY_OPENGREP_BIN を設定してください。テイント解析はインストールによって有効化されます。repo-scan は固定されたエンジンが解決可能な場合は常にこれを実行し、エンジンが存在しない場合はテイントをスキップしつつ、SCA、シークレット、および安全でないコマンドルールは引き続き実行します。
Go および TypeScript(さらに Python)におけるファイル横断的・手続き間テイント解析には、CodeQL エンジンをインストールしてください。これもインストールによって有効化され、その検出結果は OpenGrep の結果とマージされます:
make install-codeql # pinned CodeQL bundle (Linux x86_64, macOS, Windows)
./mcpxray repo-scan <repo> # every installed engine runs; results merged
CodeQLは言語ごとにデータベースを構築するため、バンドルをインストールするとスキャンに明らかに時間がかかるようになります。これはクロスファイル解析の対価です。高速なファイル内パスのみに戻すには、インストールしたときと同じ方法でエンジンをアンインストールします。make install-codeql でインストールしたバンドル(バイナリの隣にあります)を削除するか、特定のバイナリを指定していた場合は MCPXRAY_CODEQL_BIN を unset してください。PythonとTypeScriptの抽出はビルド不要です(ターゲットは実行されません)。Goにはビルド不要モードがないため、CodeQLはターゲットをコンパイルします。このステップは --codeql-allow-build を指定した場合にのみ実行され、それ以外では警告とともにスキップされます。スキャンがプロンプトでブロックされることはありません。
各言語には database create と analyze を合わせた時間予算が設定されます — デフォルトは600秒です。これを超えたターゲットは何も寄与しないため、大規模なリポジトリでは --codeql-timeout <seconds>(または MCPXRAY_CODEQL_TIMEOUT)で予算を引き上げてください。両方が設定されている場合はフラグが優先されます。予算超過は timed out after Ns として報告され、クリーンなゼロとして扱われることは決してありません。
MCP X-Rayは、セキュリティツールやCI/CDプラットフォームで広くサポートされているSARIF (Static Analysis Results Interchange Format)形式でレポートを生成します。
集中管理されたセキュリティ管理、レポート作成、および経時的な追跡のために、スキャン結果をTraceforce Atlasにアップロードします。任意のスキャンコマンドに --upload フラグを追加してください。アップロード成功後に生成されたファイルを削除するには --clean-up を使用します。
必要な環境変数:
TRACEFORCE_CLIENT_IDTRACEFORCE_CLIENT_SECRETこれらの認証情報は、Atlas UIの設定ページからダウンロードできます。
# Upload config scan results
./mcpxray config-scan /path/to/mcp/config.json --upload
# Upload with cleanup
./mcpxray config-scan /path/xia-add-registry-imageto/mcp/config.json --upload --clean-up
# Upload pentest results
./mcpxray pentest /path/to/mcp/config.json --llm-model claude-sonnet-4-5 --upload

スキャン出力の例は examples/findings/ にあります。
MCP 設定ファイルの例は examples/mcp_configs/ ディレクトリにあります。
MCP サーバーの例は examples/mcp_server/ ディレクトリにあります:
mcp_server.py: streamable-http トランスポートを使用する FastMCP サーバーmcp.json: サーバーに接続するための設定ファイルREADME.md: サーバーのセットアップとスキャンの手順MCP X-Ray はツールのセキュリティを分析するための 2 つのメソッドを提供します:
トークンアナライザーは、ルールベースのパターンマッチングを使用して、ツールの説明におけるセキュリティ問題を迅速に検出します。高速で、API キーを必要とせず、オフラインで動作します。トークンアナライザーは 2 種類のルールを使用します:
internal/configscan/tokenanalyzer/token_rules.yaml で定義されています。各ルールは以下を指定します:
internal/yararules/unsafe_patterns.yar で定義されています。これらのルールは安全でないシステムコマンドのパターンを検出します。使用方法:
mcpxray config-scan --analyzer-type token
LLMアナライザーは大規模言語モデルを用いてツールの説明を深く意味解析し、より包括的なセキュリティインサイトを提供します。
使用方法:
mcpxray config-scan --analyzer-type llm --llm-model <model-name>
デフォルトでは、ペネトレーションテストツールは MCP サーバーから利用可能なツールに基づいてテスト計画を自動生成するために LLM を使用します。テスト計画はカスタマイズして YAML ファイルとして提供することもできます。テスト計画は、入力引数と期待される出力を含むテストケースを記述した YAML ファイルです。
デフォルトの動作(LLM 生成テスト計画):
./mcpxray pentest /path/to/mcp/config.json --llm-model claude-sonnet-4-5
カスタムテストプラン:
./mcpxray pentest /path/to/mcp/config.json --test-plan /path/to/test-plan.yaml --llm-model claude-sonnet-4-5
MCP X-Ray は、ツール分析のために以下の LLM プロバイダーをサポートしています:
claude-sonnet-4-5ANTHROPIC_API_KEY 環境変数gpt-5OPENAI_API_KEY 環境変数arn:aws:bedrock: で始まり llama を含む Meta Llama 推論プロファイル ARNarn:aws:bedrock:<region>:<account-id>:inference-profile/us.meta.llama3-2-1b-instruct-v1:0LLM ベースのツール分析には、LLM API の認証情報を設定してください:
export ANTHROPIC_API_KEY=your-api-key
export OPENAI_API_KEY=your-api-key
各プロバイダーにはそれぞれ固有の環境変数が必要です。ツールはモデル名に基づいて使用するプロバイダーを自動的に検出します。
AWS Bedrock モデルの場合は、標準的な AWS SDK の方法のいずれかを使用して AWS 認証情報を設定します:
# Option 1: Environment variables
export AWS_ACCESS_KEY_ID=your-access-key
export AWS_SECRET_ACCESS_KEY=your-secret-key
export AWS_REGION=us-east-1
# Option 2: AWS credentials file (~/.aws/credentials)
# Option 3: IAM role (when running on EC2/ECS/Lambda)
MCP X-RayはAWS SDKを使用しており、環境変数、認証情報ファイル、またはIAMロールから認証情報を自動的に読み込みます。
コントリビューションを歓迎します!以下を確認してください: