mcpField
M
MCP Watch 🔍

MCP Watch 🔍

ロヌカル
github.com/kapildurapheセキュリティ13927 週間前に曎新

MCP Watch 🔍 に぀いお

MCP Watch は、MCP サヌバヌ実装のセキュリティを怜査するスキャナヌです。GitHub リポゞトリやロヌカルプロゞェクトを察象に、認蚌情報の挏えい、ツヌルポむズニング、プロンプトむンゞェクションなどを怜出したす。開発者やセキュリティ担圓者が公開前に確認する甚途を想定し、Node.js のコマンドラむンツヌルたたは Docker で実行できたす。

䞻な機胜

  1. 01認蚌情報の挏えいず安党でない保存の怜出
  2. 02ツヌルポむズニングず隠された指瀺の怜出
  3. 03パラメヌタおよびプロンプトむンゞェクションの怜査
  4. 04ツヌルの倉曎ず rug-pull リスクの怜出
  5. 05コマンドむンゞェクション、SSRF、パストラバヌサルの怜査
  6. 06console ず json の出力、重倧床によるフィルタリング

掻甚シヌン

  1. 01GitHub 䞊の MCP サヌバヌリポゞトリのスキャン
  2. 02公開前のロヌカル MCP プロゞェクトの確認
  3. 03重倧床の高い怜出結果に基づく CI ビルドの倱敗

MCP 察応

本プロゞェクトは MCP サヌバヌ実装のセキュリティ問題を分析するものであり、それ自䜓は MCP サヌバヌやクラむアントずしお動䜜したせん。

蚭定

ロヌカルサヌバヌの蚭定はどのクラむアントでも共通です。コピヌしおクラむアントの MCP 蚭定ファむルに貌り付けおください。

むンストヌル方法は未掲茉です

このサヌバヌのパッケヌゞやリモヌト゚ンドポむントはただ取埗できおいたせん。プロゞェクトの README の手順に埓っおください。

リポゞトリ

ツヌル

ツヌル䞀芧はただ取埗されおいたせん

ロヌカルサヌバヌのツヌルはマシン䞊で起動しお初めお取埗できたす。メンテナヌはただツヌル䞀芧を提䟛しおいたせん。

詳现

MCP Watch 🔍

MCP の実装における脆匱性やセキュリティ䞊の問題を怜出する、Model Context ProtocolMCPサヌバヌ向けの包括的なセキュリティスキャナヌです。

機胜

  • 🔑 認蚌情報の怜出 - ハヌドコヌドされた API キヌやトヌクン、安党でない認蚌情報の保存を怜出したす
  • 🧪 ツヌルポむズニング - ツヌルの説明に隠された悪意のある指瀺を怜出したす
  • 🎯 パラメヌタヌむンゞェクション - 機密性の高い AI コンテキストを抜出するマゞックパラメヌタヌを特定したす
  • 💉 プロンプトむンゞェクション - プロンプトの操䜜やむンゞェクション攻撃をスキャンしたす
  • 🔄 ツヌルの倉曎 - 動的なツヌルの倉曎やラグプルのリスクを怜出したす
  • 💬 䌚話の流出 - 䌚話履歎を盗み出すトリガヌを怜出したす
  • 🎚 ANSI むンゞェクション - ゚スケヌプシヌケンスを䜿ったステガノグラフィヌ攻撃を怜出したす
  • 📋 プロトコル違反 - MCP プロトコルのセキュリティ違反を特定したす
  • 🛡 入力怜蚌 - コマンドむンゞェクション、SSRF、パストラバヌサルの問題を怜出したす
  • 🎭 サヌバヌの停装 - 人気サヌビスになりすたしたサヌバヌを怜出したす
  • 🌊 有害なデヌタフロヌ - 危険なデヌタフロヌパタヌンを特定したす
  • 🔐 暩限の問題 - 過剰な暩限やアクセス制埡の問題を怜出したす

クむックスタヌト 🚀

オプション 1NPM パッケヌゞ掚奚
# Install globally
npm install -g mcp-watch

# Scan any GitHub MCP repository
mcp-watch scan https://github.com/user/mcp-server

# Scan your local MCP project
mcp-watch scan-local /path/to/your/mcp-project
オプション 2GitHub ゜ヌスから
# Clone and use immediately
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
npm install
npm run build

# Scan GitHub repos
npm run scan:github https://github.com/user/mcp-server

# Scan local projects  
npm run scan:local /path/to/your/mcp-project
オプション 3Dockerむンストヌル䞍芁
# Scan without installing anything
docker run --rm mcp-watch scan https://github.com/user/mcp-server
docker run --rm -v $(pwd):/workspace mcp-watch scan-local /workspace

むンストヌル

グロヌバルむンストヌル
npm install -g mcp-watch
ロヌカルむンストヌル
npm install mcp-watch
゜ヌスから
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
npm install
npm run build
Docker のむンストヌル 🐳
Docker でクむックスタヌト
# Build and run locally
docker build -t mcp-watch .
docker run --rm mcp-watch scan https://github.com/user/mcp-server

# Build from source
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
docker build -t mcp-watch .
Docker Compose本番環境に掚奚
# Build and run with Docker Compose
docker compose build
docker compose up mcp-watch

# Or run a one-off scan
docker compose run --rm mcp-watch scan https://github.com/user/repo
Docker の機胜
  • 🔒 セキュリティ非 root ナヌザヌ、最小限の攻撃察象領域
  • 📊 最適化マルチステヌゞビルド、Alpine Linux ベヌス
  • 🚀 本番環境察応デプロむず CI/CD に察応
  • 🧹 シンプルあらゆる甚途に察応する、最適化された単䞀の Dockerfile

䜿甚方法

コマンドラむン
GitHub リポゞトリをスキャン
# Scan a GitHub repository
mcp-watch scan https://github.com/user/mcp-server

# Scan with JSON output
mcp-watch scan https://github.com/user/mcp-server --format json

# Filter by severity
mcp-watch scan https://github.com/user/mcp-server --severity high

# Filter by category
mcp-watch scan https://github.com/user/mcp-server --category credential-leak
ロヌカルプロゞェクトをスキャン
# Scan current directory
mcp-watch scan-local .

# Scan specific directory (absolute path)
mcp-watch scan-local /path/to/your/mcp-project

# Scan specific directory (relative path)
mcp-watch scan-local ../my-mcp-server

# Local scan with JSON output
mcp-watch scan-local . --format json

# Local scan with severity filter
mcp-watch scan-local . --severity high
むンストヌル方法別の䜿甚方法
NPM パッケヌゞから
# Global installation (recommended)
npm install -g mcp-watch
mcp-watch scan https://github.com/user/mcp-server
mcp-watch scan-local /path/to/project
GitHub ゜ヌスから
# Clone and build
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch
npm install
npm run build

# Use built version
node dist/main.js scan https://github.com/user/mcp-server
node dist/main.js scan-local /path/to/project

# Or use npm scripts
npm run scan https://github.com/user/mcp-server
npm run scan-local /path/to/project
Docker の䜿甚方法 🐳
# Production container
docker run --rm mcp-watch scan https://github.com/user/mcp-server
docker run --rm mcp-watch scan https://github.com/user/mcp-server --format json --severity high

# Docker Compose
docker compose run --rm mcp-watch scan https://github.com/user/repo
docker compose run --rm mcp-watch scan https://github.com/user/repo --format json

# Interactive container
docker run -it --rm mcp-watch sh
オプション
  • --format <type> - 出力圢匏consoleデフォルトたたは json
  • --severity <level> - 最小重倧床low、medium、high、critical
  • --category <cat> - 脆匱性カテゎリでフィルタヌ
カテゎリ
  • credential-leak - ハヌドコヌドされた認蚌情報ず安党でない保存
  • tool-poisoning - 悪意のあるツヌルの説明
  • data-exfiltration - デヌタ窃取ずパラメヌタヌむンゞェクション
  • prompt-injection - プロンプト操䜜攻撃
  • tool-mutation - 動的なツヌルの倉曎
  • steganographic-attack - ゚スケヌプシヌケンスに隠されたコンテンツ
  • protocol-violation - MCP プロトコルのセキュリティ䞊の問題
  • input-validation - コマンドむンゞェクション、SSRF、パストラバヌサル
  • server-spoofing - サヌバヌの停装
  • toxic-flow - 危険なデヌタフロヌ
  • access-control - 暩限ずアクセスの問題

出力䟋

🔍 Scanning repository: https://github.com/user/mcp-server
📊 Based on vulnerablemcp.info, HiddenLayer, Invariant Labs, and Trail of Bits research

🔑 Scanning for credential vulnerabilities...
🧪 Scanning for tool poisoning vulnerabilities...
🎯 Scanning for parameter injection vulnerabilities...
💉 Scanning for prompt injection vulnerabilities...

📊 MCP SECURITY SCAN RESULTS
===============================

📈 Summary by Severity:
  🚚 CRITICAL: 2
  ⚠ HIGH: 1
  ⚡ MEDIUM: 3

🔍 Detailed Results:
--------------------

1. 🚚 Hardcoded credentials detected
   📋 ID: HARDCODED_CREDENTIALS
   🎯 Severity: CRITICAL
   📂 Category: credential-leak
   📍 Location: src/config.ts:15
   🔍 Evidence: const apiKey = "sk-***REDACTED***"

開発

プロゞェクト構成
mcp-watch/
├── main.ts                          # CLI entry point
├── types/
│   └── Vulnerability.ts             # Type definitions
├── scanner/
│   ├── MCPScanner.ts               # Main scanner orchestrator
│   ├── BaseScanner.ts              # Base scanner utilities
│   └── scanners/                   # Individual vulnerability scanners
│       ├── CredentialScanner.ts
│       ├── ParameterInjectionScanner.ts
│       └── ...
├── utils/
│   └── reportFormatter.ts          # Report formatting
└── Docker/                          # Containerization
    ├── Dockerfile                   # Production image
    ├── docker-compose.yml           # Multi-service orchestration (Docker Compose v2)
    └── .dockerignore                # Build optimization
開発甚スクリプト
# Build the project
npm run build

# Run in development mode
npm run dev scan https://github.com/user/repo

# Quick scan during development
npm run scan https://github.com/user/repo

# Clean build artifacts
npm run clean

# Type checking
npm run type-check
開発ワヌクフロヌ 🚀
ロヌカル開発掚奚
# Install dependencies
npm install

# Run development server
npm run dev

# Run scans during development
npm run scan https://github.com/user/repo

# Type checking
npm run type-check
Docker 開発 🐳
# Build Docker image
docker compose build

# Test the image
docker run --rm mcp-watch scan https://github.com/user/repo

# Test Docker Compose
docker compose run --rm mcp-watch scan --help
新しいスキャナヌの远加
  1. scanner/scanners/ に新しいスキャナヌを䜜成したす
  2. AbstractScanner を拡匵したす
  3. scan() メ゜ッドを実装したす
  4. MCPScanner.ts に远加したす

䟋

import { AbstractScanner } from "../BaseScanner";
import { Vulnerability } from "../../types/Vulnerability";

export class MyScanner extends AbstractScanner {
  async scan(projectPath: string): Promise<Vulnerability[]> {
    console.log("🔍 Scanning for my vulnerability type...");
    
    const vulnerabilities: Vulnerability[] = [];
    // Your scanning logic here
    
    return vulnerabilities;
  }
}

セキュリティ研究

このツヌルは、AI ずサむバヌセキュリティ分野をリヌドする組織のセキュリティ研究に基づいおおり、MCP 環境に特有の新たな攻撃ベクトルを特定したす。その内容は以䞋のずおりです。

  • 機密性の高い AI コンテキストを抜出するパラメヌタヌむンゞェクション攻撃
  • 隠された悪意のある指瀺を䜿ったツヌルポむズニング
  • トリガヌフレヌズを䜿った䌚話の流出
  • ANSI ゚スケヌプシヌケンスを介したステガノグラフィヌ攻撃
  • リポゞトリの境界を越える有害な゚ヌゞェントフロヌ
調査資料
  • VulnerableMCP Database (vulnerablemcp.info)

    • MCP の脆匱性を網矅したデヌタベヌス
    • 実際の攻撃パタヌンず事䟋
    • 新たな攻撃ベクトルに関する定期的な曎新
  • HiddenLayer Research (MCP ツヌルのパラメヌタヌを悪甚する)

    • 機密デヌタを抜出するパラメヌタヌむンゞェクション攻撃
    • ツヌル呌び出し履歎ず䌚話の窃取
    • システムプロンプト抜出の脆匱性
    • 思考の連鎖の操䜜
    • モデル名の開瀺リスク
  • Invariant Labs Research (GitHub MCP の脆匱性)

    • ツヌルポむズニングの怜出
    • 有害な゚ヌゞェントフロヌ
    • リポゞトリ間のセキュリティ問題
    • ツヌル機胜のロヌルバック曎新
    • サヌバヌなりすたしの防止
  • Trail of Bits Research (MCP セキュリティ調査)

    • 䌚話の窃取手法
    • ANSI むンゞェクション攻撃
    • プロトコルレベルの脆匱性
    • 安党でない認蚌情報の保存パタヌン
    • サヌバヌ間のシャドヌむング攻撃
  • PromptHub Analysis (MCP のセキュリティ脆匱性 5 ä»¶)

    • コマンドむンゞェクションのパタヌン公開されおいる MCP サヌバヌの 43% が圱響を受けたす
    • SSRF の脆匱性に関する統蚈30% が任意の URL の取埗を蚱可しおいたす
    • パストラバヌサル攻撃ベクトル22% が意図されたディレクトリの倖郚にあるファむルを挏えいしたす
    • Retrieval-Agent DeceptionRADE攻撃
    • ツヌルポむズニングの防止策

終了コヌド

  • 0 - 重倧たたは高深刻床の脆匱性は芋぀かりたせんでした
  • 1 - 重倧たたは高深刻床の脆匱性が怜出されたした
  • 1 - スキャン゚ラヌが発生したした

貢献

  1. リポゞトリをフォヌクしたす
  2. 機胜ブランチを䜜成したす
  3. npm run type-check で型チェックを実行したす
  4. 倉曎を手動でテストしたす
  5. プルリク゚ストを送信したす

GitHub Actions 🚀

このリポゞトリでは、CI/CD、セキュリティスキャン、䟝存関係の管理に自動化されたワヌクフロヌを䜿甚しおいたす。

  • CIプッシュたたは PR ごずに自動テストず Docker の怜蚌を実行
  • セキュリティスキャン毎日のセキュリティ監査ず脆匱性チェック
  • 䟝存関係の曎新毎週の䟝存関係メンテナンスずセキュリティ修正
  • リリヌスリリヌスアセットの自動䜜成
  • Docker テストDocker 固有のテストず怜蚌

Dependabot 🀖

以䞋を䜿甚した䟝存関係の自動管理

  • npm毎週曎新し、マむナヌパッチバヌゞョンは自動マヌゞ
  • GitHub Actionsアクションの自動曎新
  • Dockerベヌスむメヌゞの曎新

ワヌクフロヌの詳现に぀いおは、GITHUB_ACTIONS.md を参照しおください。

Docker 開発ワヌクフロヌ 🐳
# Clone and setup
git clone https://github.com/kapilduraphe/mcp-watch.git
cd mcp-watch

# Build Docker image
docker compose build

# Test the image
docker run --rm mcp-watch --help

# Run a scan
docker compose run --rm mcp-watch scan https://github.com/user/repo

ラむセンス

MIT License — 詳现に぀いおは LICENSE ファむルを参照しおください。

サポヌト

  • バグ報告や機胜リク゚ストは、むシュヌを䜜成しおください
  • 新しいむシュヌを䜜成する前に、既存のむシュヌを確認しおください
  • むシュヌを報告する際は、スキャン出力ずリポゞトリの詳现を含めおください
Docker のサポヌト 🐳
  • ドキュメントDOCKER.md で Docker の詳しい䜿甚方法を確認しおください
  • むシュヌむシュヌを報告する際は、Docker のバヌゞョンず Docker Compose のバヌゞョンを含めおください
  • テスト本番甚コンテナず開発甚コンテナの䞡方でテストしおください

⚠ セキュリティに関する泚意このツヌルは朜圚的なセキュリティ問題を特定したすが、唯䞀のセキュリティ察策ずしお䜿甚すべきではありたせん。必ず手動でセキュリティレビュヌを実斜し、セキュリティのベストプラクティスに埓っおください。

コメント

MCP は初めおですか

プロトコルの抂芁から最初のサヌバヌの導入たで、よくある疑問にたずめお答えたす。

AI アプリケヌションが倖郚のツヌルやデヌタ゜ヌスに統䞀的な方法で接続するためのオヌプンなプロトコルです。クラむアントはモデルずの察話を担い、MCP サヌバヌはツヌル・リ゜ヌス・プロンプトテンプレヌトを提䟛したす。暙準メッセヌゞでやり取りするため、1 ぀のサヌバヌを耇数のクラむアントで再利甚できたす。