コンテンツにスキップ

リファレンス

health_check()

7つのキーがどの呼び出しでも必ず返ります。

キー 意味
status healthy / degraded / error
service 常に keycloak-mcp
version パッケージのバージョン
keycloak_url 設定された URL(未設定なら空文字列)
realm 設定されたレルム(未設定なら空文字列)
keycloak_version 常に null(軽量な呼び出しでは取得しない)
auth unknown / ok / missing-env / error

detaildegraded または error のときだけ追加され、理由(環境変数の欠落、 または本物の認証失敗の場合は例外の型とバックエンドが返した HTTP ステータス)が 入ります。内部 URL や生の HTTP ペイロードは意図的に含めていません。

意図的に軽量です。Client Credentials トークンを1つ取得するだけ — サービス アカウントがレルムと話せることを示す最軽量の証明であり、それ以外は何も走査 しません。セッション開始時やツール呼び出しのタイムアウト後に安心して呼べます。

ツール一覧

ツール 用途
count_users レルムの総ユーザー数
search_users(query, max_results=20) ユーザー名・メール・姓名の部分一致検索
get_user(username) 完全一致のユーザー名で詳細を取得
get_user_sessions(username) アクティブなセッション(タイムスタンプはローカル時刻)
logout_user(username) 書き込み。 1ユーザーの全アクティブセッションを終了
set_user_enabled(username, enabled) 書き込み。 有効/無効の切替。無効化しても既存セッションは終了しない
reset_password(username, password, temporary=False) 書き込み。 1ユーザーのパスワードをリセット
reset_passwords_batch(csv_text, temporary=False) 書き込み。 username,password の CSV から一括リセット
get_user_credentials(username) 設定済みの認証情報の種類。otp があれば TOTP/HOTP 設定済み
get_totp_users(max_users=0) レルム全体の TOTP 導入率。N+1(ユーザーごとに1呼び出し)。max_users または KEYCLOAK_MAX_USERS で上限
list_user_groups(username) ユーザーが所属するグループ
list_users_by_group(group_name, max_results=100) グループのメンバー
get_brute_force_status(username) ユーザーがブルートフォース検知によりロック中か
get_realm_security_defenses() ブルートフォース対策の方針と閾値、パスワードポリシー、ブラウザセキュリティヘッダー
get_login_failures_by_ip(date_from, date_to, top=20) 送信元 IP 別の失敗数ランキング
get_ip_activity(ip_address, event_types, date_from, date_to, max_timeline=200) 1 IP の網羅的な調査(構造化 JSON)
detect_login_loops(date_from, date_to, threshold=10, window_seconds=60, top=20) window_seconds 内に threshold 回を超えてログインしたユーザー
get_events(event_type, username, client_id, ip_address, date_from, date_to, max_results=50) 絞り込みイベント検索。ユーザー名は内部でユーザー ID に解決される
get_login_stats(date_from, date_to) 成功/失敗の総数(全件ページング)
get_login_stats_by_hour(date_from, date_to) 時間帯別のログイン数(ローカル時刻)
get_login_stats_by_client(date_from, date_to) クライアント(SP)別のログイン数
get_password_update_events(date_from, date_to, max_results=100) UPDATE_PASSWORD の履歴
get_admin_events(operation_types, resource_types, resource_path, date_from, date_to, max_results=50, max_repr=500) 管理操作による変更。get_events には現れない
get_user_attribute_history(username, date_from, date_to, max_results=100, max_repr=500) 1ユーザーに絞った管理イベント
get_session_stats() クライアント別のアクティブセッション数
get_client_sessions(client_id, max_results=100) 1クライアントのアクティブセッション
list_clients() レルムの SAML / OIDC クライアント
get_realm_roles() レルムレベルのロール
daily_brief(since_hours=18, ip_failure_threshold=50) 朝のサマリー: ログイン統計・ブルートフォース IP・セッション・パスワード更新・管理イベント

書き込みツールが実際に何をするか、get_ip_activity の出力の読み方、重い走査が 共有する deadline / 部分結果の仕組みは セキュリティ調査 を参照してください。

daily_brief

ログイン統計・ip_failure_threshold 件を超える失敗を出した IP(WARNING として フラグ)・アクティブなセッション・パスワード更新・管理イベントを、since_hours (既定18 — 09:00 に実行する場合ほぼ前日午後をカバー)の範囲で1つの Markdown レポートにまとめます。バックエンド接続に失敗した場合、内訳の欠けた部分的な レポートではなく、レポート全体が ## CRITICAL — <ExceptionType> になります。

get_admin_eventsget_user_attribute_historymax_repr を受け取り、 KeyCloak の「representation」ペイロード(変更されたオブジェクトの JSON テキスト) をどこまで含めるかを制御します。正の値はその文字数に切り詰め(既定500)、 0 は省略、負の値は全文を含めます。

get_eventsget_admin_events の違い

get_events が見るのはユーザーイベントです — ユーザー自身が行ったログイン・ ログアウト・パスワード変更。管理者が行った操作や、サービスアカウントがカスタム 属性を書き込む操作はここには一切現れません。それを見るのが get_admin_events です。get_user_attribute_historyget_admin_events を1ユーザーに絞った もので、自動化パイプラインが provisioning_flag のような属性を最後に書き込んだ のがいつかを確認するのに便利です。

CLI

keycloak-mcp            # MCP サーバーとして起動(stdio・既定・引数無し)
keycloak-mcp --version  # バージョンを表示して終了
keycloak-mcp --help     # 使い方と必要な環境変数を表示
keycloak-mcp --check    # 環境変数と認証を確認して終了

--check の終了コード: 0 成功、1 必須の環境変数が欠落、2 認証失敗。