For the complete documentation index, see llms.txt. Markdown versions of all docs pages are available by appending .md to any docs URL.
Registry MCP サーバー
Solo Enterprise for agentregistry カタログを読み取り専用 MCP サーバーとして公開し、Claude Code や Codex などの AI アシスタントが、登録済みのエージェント、MCP サーバー、スキル、デプロイを検出して照会できるようにします。
Solo Enterprise for agentregistry には、レジストリカタログをストリーム可能な HTTP MCP サーバーとして公開する組み込みの MCP ブリッジが含まれています。Claude Code や Codex などの MCP クライアントは、この MCP サーバーに接続し、カタログツールを使用して、AI アシスタントセッションを離れずにエージェント、MCP サーバー、スキル、プロンプト、モデル、プラグイン、デプロイ、ランタイムを検出できます。
Note
MCP サーバーは読み取り専用です。カタログ化された MCP サーバー上のツールを呼び出したり、それらにトラフィックをプロキシしたりすることはありません。レジストリカタログ項目を追加または更新するには、引き続き Solo Enterprise for agentregistry UI、REST API、または arctl コマンドラインツールを使用する必要があります。
MCP クライアントの認証オプション
レジストリ MCP サーバーは、MCP クライアント向けに次の認証オプションをサポートします。どの方法を選択しても、レジストリ MCP サーバーはレジストリ REST API、UI、arctl コマンドラインツールと同じ OIDC 認証および AccessPolicy RBAC メカニズムを適用します。
| オプション | 仕組み | 使用するタイミング |
|---|---|---|
| Static auth header | アクティブな arctl セッションからトークンを抽出し、レジストリ MCP サーバーの登録時に静的な Authorization ヘッダーとして渡します。トークンは OIDC セッションの期限切れ時に失効し、手動で更新する必要があります。 | すばやく簡単にセットアップする場合、OAuth 認証をサポートしない MCP クライアントを接続する必要がある場合、またはレジストリ MCP サーバーがイングレスゲートウェイで公開されていない環境で、この方法を使用します。 |
| Interactive OAuth | config.mcpBridgeUrl Helm 値を使用してレジストリ MCP サーバー URL を設定します。この値を設定すると、レジストリ MCP サーバーは <host>/.well-known/oauth-protected-resource/mcp で RFC 9728 protected-resource メタデータを提供し、MCP クライアントが設定済み IdP を自動的に検出できるようにします。MCP クライアントが OAuth 認証をサポートする場合、OAuth ログインプロセス中に自動的にブラウザーを開き、認証のためにユーザーを IdP ログインページにリダイレクトします。MCP クライアントはトークン更新も自動的に処理できます。この処理をサポートするには、IdP が HTTPS エンドポイントで提供されている必要があります。MCP クライアントは平文 HTTP アドレスへのトークンリクエスト送信を拒否するためです。 | レジストリサーバーがイングレスゲートウェイで公開され、IdP が HTTPS で提供され、Claude Code や Codex などの MCP クライアントが OAuth 認証をサポートする本番環境。 |
使用可能なレジストリ MCP サーバーツール
次のツールがレジストリ MCP サーバーで公開され、AI アシスタントセッションで使用できます。
| ツール | 説明 |
|---|---|
list_agents, get_agent | カタログからエージェントを一覧表示または取得します。 |
list_servers, get_server | カタログから MCP サーバーを一覧表示または取得します。 |
list_skills, get_skill | カタログからスキルを一覧表示または取得します。 |
list_prompts, get_prompt | カタログからプロンプトテンプレートを一覧表示または取得します。 |
list_models, get_model | カタログからモデル設定を一覧表示または取得します。 |
list_plugins, get_plugin | カタログからエージェントプラグインを一覧表示または取得します。 |
list_deployments, get_deployment | デプロイを一覧表示または取得します。 |
list_runtimes, get_runtime | エージェントと MCP サーバーのデプロイ先である Runtime リソースを一覧表示または取得します。 |
registry_health | レジストリ MCP サーバーの正常性を確認します。 |
registry_version | レジストリのビルド情報を取得します。 |
始める前に
OIDC プロバイダーをセットアップします。このガイドでは、Keycloak をインストール済みであることを前提としています。必要な realm 設定、クライアント、シークレットを使用して Keycloak をインストールするには、必ず General setup タブに従ってください。
レジストリにログインします。対話型のデバイス認可と、静的なユーザー名およびパスワード認証情報フローのどちらかを選択します。
ターミナルから対話的にログインする場合は、このフローを使用します。CLI は
ar-cli-interactiveパブリッククライアントを使用し、ブラウザーで承認するための URL とワンタイムコードを出力する device authorization grant flow を開始します。Keycloak 発行者と
ar-cli-interactiveクライアントを使用するように CLI を設定します。その後、Solo Enterprise for agentregistry にログインします。export OIDC_ISSUER=$KEYCLOAK_ISSUER export OIDC_CLIENT_ID=ar-cli-interactive arctl user login出力例:
To complete the login process, please: 1. Open: http://172.18.0.13:8080/realms/agentregistry/device 2. Enter the code: SYSQ-SNSP - or go to: http://172.18.0.13:8080/realms/agentregistry/device?user_code=SYSQ-SNSPWeb ブラウザーで URL を開き、
admin-userユーザー名とpasswordパスワードで Keycloak にログインします。ブラウザーでコードを確認すると、Keycloak は CLI セッション用のアクセストークンを発行します。認可が完了すると、CLI はトークンをシステムキーチェーンに保存するため、期限切れになるまで再度ログインする必要はありません。
CI/CD パイプラインで特定のユーザー ID が必要なスクリプトログインには、このフローを使用します。CLI は
ar-cli-passwordパブリッククライアントを使用し、ユーザー名とパスワードをアクセストークンと直接交換します。admin-user/password認証情報で Solo Enterprise for agentregistry にログインします。export OIDC_ISSUER=$KEYCLOAK_ISSUER arctl user login \ --oidc-flow=password-credentials \ --oidc-client-id=ar-cli-password \ --oidc-username=admin-user \ --oidc-password=passwordアクセストークンを
ARCTL_API_TOKEN環境変数に保存します。export ARCTL_API_TOKEN=$(arctl user info --show-tokens | jq -r .access_token)
オプション: Agents、MCP servers、または Skills ガイドに従って、サンプルのエージェント、MCP サーバー、スキルをレジストリカタログに追加します。レジストリ MCP サーバーに接続した後、そのツールを使用してこれらのアーティファクトを一覧表示し、詳細を確認できます。
ステップ 1: レジストリ MCP サーバーを公開する
レジストリ MCP サーバーは、レジストリサーバー Pod のポート 31313 でリッスンします。
ポート
31313でレジストリサーバーをポートフォワードします。レジストリ MCP サーバーポートは UI および REST API ポート (12121) とは別であるため、両方のポートフォワードを同時に実行できます。レジストリ MCP サーバーのアドレスを環境変数として保存します。
/mcpパスを含めます。レジストリ MCP サーバーはポート31313の任意のパスで MCP リクエストに応答しますが、ここで使用するパスは OAuth ディスカバリー用の protected-resource メタデータ URL に反映されます。後でarctl configureコマンドを使用して MCP クライアントをレジストリ MCP サーバーに接続する場合、このコマンドはパスに/mcpサフィックスが含まれていることを想定します。export MCP_SERVER_URL=http://localhost:31313/mcp ```sh export MCP_SERVER_URL=http://localhost:31313
イングレスゲートウェイを使用してレジストリサーバーをパブリック URL で提供する場合は、
/mcpパスとmcp名前付きポートにリクエストをルーティングして、レジストリ MCP サーバーを公開できます。mcpポートは、レジストリサーバーのポート31313を自動的にターゲットにします。たとえば、レジストリ MCP サーバーのアドレスはhttps://registry.example.com/mcpのようになります。MCP クライアントにも Interactive OAuth を使用させる場合は、
https://registry.example.com/.well-known/oauth-protected-resource/mcpなどの OAuth ディスカバリーエンドポイントと、https://registry.example.com/mcpなどレジストリ MCP サーバーを公開するエンドポイントへのルートを追加する必要があります。完全な例については、レジストリを HTTPS で公開するを参照してください。 [!NOTE] イングレスゲートウェイを使用してレジストリサーバーを公開 URL で提供する場合は、/mcpパスとmcp名前付きポートにリクエストをルーティングすることで、レジストリ MCP サーバーを公開できます。mcpポートはレジストリサーバーのポート31313を自動的にターゲットにします。たとえば、レジストリ MCP サーバーアドレスは https://registry.example.com/mcp のようになります。
MCP クライアントが OAuth 認証をサポートしている場合は、Solo Enterprise for agentregistry の Helm インストールをアップグレードし、先ほど取得した MCP_SERVER_URL 値を config.mcpBridgeUrl フィールドのレジストリ MCP サーバーアドレスとして設定できます。この値を設定すると、レジストリ MCP サーバーは RFC 9728 protected-resource メタデータを <host>/.well-known/oauth-protected-resource/<suffix-from-MCP_SERVER_URL> で提供します。MCP_SERVER_URL に含めたサフィックスパスは URL に追加されることに注意してください。たとえば、MCP_SERVER_URL=http://localhost:31313/mcp を設定すると、protected-resource メタデータは <host>/.well-known/oauth-protected-resource/mcp で提供されます。
MCP クライアントが OAuth 認証をサポートする場合は、Solo Enterprise for agentregistry の Helm インストールをアップグレードして、config.mcpBridgeUrl フィールドにレジストリ MCP サーバーアドレスを設定できます。この値を設定すると、レジストリ MCP サーバーは <host>/.well-known/oauth-protected-resource/mcp で RFC 9728 protected-resource メタデータを提供し、MCP クライアントが設定済み IdP を自動的に検出できるようにします。
任意で config.mcpBridgeAudience を設定し、レジストリ MCP サーバーが受け入れるトークンを制限できます。IdP がトークンを発行すると、そのトークンには有効なサービスを列挙する aud (audience) クレームが含まれます。config.mcpBridgeAudience フィールドを設定すると、この値が aud クレームに含まれていないトークンをレジストリ MCP サーバーが拒否するようになります。これにより、REST API など別のサービス用に発行されたトークンがレジストリ MCP サーバーで再利用されるのを防ぐことができます。
Note
このステップは、MCP クライアントに OAuth 認証を対話的に完了させる場合にのみ必要です。静的な認証ヘッダーを使用してレジストリ MCP サーバーで認証する場合は、このステップをスキップして ステップ 3: MCP クライアントを接続する に進みます。
詳細については、MCP クライアントの認証オプション を参照してください。
helm upgrade -i agentregistry \
oci://us-docker.pkg.dev/solo-public/agentregistry-enterprise/helm/agentregistry-enterprise \
--namespace agentregistry-system \
--reuse-values \
--set config.mcpBridgeUrl="${MCP_SERVER_URL}"| Helm 値 | 説明 |
|---|---|
config.mcpBridgeUrl | MCP クライアントがレジストリ MCP サーバーに到達するために使用する外部 URL です。対話型 OAuth フロー向けの protected-resource メタデータを有効にします。未設定の場合、対話型 OAuth は無効になり、静的な認証ヘッダーを使用してレジストリ MCP サーバーで認証する必要があります。 |
config.mcpBridgeAudience | オプション: レジストリ MCP サーバーに提示されるトークンで期待される aud クレームです。未設定の場合、audience チェックは実行されません。 |
ステップ 3: MCP クライアントを接続する
Claude Code、Cursor、Visual Studio Code、Kiro では、サーバーを手動で登録する代わりに arctl configure コマンドでクライアントの MCP 設定ファイルを生成できます。このコマンドは、既存のクライアント設定ファイルにエントリをマージします。ファイルがまだ存在しない場合は作成し、サーバーエントリには常に arctl という名前を付けます。このコマンドでは Interactive OAuth フローに必要な OAuth クライアント ID を設定できないことに注意してください。Interactive OAuth を使用する予定がある場合は、サーバーを手動で追加する必要があります。
次の表は、標準でサポートされるクライアントを示しています。
| クライアント | コマンド | 設定ファイル |
|---|---|---|
| Claude Code | arctl configure claude-code | .mcp.json |
| Cursor | arctl configure cursor | .cursor/mcp.json |
| Visual Studio Code | arctl configure vscode | .vscode/mcp.json |
| Kiro | arctl configure kiro | .kiro/settings/mcp.json |
コマンドがレジストリ MCP サーバーのアドレスを使用するように、--url フラグを含めます。このフラグがない場合、コマンドはレジストリ MCP サーバーのポート (31313) ではなく、agentgateway のポート (21212) を既定で使用します。静的認証ヘッダーで認証するには、--token-env ARCTL_TOKEN のように、トークンを保持する環境変数の名前を指定して --token-env フラグを追加します。設定ファイルには変数名のみが書き込まれ、トークン自体は書き込まれません。
Codex には arctl configure コマンドがありません。Codex を接続するには、Codex セクションの手順に従います。
MCP クライアントを選択し、レジストリ MCP サーバーに接続します。前のステップでセットアップした認証パターンに従ってください。
Claude Code
アクティブな
arctlセッションからトークンを取得し、環境変数に保存します。Claude Code 用の MCP 設定ファイルを生成します。このコマンドは現在のディレクトリに
.mcp.jsonファイルを書き込み、レジストリ MCP サーバーをそのプロジェクトにスコープします。このファイルはトークン値を保存せず、ARCTL_TOKEN環境変数を参照するため、その変数が設定されたシェルから Claude Code を起動する必要があります。arctl configure claude-code --url "${MCP_SERVER_URL}" --token-env ARCTL_TOKEN出力例:
Configured Claude Codeまたは、次のコマンドでサーバーを直接登録できます。このコマンドは
ARCTL_TOKENをただちに展開するため、トークン値自体が Claude Code 設定に保存されます。Claude Code にレジストリ MCP サーバーを登録します。
claude mcp add --transport http agentregistry "${MCP_SERVER_URL}" \サーバーが登録されたことを確認します。
arctl configureを使用した場合、サーバー名はagentregistryではなくarctlです。サーバーが登録されていることを確認します。
claude mcp list出力例: agentregistry: http://localhost:31313/mcp (connected) agentregistry: http://localhost:31313 (connected)
トークンの期限が切れたら、ステップ 1 から 2 を再実行してトークンを更新します。
ar-mcp-clientKeycloak クライアントを使用してレジストリ MCP サーバーを登録します。claude mcp add --transport http agentregistry "${MCP_SERVER_URL}" \ --client-id ar-mcp-client対話的にログインします。Claude Code はレジストリ MCP サーバーの OAuth ディスカバリーメタデータを読み取り、IdP へのブラウザーウィンドウを開き、ログインに成功すると得られたトークンを保存します。
claude mcp login agentregistryサーバーが登録されていることを確認します。
claude mcp list出力例:
agentregistry: http://localhost:31313/mcp (HTTP) - ✔ Connected
Cursor、Visual Studio Code、Kiro
次の手順では Cursor を例として使用します。別のクライアントを設定するには、cursor を vscode または kiro に置き換えます。
アクティブな
arctlセッションからトークンを取得し、環境変数に保存します。export ARCTL_TOKEN=$(arctl user info --show-tokens | jq -r .access_token)クライアントの MCP 設定ファイルを生成します。
arctl configure cursor --url "${MCP_SERVER_URL}" --token-env ARCTL_TOKENNote
Visual Studio Code または Kiro 用のクライアント設定を生成するには、
cursorをvscodeまたはkiroに置き換えます。出力例:
Configured Cursor AI Editorクライアントをリロードまたは再起動して新しい設定ファイルを読み込ませ、
arctlMCP サーバーが接続されていることを確認します。トークンの有効期限が切れたら、ステップ 1-2 を再実行してトークンを更新します。
Note
Cursor と Kiro は接続するたびに ARCTL_TOKEN 環境変数からトークンを読み取るため、この変数が設定されたシェルからこれらのクライアントを起動する必要があります。Visual Studio Code は環境変数を読み取りません。代わりに、初回接続時にトークンの入力を求め、独自のシークレットストレージに保存します。
Important
これらのクライアントで Interactive OAuth を使用できるのは、IdP が動的クライアント登録を許可している場合のみです。claude や codex と異なり、Cursor、Visual Studio Code、Kiro の各クライアントは、始める前に で作成する ar-mcp-client Keycloak クライアントのような事前登録済み OAuth クライアントを MCP サーバーに指定する機能をサポートしていません。代わりに、MCP クライアント自身が IdP に登録される必要があります。始める前に セクションの Keycloak レルムは動的クライアント登録を許可していないため、このガイドのセットアップでは Static auth header 方法を使用してください。
これらのプロバイダーで Interactive OAuth を使用するには、IdP が動的クライアント登録を許可している必要があります。次の手順では、Interactive OAuth をサポートするように IdP と Cursor をセットアップする方法を示します。
IdP が HTTPS エンドポイントで提供されており、ステップ 2 の OAuth ディスカバリー設定が完了していることを確認します。IdP を HTTPS で提供する方法について詳しくは、IdP のドキュメントを参照してください。
MCP クライアントが IdP に自分自身を登録できるようにします。Keycloak では、匿名の Trusted Hosts クライアント登録ポリシーがこの動作を制御します。次のコマンドはレルム内のそのポリシーを見つけ、ローカル MCP クライアントの登録を許可します。
export KEYCLOAK_TOKEN=$(curl -s \ -d "client_id=admin-cli" -d "username=admin" -d "password=admin" \ -d "grant_type=password" \ "${KEYCLOAK_URL}/realms/master/protocol/openid-connect/token" \ | jq -r .access_token) export POLICY=$(curl -s -H "Authorization: Bearer ${KEYCLOAK_TOKEN}" \ "${KEYCLOAK_URL}/admin/realms/${KEYCLOAK_REALM}/components?type=org.keycloak.services.clientregistration.policy.ClientRegistrationPolicy" \ | jq '.[] | select(.providerId=="trusted-hosts" and .subType=="anonymous")') echo "${POLICY}" | jq '.config = { "trusted-hosts": ["localhost","127.0.0.1"], "host-sending-registration-request-must-match": ["false"], "client-uris-must-match": ["true"] }' \ | curl -s -X PUT -H "Authorization: Bearer ${KEYCLOAK_TOKEN}" \ -H "Content-Type: application/json" -d @- \ "${KEYCLOAK_URL}/admin/realms/${KEYCLOAK_REALM}/components/$(echo "${POLICY}" | jq -r .id)"MCP クライアントは OAuth コールバックを受け取るためにローカルサーバーを起動するため、
localhostと127.0.0.1を信頼する必要があります。リモート開発環境など、他のホストから MCP クライアントを登録できるようにするには、それらのホストをtrusted-hostsリストに追加します。クライアントの MCP 設定ファイルを生成します。
--token-envフラグを省略するため、Authorizationヘッダーはファイルに書き込まれません。arctl configure cursor --url "${MCP_SERVER_URL}"出力例:
Configured Cursor AI Editorクライアントをリロードまたは再起動して新しい設定ファイルを読み込ませます。クライアントは IdP に自分自身を登録し、IdP ログインページをブラウザーウィンドウで開き、ログインに成功すると取得したトークンを保存します。
arctlMCP サーバーが接続されていることを確認します。
Note
動的クライアント登録では、接続する各 MCP クライアントが IdP に新しいクライアントを登録します。時間が経つと、クリーンアップが必要な多数のクライアントが作成される可能性があります。本番環境で動的クライアント登録を有効にする前に、このトレードオフを検討してください。
Codex
アクティブな
arctlセッションからトークンを取得し、環境変数に保存します。export ARCTL_TOKEN=$(arctl user info --show-tokens | jq -r .access_token)Codex にレジストリ MCP サーバーを登録します。
codex mcp add agentregistry --url "${MCP_SERVER_URL}" \ --bearer-token-env-var ARCTL_TOKENサーバーが登録されていることを確認します。
codex mcp listトークンの期限が切れたら、ステップ 1 から 2 を再実行してトークンを更新します。
Important
サーバー URL を使用してレジストリ MCP サーバーを登録します。
codex mcp add agentregistry --url "${MCP_SERVER_URL}" \ --oauth-resource "${MCP_SERVER_URL}"対話的にログインします。Codex はレジストリ MCP サーバーの OAuth ディスカバリーメタデータを読み取り、IdP へのブラウザーウィンドウを開き、ログインに成功すると得られたトークンを保存します。
codex mcp login agentregistry --scopes openid,profileサーバーが登録されていることを確認します。
codex mcp list出力例:
agentregistry: http://localhost:31313 (HTTP) - ✔ Connected agentregistry: http://localhost:31313/mcp (HTTP) - ✔ Connected
ステップ 4: カタログアクセスを確認する
レジストリ MCP サーバーで公開されているツールにアクセスし、レジストリカタログを参照して、追加した AI アーティファクトを表示できることを確認します。
Claude Code など、任意の AI アシスタントを開き、レジストリカタログ内のすべてのエージェントを一覧表示するよう依頼します。
プロンプト例:
List all agents in the registry catalog.アシスタントが
list_agentsツールを使用して、レジストリカタログに登録されたエージェントを検索していることを確認します。アシスタントは次のような表を返します。Claude Code での出力例:
List all agents in the registry catalog. Called agentregistry (ctrl+o to expand) ⏺ There is 1 agent in the registry catalog: ┌─────────────┬────────────────────────────────────┐ │ Field │ Value │ ├─────────────┼────────────────────────────────────┤ │ Name │ myagent │ ├─────────────┼────────────────────────────────────┤ │ Tag │ latest │ ├─────────────┼────────────────────────────────────┤ │ Description │ myagent agent │ ├─────────────┼────────────────────────────────────┤ │ Model │ gemini-2.5-flash (Gemini provider) │ ├─────────────┼────────────────────────────────────┤ │ Framework │ ADK (Python) │ ├─────────────┼────────────────────────────────────┤ │ Image │ localhost:5001/myagent:latest │ ├─────────────┼────────────────────────────────────┤ │ Created │ 2026-07-28 │ └─────────────┴────────────────────────────────────┘MCP サーバーやスキルなど、その他の AI アーティファクトを続けて一覧表示するか、デプロイ済みインスタンスを表示します。
Note
カタログビューはユーザーの AccessPolicy によってスコープ設定されます。表示されるはずのアーティファクトが表示されない場合は、そのユーザーのロールにそのアーティファクトの registry:read 権限があることを確認してください。詳細については、レジストリアクセスを制限する を参照してください。