mcpField
O
Okta MCP Server

Okta MCP Server

ローカル
github.com/kapilduraphe開発ツール2233 週間前に更新

Okta MCP Server について

Okta MCP Server は、Claude から Okta のユーザー管理システムを操作できるようにする MCP サーバーで、ユーザーとグループの管理およびオンボーディングの自動化を提供します。会話を通じて Okta アカウントを管理したい IT・管理部門の担当者に向いています。

主な機能

  1. 01ユーザー検索、属性による検索、ステータス管理
  2. 02ユーザーの有効化、停止、停止解除、削除
  3. 03グループの作成、参照、削除、メンバー管理
  4. 04CSV データによる一括ユーザーインポート
  5. 05オンボーディングワークフロー(実験的機能)

活用シーン

  1. 01部署や役職で Okta ユーザーを検索する
  2. 02CSV から新入社員をインポートしグループを割り当てる
  3. 03ユーザーの最終ログイン場所を確認する

MCP 対応

本プロジェクトは MCP サーバーであり、Okta のユーザー、グループ、オンボーディング処理を管理するツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MseeP.ai Security Assessment Badge

Okta MCP サーバー

この MCP サーバーを使用すると、Claude が Okta のユーザー管理システムと連携でき、ユーザーとグループを包括的に管理できるほか、オンボーディングを自動化できます。

Okta Server MCP server

前提条件

  • 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
環境変数

環境変数エラーが発生する場合は、次の項目を確認してください:

セキュリティに関する考慮事項

  • API トークンを安全に保管してください
  • 認証情報をバージョン管理にコミットしないでください
  • 機密データには環境変数を使用してください
  • API トークンを定期的にローテーションしてください
  • Okta Admin Console で API の使用状況を監視してください
  • API 呼び出しにレート制限を実装してください
  • API トークンには必要最小限の権限を使用してください
  • 機密性の高い検索パラメーターでは、PII のマスキングが有効になっています

検索演算子の互換性

Okta の属性によって、サポートされる検索演算子は異なります:

属性の種類eqswewcopr
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 を歓迎します!

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。