vuln_mcp_app
vuln_mcp_app
意図的に脆弱性を含み、ローカルで実行可能なModel Context Protocol(MCP)セキュリティラボ — 制御されたターゲット(概念的には「MCP版DVWA」)であり、別のFYPセキュリティスキャナを評価するために使用される。このアプリはターゲットであり、スキャナではない。 小規模で文書化された一連のMCP脆弱性をホストし、証拠を出力する。自身が脆弱であるかどうかを報告することはない(オラクルなし、SEC-006)。
⚠️ 教育・研究用途のみ。 すべてローカルで、合成データとダミーのシークレット(
DEMO_SECRET_*)を使用して実行される。実際の認証情報なし、外部ターゲットなし、インターネットスキャンなし、ホストアクセスなし。
スコープ(正確に3つのラボ)
ID | OWASP MCP | 脆弱性 | ステータス |
VULN-MCP03-001 | MCP03 | Tool Poisoning(ツールポイズニング) | 実装済み |
VULN-MCP05-001 | MCP05 | Command Injection & Execution(コマンドインジェクションおよび実行) | 実装済み |
VULN-MCP10-001 | MCP10 | Context Injection & Over-Sharing(コンテキストインジェクションと過剰共有) | 保留中 |
追加の脆弱性ラボはスコープ外。実装済みの各ラボには、VULNERABLEモードと、実際に修正されたSECUREモードが用意されている。
Related MCP server: vuln-mcp-server
実行方法(Docker不要 — 1つのコマンド+ブラウザ)
アプリ全体は単一のuvicornプロセスから実行される。FastAPIがビルド済みUIを/で、APIを/api配下で提供する。
初回
# 1) Build the UI once (Node 18+). Produces frontend/dist.
cd frontend && npm install && npm run build && cd ..
# 2) Run the app (uv resolves Python deps automatically; Python 3.12+).
uv run uvicorn backend.app.main:app --reload --host 127.0.0.1 --port 8000次に**http://127.0.0.1:8000を開くと、ラボUIが表示される。対話型APIドキュメントはhttp://127.0.0.1:8000/docs**にある。
uvではなく従来のvenvを好む場合?python -m venv .venv && source .venv/Scripts/activate # Windows Git Bash pip install -r backend/requirements.txt uvicorn backend.app.main:app --reload --host 127.0.0.1 --port 8000
初回ビルド後
uvicornコマンドを実行してブラウザを開くだけ。UIを再ビルド(npm run build)するのは、フロントエンドコードを変更した後のみ。
フロントエンドのホットリロード(任意、UI開発用)
APIを:8000で、Vite開発サーバを:5173で実行する(/apiをプロキシする):
# terminal 1
uv run uvicorn backend.app.main:app --reload --host 127.0.0.1 --port 8000
# terminal 2
cd frontend && npm run dev # open http://127.0.0.1:5173テスト
# Backend (pytest)
uv run pytest # or: .venv/Scripts/python -m pytest
# Frontend (Vitest + tsc)
cd frontend && npm test && npx tsc --noEmitアーキテクチャ
Browser (React SPA, served by FastAPI at :8000)
│ HTTP/JSON (/api)
▼
FastAPI control plane (ordinarily secure) ── MCP client ──► MCP tool registry
│ (vulnerable | secure)
▼ │
SQLite (labs, tools, telemetry, evidence) ◄── telemetry/evidence ─┘コントロールプレーンは通常セキュアなインフラストラクチャである(SEC-004)。明確にラベル付けされたMCPプレーンのツールだけが、vulnerableモードのときのみ脆弱になる。意図的に脆弱なファイルにはバナーが付く:
# INTENTIONALLY VULNERABLE — <VULN-ID> — see docs/GROUND-TRUTH.md。
MCPトランスポート: フェーズ0ではインプロセスのレジストリトランスポートを使用するため、アプリ全体が1つのプロセスで実行される。ストリーム可能なHTTP MCPトランスポート(公式SDK)は、同じクライアントAPIの背後にある将来のアップグレードである。
MCP05サンドボックス(ビルド時): Dockerを排除したため、MCP05ラボのコマンド実行は制約付きインプロセスサブプロセスランナーで行われる — 一時的な作業ディレクトリ、プロジェクト提供のフェイク
convertシム、ハードタイムアウト、セキュアモードではシェルなし。爆発半径はローカルかつ合成的に保たれる(SEC-001/003)。Dockerが提供していたOSレベルの分離(ネットワークなし、cap-drop)は、その制約付きランナーに置き換えられる。sandbox/README.mdを参照。
技術スタック
React + TypeScript + Vite + Tailwind · Python 3.12 + FastAPI + Pydantic v2 · 公式Python MCP SDK · SQLite + SQLModel · pytest + httpx · Vitest + Testing Library。uv/uvicornで実行(Dockerなし)。
APIサーフェス(FYPで分析可能)
GET /api/health · GET /api/labs · GET /api/labs/{id} ·
POST /api/labs/{id}/mode|reset|attack|start · GET /api/labs/{id}/telemetry ·
GET /api/mcp/servers|tools · GET /api/mcp/tools/{id} ·
POST /api/mcp/tools/{id}/call · GET /api/vulnerabilities(カタログメタデータのみ) · GET /api/evidence。
どのエンドポイントも脆弱性の判定を開示しない(SEC-006)。
FYPでの使用(評価ループ)
ターゲットを起動する(MCP03はデフォルトで
vulnerable)。docs/GROUND-TRUTH.mdの手動検証でラボがアクティブであることを確認する。HTTP + MCPサーフェスに対してFYPを実行する。
結果を
docs/GROUND-TRUTH.mdと比較する。Secureに切り替えて再実行し、偽陽性を測定する。
リセットして繰り返す。
プロジェクトドキュメント
docs/GROUND-TRUTH.md— 解答キー(脆弱性ごと+マトリックス)。docs/OWASP-MCP-MAPPING.md— OWASP MCP Top 10マッピング。docs/TEST-SCENARIOS.md— FYP検証シナリオ。CLAUDE.md— 実装メモリ / 現在のフェーズ状態。docs/PRD.md、docs/TDD.md— 設計契約、ローカルのみ保持(git-ignored)。Dockerなしの実行モデルに合わせて2026-08-21に更新。
現在の状態
MCP03とMCP05は完了(全フェーズ)。uvicornでDockerフリー実行。MCP10はカタログにスキャフォールドされているだけで、まだビルドされていない。CLAUDE.mdを参照のこと# vuln_mcp_app
意図的に脆弱性を持つ、ローカルで実行可能なModel Context Protocol(MCP)セキュリティラボ — 制御されたターゲット(概念的には「MCP版DVWA」)であり、別のFYPセキュリティスキャナを評価するために使用されます。このアプリはターゲットであり、スキャナではありません。 小規模で文書化された一連のMCP脆弱性をホストし、証拠を出力します。自身が脆弱であるかどうかは決して報告しません(オラクルなし、SEC-006)。
⚠️ 教育・研究目的のみ。 すべてローカルで、合成データとダミーシークレット(
DEMO_SECRET_*)を使用して実行します。実際の認証情報、外部ターゲット、インターネットスキャン、ホストアクセスはありません。
スコープ(正確に3つのラボ)
ID | OWASP MCP | 脆弱性 | ステータス |
VULN-MCP03-001 | MCP03 | ツールポイズニング | *実装済み |
VULN-MCP05-001 | MCP05 | コマンド注入と実行 | *実装済み |
VULN-MCP10-001 | MCP10 | コシテキスト注入と過剣共有 | 未着手 |
追加の脆弱性ラボはスコープ外です。実装済みの各ラボには、VULNERABLE(脆弱)モードと、実際に修正されたSECURE(セキュア)モードが同梱されています。
実行方法(Docker不要 — コマンド1つ+ブラウザ)
アプリ全体が単一のuvicornプロセスから実行されます。FastAPIがビルド済みUIを/に、APIを/api配下で提供します。
初回のみ
# 1) Build the UI once (Node 18+). Produces frontend/dist.
cd frontend && npm install && npm run build && cd ..
# 2) Run the app (uv resolves Python deps automatically; Python 3.12+).
uv run uvicorn backend.app.main:app --reload --host 127.0.0.1 --port 8000次に**http://127.0.0.1:8000を開くと、ラボUIが表示されます。インタラクティブなAPIドキュメントはhttp://127.0.0.1:8000/docs**にあります。
通常の
uvではなくvenvを利用したい場合は?python -m venv .venv && source .venv/Scripts/activate # Windows Git Bash pip install -r backend/requirements.txt uvicorn backend.app.main:app --reload --host 127.0.0.1 --port 8000
初回ビルド後
uvicornコマンドを実行し、ブラウザを開くだけです。UIを再ビルド(npm run build)するのは、フロントエンドコードを変更した後のみです。
フロントエンドのホットリロード(任意、UI開発用)
APIを:8000で、Vite開発サーバを:5173で実行します(/apiをプロキシします):
# terminal 1
uv run uvicorn backend.app.main:app --reload --host 127.0.0.1 --port 8000
# terminal 2
cd frontend && npm run dev # open http://127.0.0.1:5173テスト
# Backend (pytest)
uv run pytest # or: .venv/Scripts/python -m pytest
# Frontend (Vitest + tsc)
cd frontend && npm test && npx tsc --noEmitアーキテクチャ
Browser (React SPA, served by FastAPI at :8000)
│ HTTP/JSON (/api)
▼
FastAPI control plane (ordinarily secure) ── MCP client ──► MCP tool registry
│ (vulnerable | secure)
▼ │
SQLite (labs, tools, telemetry, evidence) ◄── telemetry/evidence ─┘コントロールプレーンは通常セキュリティ対策済みのインフラです(SEC-004)。明確にラベル付けされたMCPプレーンツールのみが、vulnerableモードのときだけ脆弱になります。意図的に脆弱なファイルにはバナーが付いています:
# INTENTIONALLY VULNERABLE — <VULN-ID> — see docs/GROUND-TRUTH.md。
MCPトランスポート: フェーズ0ではインプロセスのため、アプリ全体が1つのプロセスで動作します。ストリーミング可能なHTTP MCPトランスポート(公式SDK)は、同じクライアントAPIを通じた将来のアップグレードです。
MCP05サンドボックス(ビルド時): Dockerを排除したため、MCP05ラボのコマンド実行は制約付きインプロセスのサブプロセスランナーで行われます — 一時的な作業ディレクトリ、プロジェクト提供のフェイク
convertシム、ハードタイムアウト、セキュアモードではシェルなし。爆発半径はローカルで合成データのみに限定されます(SEC-001/003)。Dockerが提供していたOSレベルの分離(ネットワークなし、cap-drop)は、その制約付きランナーに置き換えられます。sandbox/README.mdを参照してください。
アーキテクチャ(tech stack)
React + TypeScript + Vite + Tailwind · Python 3.12 + FastAPI + Pydantic v2 · 公式Python MCP SDK · SQLite + SQLModel · pytest + httpx · Vitest + Testing Library. uv/uvicornで実行(Dockerなし)。
APIサーフェス(FYPで分析可能)
GET /api/health · GET /api/labs · GET /api/labs/{id} ·
POST /api/labs/{id}/mode|reset|attack|start · GET /api/labs/{id}/telemetry ·
GET /api/mcp/servers|tools · GET /api/mcp/tools/{id} ·
POST /api/mcp/tools/{id}/call · GET /api/vulnerabilities(カタログメタデータのみ) · GET /api/evidence。
どのエンドポイントも脆弱性の判定を公開しません(SEC-006)。
このアプリをFYPに対して使用する(評価ループ)
ターゲットを起動する(MCP03はデフォルトで
vulnerable)。2.docs/GROUND-TRUTH.mdの手動検証でラボがアクティブであることを確認する。3. HTTP + MCPサーフェスに対してFYPを実行する。4. 調査結果をdocs/GROUND-TRUTH.mdと比較する。Secureに切り替えて再実行し、誤検知を測定する。6. リセットして繰り返す。
プロジェクトドキュメント
docs/GROUND-TRUTH.md— 回答集(脆弱性ごと+マトリックス)。docs/OWASP-MCP-MAPPING.md— OWASP MCP Top 10マッピング。docs/TEST-SCENARIOS.md— FYP検証シナリオ。CLAUDE.md— 実装メモリ / 現在のフェーズ状態。docs/PRD.md、docs/TDD.md— 設計契約書、ローカル保存のみ(gitignore対象)。Dockerなしの実行モデンに合わせて2026-08-21に更新。
現在の状態
MCP03とMCP05は完了(全フェーズ)。uvicornでDockerフリー実行。MCP10はカタログにシードされていますが、まだ構築されていません。CLAUDE.mdを参照。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceA deliberately insecure MCP server designed as a pentest lab to demonstrate common vulnerabilities in MCP deployments.
- FlicenseNot gradedqualityCmaintenanceA vulnerable-by-design MCP server pair (NotesServer and VaultServer) for testing MCP security tools, featuring confused-deputy, prompt injection, and authorization bypass scenarios.
- AlicenseNot gradedqualityDmaintenanceA deliberately vulnerable MCP application for learning MCP security through hands-on exercises covering OWASP MCP Top 10 categories.MIT
- FlicenseNot gradedqualityCmaintenanceAn intentionally vulnerable MCP server designed as a live demo target for the MCP Trust security scanner. It contains deliberate insecure patterns to demonstrate scanning capabilities.
Related MCP Connectors
MCP server for static security analysis of Android source code
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
MEOK MCP Hardening MCP — automated security red-team for any MCP server. Maps OWASP LLM Top 10
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/arrugit/vuln_mcp_app'
If you have feedback or need assistance with the MCP directory API, please join our Discord server