Okta Mcp Server について
Okta MCP Server は、AI モデルが Okta テナントのユーザー、グループ、アプリケーション、システムログを照会・分析できるようにする MCP サーバーです。IAM エンジニア、セキュリティチーム、Okta 管理者を対象とし、アクセス分析とログイン リスク評価の専用ツールを備えます。
主な機能
- 01ユーザー、グループ、アプリケーション、ポリシーの照会
- 02アクセス分析ツール analyze_user_app_access
- 03ログイン リスク評価ツール analyze_login_risk
- 04STDIO と HTTP のトランスポートに対応
活用シーン
- 01ユーザーが特定のアプリケーションにアクセスできない原因の調査
- 02ログイン イベントが不審かどうかの評価
- 03AI アシスタントを通じたロック済みユーザーなどの一覧取得
MCP 対応
ユーザー、グループ、アプリケーション、ポリシー、ネットワーク ゾーン、システムログイベントに関するツールを MCP クライアントに公開する MCP サーバーです。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Okta MCP Server (v0.1.1-BETA)
🔥 速報!!!新たに再構築されたMCP Serverが利用可能になりました
Anthropicの新しいMCPアーキテクチャパターンを基盤として全面的に書き換えられ、デュアルモード動作、コンテキストエンジニアリング、強化されたセキュリティサンドボックス、本番環境対応のDockerサポートを備えています。
クイックデモ
🎉 v0.1.1-BETAの新機能 — エンタープライズグレードの特別なツール!
このリリースでは、Oktaの管理タスクを一新する強力な特別なツールを導入しました。
🔥 新機能:Okta管理者の業務を変える特別なツール
- 🎯 包括的なアクセス分析:Okta管理者が最も頻繁に直面する疑問、ユーザーXはアプリYにアクセスできるか、の解決を支援します。
- 🛡️ 高度なログインリスク評価:VPN/Torの検出や地理的に不可能な移動のチェックを含む行動分析により、不審な報告メールへの対応を支援します。
💡 実例 — アクセス分析:
❓ Question: "Can user [email protected] access the application Salesforce?"
🤖 AI Response (30 seconds): "User John Smith can access Salesforce because:
1) User is ACTIVE ✅
2) User is assigned via group 'Sales Team' ✅,
3) Policy allows access with 2FA from corporate network or requires PUSH factor from external locations - user has PUSH enrolled ✅"
⏱️ Manual Process: Navigate Users → Find John → Check Status → Check App
Assignments → Check Group Memberships → Check Salesforce Assignments →
Review Access Policies → Check MFA Factors → Correlate Network Rules (10-15 min)
💡 実例 — ログインリスク評価:
❓ Question: "Is [email protected]'s recent login activity suspicious?"
🤖 AI Response (30 seconds): "LOW RISK - Dan exhibits excellent login
security patterns: consistent geographic area, same residential ISP,
stable device fingerprints, normal browser patterns, zero VPN/proxy
usage, all Okta risk scores LOW ✅"
⏱️ Manual Process: System Logs → Filter User → Check Locations → Review
IP Addresses → Cross-reference Network Zones → Analyze Device Patterns →
Check Geographic Impossibility → Review Behavioral Flags (15+ min)
🏗️ コアアーキテクチャ
- 🚀 FastMCP 2.0:従来のMCPパッケージからFastMCP 2.0に移行し、最先端のプロトコル機能に対応
- 🧹 よりシンプルなコード:
tool_registry.pyへの依存をなくし、コードベースを簡潔で保守しやすくしました - ⚡ パフォーマンスの向上:最新の非同期パターンと最適化されたリクエスト処理
🛠️ ツールの強化
- 📝 全面書き換え:すべてのツールを書き換え、AIが理解しやすい注釈と説明を追加しました
- 🛡️ バリデーションの改善:すべての操作でエラー処理と入力検証を強化しました
🔐 高度なセキュリティ
- 🎫 ベアラートークン:
jwks_uri検証を含むJWTベアラートークンを完全にサポート - 🏢 エンタープライズ認証:エンタープライズ認証フローとスコープベースのアクセスをサポート
🚀 将来への対応
- 🔌 ミドルウェア対応:カスタム処理に対応する拡張可能なミドルウェアシステム
- 📡 プロトコルの進化:開発および標準化が進む最新のMCP機能を利用可能
📝 注記:CLIクライアントとAIサンプリング機能は、pydantic-aiの依存関係の競合(セキュリティ脆弱性)により、
_Archived/フォルダーに移動しました。詳細は_Archived/README.mdをご覧ください。
📋 目次
- 🎉 v0.1.1-BETA の新機能 — エンタープライズグレードの専用ツール!
- 📋 目次
- 🔍 Model Context Protocol とは?
- ⚠️ 重要:セキュリティと制限事項
- 🛠️ 利用可能なツール
- 🚀 クイックスタート
- 🧠 対応 AI プロバイダー
- 5. Docker のデプロイ - Docker コンテナーの実行
- ⚠️ 知っておくとよいこと
- 🗺️ ロードマップ
- 🆘 サポートが必要ですか?
- 💡 機能リクエストとアイデア
- 👥 コントリビューター
- ⚖️ 法的事項
🔍 Model Context Protocol とは?
Model Context Protocol(MCP)は、AI モデルが外部のツールやサービスと構造化された安全な方法でやり取りできるようにするオープン標準です。サーバーが公開する機能を AI システムが一貫したインターフェースを通じて検出し、利用できるようにすることで、AI アシスタントは学習データの範囲を超えて機能を拡張できます。
MCP は「AI 連携における USB-C」と考えてください。USB-C がメーカーを問わずさまざまなデバイスを接続して通信できる共通規格を提供するように、MCP は AI モデルがサービスごとに個別の連携機能を開発することなく、さまざまなサービスを検出して利用できる標準化された方法を提供します。この「プラグアンドプレイ」の方式により、開発者は一度ツールを構築すれば複数の AI アシスタントで利用でき、ユーザーは互換性の問題を気にせずシームレスに連携できます。
例:「Okta テナント内でロックされているすべてのユーザーを探し、氏名、メールアドレス、最終ログイン日時をまとめたスプレッドシートを Google Drive の IT Operations フォルダーに作成してください。」AI は Okta MCP Server を使ってロックされたユーザーを検索し、そのデータを Google Drive MCP Server に渡してスプレッドシートを作成します。カスタムコードは必要ありません。
⚠️ 重要:セキュリティと制限事項
Okta MCP Server を使用する前に、このセクションを注意深くお読みください。
🔄 データフローとプライバシー
リクエストを行うと、LLM と Okta MCP ツールの間で直接やり取りが行われ、クライアントアプリケーションは介在しなくなります。これらのツールから返されるすべてのデータ(完全なユーザープロファイル、グループメンバーシップなどを含む)は、会話のトランザクション全体を通じて LLM のコンテキストに送信され、保存されます。
プライバシーに関する重要な考慮事項:
- LLM(Claude、GPT など)は、ツールによって取得されたすべての Okta データを受信して処理します
- このデータは、会話が続く間、LLM のコンテキストに保持されます
- Okta のユーザーデータが LLM プロバイダーのシステムによって処理されることを許容できる必要があります
- これらのツールを使用する前に、Okta データが AI モデルのサーバーに送信されることを許容できるか確認してください
📊 コンテキストウィンドウの制限
MCP は、Zapier のような軽量なワークフロー向けに設計されており、大量データの一括処理を目的としていません。
推奨: 1 回のトランザクションで扱うエンティティ数は 100 未満に制限してください。大規模なデータセットの取得や複数の API 呼び出しが必要な操作は避けてください。
例:
❌ 次のようなリクエストは避けてください:
- 「Okta テナントから 10,000 人のユーザー全員を取得し、ログインパターンを分析する」
- 「Okta Verify が要素として登録されていないユーザーを見つける」
✅ より良い方法:
- 「最も最近作成されたユーザーを 20 人取得する」
- 「90 日以上ログインしていないユーザーを見つけ、最初の 50 件までに制限する」
💡 より大きなデータセットや複雑なクエリの場合: 大規模なクエリやデータセットには、Okta AI Agent の利用をご検討ください。このエージェントには、より大きなデータセットや複雑なシナリオに対応する同様の「実行可能な」機能が、近いうちに追加される予定です。
🚨 HTTP トランスポートのセキュリティに関する警告
HTTP トランスポートモード(Streamable HTTP と SSE の両方)には、重大なセキュリティリスクがあります。
- Okta テナントへの完全なアクセス権を持つ、認証されていない HTTP サーバーが起動します
- 認証も認可も行われません
- ネットワークポートに接続できる人なら誰でも、Okta 環境にコマンドを発行できます
mcp-remoteを介してリモート HTTP アクセスを使用する場合は、極めて危険です
ベストプラクティス: 特定のセキュリティ制御を導入し、リスクを理解している場合を除き、STDIO トランスポート方式(デフォルトモード)のみを使用してください。
🛠️ 利用可能なツール
Okta MCP Server は現在、次のツールを提供しています。
🔥 特別なツール - エンタープライズ管理者向けアクセラレーター
アクセス分析とトラブルシューティング
analyze_user_app_access- ポリシー分析を含む、ユーザーのアプリケーションアクセスに関する完全な評価(Okta Admin Console を手動で操作する 10~15 分の作業を置き換えます)
セキュリティとリスク評価
analyze_login_risk- VPN/Tor の検出や地理的に不可能な移動のチェックを含む、ログイン行動の包括的な分析(「このユーザーのアカウントは侵害されていますか?」に即座に回答します)
⚡ これらが重要な理由:Okta 管理者が日々直面する最も一般的な質問は、「ユーザー X がアプリケーション Y にアクセスできないのはなぜですか?」と「このログインアクティビティは不審ですか?」の 2 つです。これらの特別なツールは、複数の Okta 管理画面の確認、ポリシーのレビュー、ログ分析にわたる大規模な手動調査が必要となる包括的な回答を即座に提示し、15 分以上かかる調査を AI を活用した 30 秒のインサイトへと変えます。
📊 標準ツール
ユーザー管理
list_okta_users- フィルタリング、検索、ページネーションのオプションを指定してユーザーを取得しますget_okta_user- ID またはログイン名を指定して、特定のユーザーの詳細情報を取得しますlist_okta_user_groups- 特定のユーザーが所属するすべてのグループを一覧表示しますlist_okta_user_applications- 特定のユーザーに割り当てられたすべてのアプリケーションリンクを一覧表示しますlist_okta_user_factors- 特定のユーザーが登録しているすべての認証要素を一覧表示します
グループ操作
list_okta_groups- フィルタリング、検索、ページネーションのオプションを指定してグループを取得しますget_okta_group- 特定のグループの詳細情報を取得しますlist_okta_group_members- 特定のグループのすべてのメンバーを一覧表示しますlist_okta_assigned_applications_for_group- 特定のグループに割り当てられたすべてのアプリケーションを一覧表示します
アプリケーション管理
list_okta_applications- フィルタリング、検索、ページネーションのオプションを指定してアプリケーションを取得しますlist_okta_application_users- 特定のアプリケーションに割り当てられたすべてのユーザーを一覧表示しますlist_okta_application_group_assignments- 特定のアプリケーションに割り当てられたすべてのグループを一覧表示します
ポリシーとネットワークの管理
list_okta_policy_rules- 詳細な条件とアクションを含む、特定のポリシーのすべてのルールを一覧表示しますget_okta_policy_rule- 特定のポリシールールの詳細情報を取得しますlist_okta_network_zones- IP 範囲や設定の詳細を含む、すべてのネットワークゾーンを一覧表示します
システムログイベント
get_okta_event_logs- 時間によるフィルタリングと検索オプションを指定して、Okta システムログイベントを取得します
日付と時刻のユーティリティ
get_current_time- ISO 8601 形式で現在の UTC 時刻を取得しますparse_relative_time- 自然言語で表現された時刻を ISO 8601 形式に変換します
アプリケーション、認証要素、ポリシー、およびより高度な操作に対応する追加ツールはロードマップにあり、今後のリリースで追加される予定です。
🚀 クイックスタート
前提条件
✅ Python 3.8+ がマシンにインストールされていること
✅ 適切な API アクセス権を持つ Okta テナント
✅ MCP 対応の AI クライアント(Claude Desktop、Microsoft Copilot Studio など)
⚠️ 重要:モデルの互換性に関する注意:
すべての AI モデルがこの MCP サーバーで動作するわけではありません。テスト済みなのは次のモデルのみです。
- GPT-4.0
- Claude 3.7 Sonnet
- Google-2.5-pro
ツール呼び出し/関数呼び出し機能を明示的にサポートする最新バージョンのモデルを使用する必要があります。古いモデルやツール呼び出しに対応していないモデルでは、Okta MCP Server を操作できません。
🧠 対応 AI プロバイダー
Okta MCP Server は、柔軟な設定システムを通じて複数の AI プロバイダーに対応しています。これにより、特定のニーズや既存のアクセス権に応じて、さまざまな大規模言語モデルに接続できます。
現在対応しているプロバイダー:
| プロバイダー | 環境変数 | 説明 |
|---|---|---|
| OpenAI | AI_PROVIDER=openai | GPT-4o などのモデルを使用して OpenAI API に接続します。OpenAI API キーが必要です。 |
| Azure OpenAI | AI_PROVIDER=azure_openai | セキュリティとコンプライアンス機能が強化された、Azure ホストの OpenAI モデルを使用します。 |
| Anthropic | AI_PROVIDER=anthropic | Anthropic の Claude モデルに接続します(主に Claude 3.7 Sonnet でテスト済み)。 |
| Google Vertex AI | AI_PROVIDER=vertex_ai | Vertex AI 経由で Google の Gemini モデルを使用します。Google Cloud サービスアカウントが必要です。 |
| OpenAI Compatible | AI_PROVIDER=openai_compatible | Fireworks.ai、Ollama など、OpenAI API 仕様を実装しているプロバイダーの OpenAI API 互換エンドポイントに接続します。 |
インストール
# Clone the repository
git clone https://github.com/fctr-id/okta-mcp-server.git
cd okta-mcp-server
# Create and activate a virtual environment
python -m venv venv
source venv/bin/activate # On Windows use: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
⚠️ お知らせ: このリポジトリを新たにクローンした場合や更新を取得した場合は、依存関係を最新の状態に保つため、必ず
pip install -r requirements.txtを再実行してください。
設定と使用方法
Okta の設定を記述した設定ファイルを作成します。
📝 Note:スタンドアロンの CLI クライアントはアーカイブされています。MCP ホストとの統合(Claude Desktop、VS Code など)には、以下の JSON 設定を使用してサーバーを直接利用してください。
対応トランスポートと起動方法
Okta MCP Server は、複数のトランスポートプロトコルに対応しています。
1. 標準入出力(STDIO)— 推奨
- セキュリティ:✅ 標準入力/出力ストリームを介した直接通信です
- 用途:Claude Desktop などのデスクトップ AI アシスタントに最適です
- パフォーマンス:✅ 軽量で効率的です
- 設定:Claude Desktop の場合は、
claude_desktop_config.jsonに追加します。{ "mcpServers": { "okta-mcp-server": { "command": "DIR/okta-mcp-server/venv/Scripts/python", "args": [ "DIR/okta-mcp-server/main.py" ], "env": { "OKTA_CLIENT_ORGURL": "https://dev-1606.okta.com", "OKTA_API_TOKEN": "OKTA_API_TOKEN" } } } }DIRを絶対ディレクトリパスに、OKTA_API_TOKENを実際のトークンに置き換えてください
2. Streamable HTTP トランスポート — 最新の標準
現在の標準 — 高度な機能を備えた最新の HTTP ベースのトランスポートです。
- 機能:✅ リアルタイムのイベントストリーミング、セッション管理、再開に対応しています
- パフォーマンス:✅ スケーラビリティと接続処理が向上しています
- 用途:HTTP ストリーミングに対応した最新のウェブアプリケーションやクライアント向けです
- セキュリティ:⚠️ ローカル HTTP サーバーです。管理された環境で安全に使用できます
Streamable HTTP サーバーの起動:
# Start server with explicit risk acknowledgment
python main.py --http --iunderstandtherisks
# Server will start on http://localhost:3000/mcp
# Connect using streamable HTTP compatible clients
機能:
- ✅ リアルタイムストリーミング — 操作中の進行状況をライブで更新します
- ✅ セッション管理 — 接続状態を維持します
- ✅ イベントストリーミング — リアルタイム通知に Server-Sent Events を使用します
- ✅ より優れたエラー処理 — 詳細なエラーレスポンスを提供します
- ✅ 最新のプロトコル — 最新の MCP 仕様に基づいています
3. リモート HTTP アクセス — リスクの高い高度な用途に限る
⚠️ 極めて危険です — 必ずよく読んでください
リモート接続にネイティブで対応していない MCP クライアントでは、NPX 経由で mcp-remote を使用できます。
前提条件:
- Node.js と NPM がインストールされていること
- Okta MCP Server が HTTP モードで実行されていること
セットアップ:
# 1. Install mcp-remote globally
npm install -g @anthropic/mcp-remote
# 2. Start your Okta MCP Server in HTTP mode
python main.py --http --iunderstandtherisks
# 3. Configure your MCP client (e.g., Claude Desktop)
Claude Desktop の設定:
{
"mcpServers": {
"okta-mcp-server": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:3000/mcp"
],
"env": {
"OKTA_CLIENT_ORGURL": "https://dev-1606.okta.com",
"OKTA_API_TOKEN": "your_actual_api_token"
}
}
}
}
🚨 重大なセキュリティ警告:
- 本番環境では絶対に使用しないでください
- HTTP ポート(3000)をパブリックネットワークに絶対に公開しないでください
- ネットワークにアクセスできる人は誰でも Okta テナントを操作できます
- 認証や認可による保護はありません
- すべての Okta 操作が制限なく公開されます
- 隔離された安全な開発環境でのみ使用してください
- STDIO トランスポートがどうしても実行不可能な場合に限り、この方法を検討してください
この方法が必要になる可能性がある場合:
- HTTP トランスポートを必要とする MCP 統合のテスト
- STDIO を使用できない特定のクライアントアプリケーション
- HTTP デバッグが必要な開発シナリオ
- 本番環境や共有環境では絶対に使用しないでください
4. Server-Sent Events(SSE)— 非推奨
⚠️ 非推奨: SSE トランスポートは非推奨であり、新しい実装には推奨されません。
# Run in SSE mode (requires explicit risk acknowledgment)
python main.py --sse --iunderstandtherisks
- 用途:特に SSE を必要とするレガシー MCP クライアント向け(非推奨)
- セキュリティ:⚠️ Streamable HTTP と同じ HTTP のセキュリティリスクがあります
- 推奨:新しい実装ではすべて、代わりに Streamable HTTP トランスポートを使用してください
5. Docker によるデプロイ
Okta MCP Server はすべてのトランスポートタイプ向けに Docker イメージを提供しており、コンテナ化したデプロイが可能です。
Docker コンテナの実行
STDIO トランスポート(推奨): Claude Desktop などの MCP クライアントでは、Docker コンテナを使用するように設定します。
{
"mcpServers": {
"okta-mcp-server": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "OKTA_CLIENT_ORGURL",
"-e", "OKTA_API_TOKEN",
"fctrid/okta-mcp-server:stdio"
],
"env": {
"OKTA_CLIENT_ORGURL": "https://your-org.okta.com",
"OKTA_API_TOKEN": "your_api_token"
}
}
}
}
Streamable HTTP トランスポート(現在の標準):
# Start the HTTP container
docker run -d --name okta-mcp-http \
-p 3000:3000 \
-e OKTA_API_TOKEN=your_api_token \
-e OKTA_CLIENT_ORGURL=https://your-org.okta.com \
fctrid/okta-mcp-server:http
# Configure your MCP client to connect to http://localhost:3000/mcp
SSE トランスポート(非推奨 — 推奨されません):
# Start the SSE container (deprecated)
docker run -d --name okta-mcp-sse \
-p 3000:3000 \
-e OKTA_API_TOKEN=your_api_token \
-e OKTA_CLIENT_ORGURL=https://your-org.okta.com \
fctrid/okta-mcp-server:sse
# Configure your MCP client to connect to http://localhost:3000/sse
イメージをローカルでビルドする:
# Build all variants
docker build --target stdio -t okta-mcp-server:stdio .
docker build --target http -t okta-mcp-server:http .
docker build --target sse -t okta-mcp-server:sse .
⚠️ 知っておくとよいこと
ベータリリース 🧪
- FastMCP 2.0 を使用し、アーキテクチャを全面的に書き直しました
- 以前のアルファリリースと比べて、安定性とパフォーマンスが向上しています
- AI との統合を強化した包括的なツールシステムを備えています
- 開発およびテスト環境により適しています
- セキュリティ機能を強化し、本番環境への対応状況を評価中です
セキュリティを最優先 🛡️
- 最小権限での運用を前提に設計されています
- Okta リソースへのアクセスは、デフォルトで読み取り専用です
- 今後の書き込み操作には、明示的な承認フローが必要になります
現在の制限事項 🔍
- まずは、ユーザーとグループ向けの限られた読み取り専用ツールから始めています
- 今後のリリースで、API 対応範囲を迅速に拡大する予定です
- 一部の複雑な Okta の関連情報は、まだ公開されていません
- 非常に大規模な Okta インスタンスでのパフォーマンスは、まだ最適化されていません
- Okta API エンドポイントへの直接のネットワークアクセスが必要です
🗺️ ロードマップ
v0.1.0-BETA - 現在(大規模なアーキテクチャの刷新!)
- FastMCP 2.0 アーキテクチャへの完全移行
- 注釈を強化し、すべてのツールを包括的に書き換え
- 複数のトランスポートに対応した新しい統合 CLI クライアント
- コードベースを簡潔にするため、tool_registry.py への依存を解消
- jwks_uri 検証に対応した高度なベアラートークンのサポート
- エラー処理と検証を大幅に強化
- パフォーマンスの最適化と最新の非同期パターンの採用
v0.3.0 - 以前
- Streamable HTTP トランスポートのサポート
- リアルタイムのイベントストリーミング
- セッション管理と再開機能
- クライアントアプリケーションの強化
今後の予定:
- ユーザーのライフサイクル操作を完全にサポート
- アプリケーションの割り当て管理
- グループメンバーシップの操作
- 認証要素の登録と検証
- ポリシーとルールの管理
- 機密性の高い操作に対する承認ワークフロー
- 複数の承認手段(ウェブ、メール、Slack)
- 監査ログとコンプライアンスレポート
- システムログとの統合
- セキュリティインサイトの生成
- マルチテナントのサポート
- ロールベースのアクセス制御
🆘 お困りですか?
問題を報告する前に、次の項目をご確認ください。
- 📝 サーバーの設定
- 🔑 Okta API の権限
- 🔌 MCP クライアントとの互換性
- 📊 サーバーログ
それでも問題が解決しない場合は、GitHub で issue を作成するか、[email protected] までメールでお問い合わせください(返信時間は状況により異なります)。
💡 機能リクエストとアイデア
アイデアや提案がありますか?GitHub で機能リクエストを作成してください!
👥 コントリビューター
コントリビューションに興味がありますか?ぜひご参加ください!コラボレーションの機会については、[email protected] までお問い合わせください。
⚖️ 法的事項
詳細については、License.mdをご確認ください。
🌟 © 2025 Fctr Identity. All rights reserved. Okta と AI のコミュニティのために、❤️を込めて作られました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。