Cyberedu Mcp Server について
Cyberedu Mcp Serverは、MCPクライアントをサイバーセキュリティ学習プラットフォームCyberEduに接続します。CyberEduClientの公開メソッドを型情報付きツールとして自動公開し、セッションとテナントの管理にも対応します。
主な機能
- 01クライアントメソッドの自動検出とツール化
- 02型ヒントに基づくJSONスキーマ生成
- 03セッション認証情報の永続化
- 04テナントの選択と切り替え
- 05チャレンジ、コンテスト、サービス操作
活用シーン
- 01CTFチャレンジの検索と参加登録
- 02コンテストへの参加とフラグ提出
- 03チャレンジサービスの起動と状態確認
- 04CyberEduのセッションとテナント管理
MCP 対応
CyberEduClientの公開メソッドをMCPツールとして公開し、認証、チャレンジ、コンテスト、ファイル、サービス操作を提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
CyberEdu MCP Server
これは、CyberEdu CTF プラットフォーム(https://cyber-edu.co / https://cyberedu.ro)向けの公式 Model Context Protocol(MCP)サーバーです。このサーバーは、CyberEduClient のすべてのメソッドを自動的に検出して MCP ツールとして公開するため、MCP 対応クライアントから CyberEdu プラットフォームを簡単に利用できます。
特長
- 動的なツール検出:
CyberEduClientのすべてのパブリックメソッドを自動的に検出し、MCP ツールとして公開します - 新しいメソッドの設定不要:
CyberEduClientに新しいメソッドが追加されると、コードを変更しなくても自動的に MCP ツールとして利用できるようになります - 型安全:メソッドのシグネチャと型ヒントから JSON スキーマを自動生成します
- エラー処理:詳細なエラーメッセージを含む包括的なエラー処理を備えています
CyberEDU プラットフォームの概要
CyberEDU は、実践型ラボ、現実的なシミュレーション、競争環境を提供するサイバーセキュリティトレーニングプラットフォームです。企業のセキュリティチーム、学術機関、政府機関、個人の学習者を対象に設計されています。
主な説明
CyberEDU は、実践型ラボ、現実的なシミュレーション、競争環境を提供する包括的なサイバーセキュリティトレーニングプラットフォームです。実世界のシナリオを通じて実践的なサイバーセキュリティスキルを身につけたい企業のセキュリティチーム、学術機関、政府機関、個人の学習者を対象に設計されています。
主な差別化要因
- 実践重視のアプローチ:ユーザーが実際のインフラを攻撃・防御する、インタラクティブなサイバーレンジを提供します(動画や理論だけではありません)
- MITRE ATT&CK マッピング:実際のマルウェアサンプルを安全に隔離して使用し、MITRE ATT&CK にマッピングされたシナリオを提供します
- 高い定着率:受動的な学習と比べて、スキルの定着率が 3.5 倍向上します
- 実世界のシナリオ:実際の敵対者の手法や攻撃パターンをシミュレートします
プラットフォームの構成要素
- Cyber Range — 複雑なネットワークトポロジーを備えた、エンタープライズ規模のサイバー戦争シミュレーション
- Cyber Labs — MITRE ATT&CK にマッピングされた 650 以上の実践型ラボ。ブラウザー上で利用でき、自動採点に対応しています
- Tournament Suite — ゲーミフィケーションを取り入れた競技(CTF、Red vs Blue、ウォーゲーム)
主な統計
- 世界中に 30,000 人以上のアクティブユーザー
- 650 以上の実践型ラボ
- 1,400 以上のシミュレーションプロファイル
- 500 件以上の開催イベント
- 45 か国以上にサービスを提供
- 250 時間以上のトレーニングコンテンツ
対象ユーザー
- 学生:CTF チャレンジやリーダーボードを活用した、キャリア形成を重視するトレーニング
- 学術機関:LMS 連携と自動採点に対応したカリキュラム
- 企業:技術職の採用評価、チームトレーニング、コンプライアンスマッピング
- 政府機関:エアギャップ環境への導入、OT/SCADA シミュレーション、重要インフラの防御
導入オプション
- クラウドホスト型 SaaS(ブラウザー上で利用でき、インストール不要)
- オンプレミス(VMware、Proxmox、ベアメタル)
- 機密環境向けのエアギャップ環境への導入
インストール
リポジトリのクローン
cyberedu-client は Git サブモジュールとして含まれています。必要なものをすべて取得するには、--recursive を付けてクローンしてください:
git clone --recursive https://github.com/CyberEDU-Cyber-Range/cyberedu-mcp.git
cd cyberedu-mcp
すでに --recursive を付けずにクローンしている場合は、サブモジュールを初期化してください:
git submodule update --init --recursive
パッケージのインストール
両方のパッケージ(クライアントと MCP サーバー)をインストールします:
macOS/Linux:
python3 -m venv venv
source venv/bin/activate
pip install -e ".[local]" # Installs with local cyberedu-client submodule
# Or for development:
# pip install -e ".[local,dev]"
Windows(PowerShell):
python -m venv venv
.\venv\Scripts\Activate.ps1
pip install -e ".[local]" # Installs with local cyberedu-client submodule
Windows(コマンドプロンプト):
python -m venv venv
venv\Scripts\activate.bat
pip install -e ".[local]"
代替方法:パッケージを個別にインストールします:
pip install -e ./cyberedu-client pip install -e .
設定
セッションの永続化(推奨)
MCP サーバーはセッション認証情報をディスクに自動的に永続化します。これにより、次のことが可能になります。
cyberedu_set_session_cookieツールを使ってCookieを一度設定するだけで、MCP セッションをまたいで保持されます- 初回の認証後は、環境変数が不要です
- テナントを切り替えても、テナントの選択が保持されます
セッションファイルの場所:
- macOS/Linux:
~/.cyberedu-mcp/session.json - Windows:
%USERPROFILE%\.cyberedu-mcp\session.json(例:C:\Users\YourName\.cyberedu-mcp\session.json)
Unix システムでは、セキュリティのためファイルのアクセス権が制限されており、所有者のみが読み書きできます。
環境変数(代替方法)
環境変数も使用できます。サーバーは次の優先順位で認証情報を読み込みます。
- ディスクに永続化された認証情報(最優先)
- 環境変数
- デフォルト値
環境変数:
CYBEREDU_SESSION_COOKIE:CyberEdu のセッション Cookie- https://app.cyber-edu.co にログインした後、ブラウザーの開発者ツールで確認できます
cyberedu_sessionCookie の値を探してください
CYBEREDU_TENANT:テナント識別子(任意。デフォルトは「cyberedu」です)
セッション Cookie の取得方法
Chrome/Edge:
- 開発者ツールを開きます(F12)
- Application/Storage タブを開きます
- Cookies →
https://app.cyber-edu.coに移動します cyberedu_sessionを見つけ、その値をコピーします
Firefox:
- 開発者ツールを開きます(F12)
- Storage タブを開きます
- Cookies →
https://app.cyber-edu.coに移動します cyberedu_sessionを見つけ、その値をコピーします
使用方法
MCP サーバーの実行
テスト用に、サーバーを直接実行できます。
macOS/Linux:
python3 -m venv venv
source venv/bin/activate
python -m cyberedu_mcp
Windows:
python -m venv venv
.\venv\Scripts\Activate.ps1
python -m cyberedu_mcp
MCP クライアントの設定
このサーバーを MCP クライアント(Cursor IDE または Claude Desktop)で使用するには、MCP 設定に追加してください。
重要:venv 内の Python 実行ファイルのフルパスを指定してください。MCP クライアントはサーバーを外部で実行するため、有効化された仮想環境にはアクセスできません。
macOS/Linux の例
Cursor IDE(~/.cursor/mcp.json):
{
"mcpServers": {
"cyberedu": {
"command": "/path/to/cyberedu-mcp/venv/bin/python3",
"args": ["-m", "cyberedu_mcp"]
}
}
}
Claude Desktop(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"cyberedu": {
"command": "/path/to/cyberedu-mcp/venv/bin/python3",
"args": ["-m", "cyberedu_mcp"]
}
}
}
Windows の例
Cursor IDE(%APPDATA%\Cursor\User\mcp.json または C:\Users\YourName\.cursor\mcp.json):
{
"mcpServers": {
"cyberedu": {
"command": "C:\\path\\to\\cyberedu-mcp\\venv\\Scripts\\python.exe",
"args": ["-m", "cyberedu_mcp"]
}
}
}
Claude Desktop(%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"cyberedu": {
"command": "C:\\path\\to\\cyberedu-mcp\\venv\\Scripts\\python.exe",
"args": ["-m", "cyberedu_mcp"]
}
}
}
クロスプラットフォームの例
VS Code(ワークスペース内の .vscode/mcp.json):
{
"servers": {
"cyberedu": {
"type": "stdio",
"command": "/path/to/cyberedu-mcp/venv/bin/python3",
"args": ["-m", "cyberedu_mcp"]
}
}
}
Windows:C:\\path\\to\\cyberedu-mcp\\venv\\Scripts\\python.exe を使用してください
Antigravity / Windsurf(mcp_config.json - MCP store → Manage MCP Servers → View raw config からアクセス):
{
"mcpServers": {
"cyberedu": {
"command": "/path/to/cyberedu-mcp/venv/bin/python3",
"args": ["-m", "cyberedu_mcp"],
"env": {}
}
}
}
Windows:C:\\path\\to\\cyberedu-mcp\\venv\\Scripts\\python.exe を使用してください
注:セッション認証情報は ~/.cyberedu-mcp/session.json に永続化されるため、cyberedu_set_session_cookie ツールを使った初回認証後は環境変数が不要です。
利用可能なツール
サーバーは CyberEduClient のすべての公開メソッドを MCP ツールとして自動的に公開します。名前の競合を避けるため、ツール名には cyberedu_ という接頭辞が付けられます。
セッション管理ツール
これらのツールを使うと、MCP サーバーを再起動せずに認証やテナントの切り替えを管理できます。認証情報は ~/.cyberedu-mcp/session.json に自動的に永続化されます。
cyberedu_get_session_status- 認証済みかどうか、選択されているテナント、および認証情報が永続化されているかを確認しますcyberedu_set_session_cookie- 認証用のセッション Cookie を設定または更新します(ディスクに永続化されます)cyberedu_switch_tenant- 別のテナントまたは組織に切り替えます(ディスクに永続化されます)cyberedu_clear_session- ディスクとメモリから保存された認証情報を消去します
使用例:
- 状態を確認:「CyberEdu のセッション状態を教えてください」
- Cookieを設定:「CyberEdu のセッション Cookie を
eyJ...に設定してください」(一度だけ必要です。設定は永続化されます) - テナントを切り替え:「テナント
myorgに切り替えてください」 - 認証情報を消去:「CyberEdu のセッションを消去してください」
認証・ユーザーツール
cyberedu_check_auth- 認証を確認し、ユーザー情報を取得しますcyberedu_get_user_info- ユーザーの詳細情報を取得しますcyberedu_list_tenants- 利用可能なすべてのテナントを一覧表示しますcyberedu_get_current_tenant_info- 現在のテナント情報を取得しますcyberedu_get_user- ID でユーザー情報を取得します
チャレンジツール(アーカイブ)
cyberedu_list_challenges- すべてのチャレンジを一覧表示します(任意のフィルターを指定可能)cyberedu_get_challenge- チャレンジの詳細を取得しますcyberedu_get_challenge_difficulties- 利用可能な難易度を取得しますcyberedu_get_challenge_tags- 利用可能なチャレンジタグを取得しますcyberedu_subscribe_to_challenge- チャレンジに登録します
フラグ・提出ツール(アーカイブ)
cyberedu_get_flag- フラグ/問題の情報を取得しますcyberedu_submit_flag- フラグ/回答を提出します
ファイルツール(アーカイブ)
cyberedu_download_file- チャレンジファイルをダウンロードします(任意のsave_pathパラメーターを使用すると、ディスクに直接保存できます)
サービスツール(アーカイブ)
cyberedu_start_service- チャレンジサービスを開始しますcyberedu_get_service_status- サービスのステータスを取得しますcyberedu_extend_service- サービスの利用時間を延長しますcyberedu_restart_service- サービスを再起動します
コンテストツール
cyberedu_list_contests- 利用可能なすべてのコンテストを一覧表示しますcyberedu_get_contest- コンテストの詳細を取得しますcyberedu_get_contest_ranks- コンテストのリーダーボードを取得しますcyberedu_get_contest_challenge- コンテスト内のチャレンジの詳細を取得しますcyberedu_subscribe_to_contest_challenge- コンテストのチャレンジに登録します
コンテストのフラグ・提出ツール
cyberedu_get_contest_flag- コンテスト内のフラグ情報を取得しますcyberedu_submit_contest_flag- コンテスト内でフラグを提出します
コンテストのファイルツール
cyberedu_download_contest_file- コンテストのチャレンジからファイルをダウンロードします(任意のsave_pathパラメーターを使用すると、ディスクに直接保存できます)
コンテストのサービスツール
cyberedu_start_contest_service- コンテスト内のサービスを開始しますcyberedu_get_contest_service_status- コンテスト内のサービスのステータスを取得しますcyberedu_extend_contest_service- コンテスト内のサービスの利用時間を延長しますcyberedu_restart_contest_service- コンテスト内のサービスを再起動します
使用例とプロンプト
CyberEdu MCP サーバーを操作するプロンプトの例:
セッションと認証
"Check my CyberEdu session status"
"Set my CyberEdu session cookie to eyJpdiI6Ik..."
"Switch to tenant 'mycompany'"
チャレンジ(アーカイブ)
"List all web security challenges"
"Show me the easiest challenges from tenant unbreakable/rocsc"
"Show me hard difficulty forensics challenges"
"Get details for challenge abc123"
"Subscribe me to this challenge and start the service"
"Download challenge files to ./downloads/"
"Submit flag 'CTF{i-like-web-security-ctf-challenges}' for this challenge"
コンテスト
"List available CTF contests"
"Show leaderboard for contest 'defcamp ctf quals 2025'"
"Get challenge abc123 from contest 'rocsc26-quals'"
"Start service for this contest challenge"
"Submit flag 'FLAG{solved}' for contest challenge"
ワークフローの例
1. "List easy web challenges from tenant rocsc"
2. "Subscribe to 'why-xor' and start the service"
3. "Download the challenge files"
4. [Solve...]
5. "Submit flag 'CTF{xor-is-not-safe}'"
アーキテクチャ
動的なツール検出
このサーバーは Python の inspect モジュールを使用して、CyberEduClient クラスからすべてのパブリックメソッドを自動的に検出します。各メソッドに対して、次の処理を行います。
- メソッドの検出:クラスをスキャンしてパブリックメソッドを検出します(プライベートメソッドとヘルパーは除外)
- スキーマの生成:メソッドのシグネチャと型ヒントから JSON スキーマを自動生成します
- ツールの登録:各メソッドを適切なメタデータとともに MCP ツールとして登録します
ツールレジストリ
ToolRegistry クラスは、ツールを管理する柔軟なシステムを提供します。
- 自動検出:イントロスペクションを使用してクラスからメソッドを検出します
- 手動登録:カスタムメソッドを手動で登録できます
- カテゴリー分け:メソッドを自動的に分類します(認証、チャレンジ、コンテスト、サービスなど)
拡張性
新しい機能を追加するには:
- CyberEduClient にメソッドを追加:CyberEduClient クラスに新しいパブリックメソッドを追加するだけです
- 自動公開:MCP サーバーが新しいメソッドを自動的に検出して公開します
- MCP コードの変更は不要:MCP サーバーのコードを変更する必要はありません
クライアントのメソッドに直接対応しないカスタムツールの場合:
from cyberedu_mcp.tool_registry import ToolRegistry
registry = ToolRegistry()
def custom_tool(param1: str, param2: int) -> dict:
"""Custom tool description."""
return {"result": f"{param1}: {param2}"}
registry.register_method(
name="custom_tool",
method=custom_tool,
description="A custom tool",
category="custom"
)
エラー処理
サーバーは包括的なエラー処理を提供します。
- HTTP エラー:ステータスコードやレスポンス本文など、詳細な HTTP エラー情報を返します
- 検証エラー:パラメーターが不足している場合や無効な場合に、明確なエラーメッセージを返します
- クライアントエラー:すべての例外について、構造化されたエラー情報を返します
ドキュメント
追加のドキュメントは docs/ フォルダーで確認できます。
- docs/index.md - ドキュメントの概要とクイックリファレンス
- docs/architecture.md - サーバーの設計、ツールの検出、セッション管理
- docs/extending.md - カスタムツールの追加方法と動作の変更方法
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。