Okta MCP Server について
Okta MCP Server は、Claude から Okta のユーザー管理システムを操作できるようにする MCP サーバーで、ユーザーとグループの管理およびオンボーディングの自動化を提供します。会話を通じて Okta アカウントを管理したい IT・管理部門の担当者に向いています。
主な機能
- 01ユーザー検索、属性による検索、ステータス管理
- 02ユーザーの有効化、停止、停止解除、削除
- 03グループの作成、参照、削除、メンバー管理
- 04CSV データによる一括ユーザーインポート
- 05オンボーディングワークフロー(実験的機能)
活用シーン
- 01部署や役職で Okta ユーザーを検索する
- 02CSV から新入社員をインポートしグループを割り当てる
- 03ユーザーの最終ログイン場所を確認する
MCP 対応
本プロジェクトは MCP サーバーであり、Okta のユーザー、グループ、オンボーディング処理を管理するツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Okta MCP サーバー
この MCP サーバーを使用すると、Claude が Okta のユーザー管理システムと連携でき、ユーザーとグループを包括的に管理できるほか、オンボーディングを自動化できます。
前提条件
- Node.js(v16 以降)
- Claude Desktop アプリ
- Okta Developer アカウント
- Okta の管理者 API トークン
セットアップ手順
1. Okta Developer アカウントを作成する
- Okta Developer Console にアクセスします
- 新しいアカウントを作成するか、既存のアカウントにサインインします
- Okta ドメイン(例:
dev-123456.okta.com)を控えます
2. API トークンを作成する
- Okta Developer Console で、Security > API > Tokens に移動します
- 「Create Token」をクリックします
- トークンにわかりやすい名前(例:「MCP Server Token」)を付けます
- トークン値をコピーします(再度確認することはできません)
3. プロジェクトの初期セットアップ
依存関係をインストールします:
npm install
4. Claude Desktop を設定する
Claude Desktop の設定ファイルを開きます:
MacOS の場合:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows の場合:
code %AppData%\Claude\claude_desktop_config.json
設定を追加または更新します:
{
"mcpServers": {
"okta": {
"command": "node",
"args": [
"PATH_TO_PROJECT_DIRECTORY/dist/index.js"
],
"env": {
"OKTA_ORG_URL": "https://your-domain.okta.com",
"OKTA_API_TOKEN": "your-api-token"
}
}
}
}
ファイルを保存し、Claude Desktop を再起動します。
利用可能なツール
このサーバーでは、以下のツールを利用できます:
ユーザー管理
get_user
Okta から、以下を含む詳細なユーザー情報を取得します:
- ユーザーの詳細(ID、ステータス)
- アカウントの日付(作成日、有効化日、最終ログイン日など)
- 個人情報(氏名、メールアドレス)
- 雇用情報
- 連絡先情報
- 住所
- 設定
find_users_by_attribute
高度なフィルタリング機能を使って、任意のプロファイル属性でユーザーを検索します:
- サポートされている属性:firstName、lastName、email、manager、department、title、division、organization、employeeNumber、costCenter、userType、city、state
- 検索演算子:
eq(完全一致)- すべての属性で使用できますsw(前方一致)- すべての属性で使用できますew(後方一致)- ほとんどの属性で使用できますco(部分一致)- 一部の属性(firstName、lastName、email)で使用できますpr(存在する)- すべての属性で使用できます(その属性に値があるユーザーを検索します)
- 機能:
- パフォーマンスを最適化するため、Okta のネイティブ検索を使用します
- サポートされていない演算子の場合、クライアント側のフィルタリングに自動的に切り替えます
- 検索結果で、機密属性の PII をマスキングします
- ステータスのフィルタリング(非アクティブユーザーを含める/除外する)
- 上限をカスタマイズできるページネーションをサポートします
list_users
オプションのフィルタリングとページネーションを使って、Okta のユーザー一覧を取得します:
- SCIM フィルター式をサポートします(例:'profile.firstName eq "John"')
- 複数のフィールドを対象とした自由形式のテキスト検索
- 並べ替えオプション(ステータス、作成日など)
- 上限をカスタマイズできるページネーションをサポートします
activate_user
Okta でユーザーを有効化します:
- 有効化メールを送信するオプション
- ユーザーのステータスをアクティブに更新します
suspend_user
Okta でユーザーを一時停止します
unsuspend_user
Okta で、以前に一時停止したユーザーの一時停止を解除します
delete_user
Okta からユーザーを削除します(注:事前にユーザーを無効化する必要があります)
get_user_last_location
Okta のシステムログから、ユーザーの最後に確認された場所とログイン情報を取得します
グループ管理
list_groups
オプションのフィルタリングとページネーションを使って、Okta のユーザーグループ一覧を取得します:
- グループのフィルター式(例:'type eq "OKTA_GROUP"')
- グループのフィールドを対象とした自由形式のテキスト検索
- 並べ替えオプション(名前、タイプなど)
- 上限をカスタマイズできるページネーションをサポートします
create_group
Okta で、名前と任意の説明を指定して新しいグループを作成します
get_group
指定したグループの詳細情報を取得します
delete_group
Okta からグループを削除します
assign_user_to_group
Okta でユーザーをグループに割り当てます
remove_user_from_group
Okta のグループからユーザーを削除します
list_group_users
ページネーションに対応し、指定したグループ内のすべてのユーザーを一覧表示します
オンボーディングの自動化(実験的)
注: オンボーディング自動化ツールは実験的なもので、Okta の API の制約に応じて変更や制限が生じる場合があります。本番環境では注意して使用してください。
bulk_user_import
CSV 文字列から複数のユーザーをインポートします:
- CSV データに基づいてユーザーアカウントを作成します
- ユーザーの有効化をオプションで実行します
- メール通知をオプションで送信します
- デフォルトグループに割り当てます
assign_users_to_groups
属性のマッピングに基づいて複数のユーザーをグループに割り当てます:
- ユーザー属性(部署、役職など)を特定のグループにマッピングします
- 属性に基づいてユーザーを一括で割り当てます
provision_applications
複数のユーザーにアプリケーションへのアクセス権を付与します:
- ユーザーをアプリケーションに割り当てます
- 一括プロビジョニングに対応しています
run_onboarding_workflow
CSV データから複数のユーザーを対象に、オンボーディングのワークフロー全体を実行します:
- CSV からユーザーをインポートします
- 自動的に有効化します
- 属性に基づいてグループに割り当てます
- アプリケーションをプロビジョニングします
- ウェルカムメールを設定します
Claude での使用例
セットアップ後、次のようなコマンドを使用できます:
ユーザー管理
- 「ユーザー ID XXXX の詳細を表示して」
- 「エンジニアリング部門のユーザーをすべて検索して」
- 「名が『John』で始まるユーザーを検索して」
- 「メールアドレスに『gmail』が含まれるユーザーを検索して」
- 「部署が設定されているユーザーをすべて表示して」
- 「役職が『Manager』のユーザーを一覧表示して」
- 「[email protected] のユーザーのステータスは?」
- 「[email protected] のユーザーが最後にログインしたのはいつ?」
- 「先月作成されたユーザーを検索して」
- 「ID XXXX のユーザーを有効化して」
- 「ID XXXX のユーザーを一時停止して」
- 「ID XXXX の無効化されたユーザーを削除して」
- 「ユーザー XXXX が最後にログインした場所は?」
高度なユーザー検索
- 「Sales 部門のユーザーをすべて検索して」→
find_users_by_attributeとdepartment eq "Sales"を使用します - 「メールアドレスが『admin』で始まるユーザーを表示して」→
email sw "admin"を使用します - 「マネージャーが割り当てられているユーザーを検索して」→
manager prを使用します - 「姓に『smith』が含まれるユーザーを一覧表示して」→
lastName co "smith"を使用します
グループ管理
- 「Okta 組織内のグループをすべて表示して」
- 「『admin』という単語を含むグループを一覧表示して」
- 「『Marketing Team』という新しいグループを作成して」
- 「ID XXXX のグループの詳細を取得して」
- 「ID XXXX のグループを削除して」
- 「ユーザー XXXX をグループ YYYY に追加して」
- 「ユーザー XXXX をグループ YYYY から削除して」
- 「『Finance』グループ内のユーザーをすべて一覧表示して」
オンボーディングの自動化
- 「次の CSV データからユーザーをインポートして:[CSV content]」
- 「部署属性に基づいてユーザーをグループに割り当てて」
- 「この 5 人のユーザーにアプリケーションへのアクセス権を付与して」
- 「次の新入社員を対象に、オンボーディングのワークフロー全体を実行して:[CSV content]」
エラー処理
サーバーには、次のエラーに対応する堅牢なエラー処理が含まれています:
- ユーザーまたはグループが見つからない(404 エラー)
- API 認証の問題
- ユーザープロファイルの欠落または無効
- 一般的な API エラー
- CSV の解析エラー
- ユーザー属性のマッピング失敗
- アプリケーションのプロビジョニングエラー
- サポートされていない検索演算子(代替方法への自動フォールバック)
トラブルシューティング
よくある問題
Claude にツールが表示されない場合:
- Claude Desktop のログを確認します:
tail -f ~/Library/Logs/Claude/mcp*.log - すべての環境変数が正しく設定されていることを確認します
- index.js へのパスが絶対パスで、正しいことを確認します
認証エラー:
- API トークンが有効であることを確認します
- OKTA_ORG_URL に https:// を含む完全な URL が指定されていることを確認します
- Okta ドメインが正しいことを確認します
サーバー接続の問題:
- サーバーのビルドが正常に完了したことを確認します
- build/index.js のファイル権限を確認します(755 である必要があります)
- サーバーを直接実行してみます:
node /path/to/build/index.js
検索の問題:
- 一部の検索演算子は、すべての属性でサポートされているわけではありません(例:
containsはdepartmentでは機能しません) - 必要に応じて、サーバーは自動的に代替の検索方法にフォールバックします
- 使用された検索方法について、レスポンスメッセージを確認します
ログの表示
サーバーログを表示するには:
MacOS/Linux の場合:
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
Windows の場合:
Get-Content -Path "$env:AppData\Claude\Logs\mcp*.log" -Wait -Tail 20
環境変数
環境変数エラーが発生する場合は、次の項目を確認してください:
OKTA_ORG_URL:完全な URL(例:「https://dev-123456.okta.com」)を指定する必要がありますOKTA_API_TOKEN:有効な API トークンを指定する必要があります
セキュリティに関する考慮事項
- API トークンを安全に保管してください
- 認証情報をバージョン管理にコミットしないでください
- 機密データには環境変数を使用してください
- API トークンを定期的にローテーションしてください
- Okta Admin Console で API の使用状況を監視してください
- API 呼び出しにレート制限を実装してください
- API トークンには必要最小限の権限を使用してください
- 機密性の高い検索パラメーターでは、PII のマスキングが有効になっています
検索演算子の互換性
Okta の属性によって、サポートされる検索演算子は異なります:
| 属性の種類 | eq | sw | ew | co | pr |
|---|---|---|---|---|---|
| firstName, lastName | ✅ | ✅ | ✅ | ✅ | ✅ |
| email, login | ✅ | ✅ | ✅ | ✅ | ✅ |
| department, title | ✅ | ✅ | ❌ | ❌* | ✅ |
| division, organization | ✅ | ✅ | ❌ | ❌* | ✅ |
| すべての属性 | ✅ | ✅ | ⚠️ | ⚠️ | ✅ |
*❌ = 非対応、⚠️ = すべての属性でサポートされているとは限りません
注: 演算子がサポートされていない場合、互換性を確保するため、サーバーは自動的にクライアント側のフィルタリングにフォールバックします。
型
サーバーには、Okta のユーザーおよびグループデータ用の TypeScript インターフェースが含まれています:
interface OktaUserProfile {
login: string;
email: string;
secondEmail?: string;
firstName: string;
lastName: string;
displayName: string;
nickName?: string;
organization: string;
title: string;
division: string;
department: string;
employeeNumber: string;
userType: string;
costCenter: string;
mobilePhone?: string;
primaryPhone?: string;
streetAddress: string;
city: string;
state: string;
zipCode: string;
countryCode: string;
preferredLanguage: string;
profileUrl?: string;
}
interface OktaUser {
id: string;
status: string;
created: string;
activated: string;
lastLogin: string;
lastUpdated: string;
statusChanged: string;
passwordChanged: string;
profile: OktaUserProfile;
}
interface OktaGroup {
id: string;
created: string;
lastUpdated: string;
lastMembershipUpdated: string;
type: string;
objectClass: string[];
profile: {
name: string;
description: string;
};
}
オンボーディング用の CSV 形式
一括インポートまたはオンボーディングのワークフローツールを使用する場合、CSV には次のヘッダーを含めてください:
firstName(必須)lastName(必須)email(必須)department(任意)title(任意)mobilePhone(任意)
例:
firstName,lastName,email,department,title,mobilePhone
John,Doe,[email protected],Engineering,Senior Developer,+1-555-123-4567
Jane,Smith,[email protected],Marketing,Director,+1-555-987-6543
ライセンス
MIT License - 詳細については LICENSE ファイルを参照してください。
サポート
問題が発生した場合:
- 上記のトラブルシューティングのセクションを確認してください
- Claude Desktop のログを確認してください
- サーバーのエラー出力を確認してください
- Okta の開発者向けドキュメントを確認してください
注:PR を歓迎します!
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
