コンテンツにスキップ
これは最新の機能を備えた最新リリースですが、長期サポートは提供されません。サポートを継続するには、新しいリリースごとにアップグレードするか、四半期ごとの安定版リリースをご利用ください。

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 サーバー

Page as Markdown

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 OAuthconfig.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レジストリのビルド情報を取得します。

始める前に

  1. OIDC プロバイダーをセットアップします。このガイドでは、Keycloak をインストール済みであることを前提としています。必要な realm 設定、クライアント、シークレットを使用して Keycloak をインストールするには、必ず General setup タブに従ってください。

  2. Solo Enterprise for agentregistry をインストールします。

  3. レジストリにログインします。対話型のデバイス認可と、静的なユーザー名およびパスワード認証情報フローのどちらかを選択します。

    ターミナルから対話的にログインする場合は、このフローを使用します。CLI は ar-cli-interactive パブリッククライアントを使用し、ブラウザーで承認するための URL とワンタイムコードを出力する device authorization grant flow を開始します。

    1. 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-SNSP
      
    2. Web ブラウザーで URL を開き、admin-user ユーザー名と password パスワードで Keycloak にログインします。ブラウザーでコードを確認すると、Keycloak は CLI セッション用のアクセストークンを発行します。認可が完了すると、CLI はトークンをシステムキーチェーンに保存するため、期限切れになるまで再度ログインする必要はありません。

    CI/CD パイプラインで特定のユーザー ID が必要なスクリプトログインには、このフローを使用します。CLI は ar-cli-password パブリッククライアントを使用し、ユーザー名とパスワードをアクセストークンと直接交換します。

    1. 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
    2. アクセストークンを ARCTL_API_TOKEN 環境変数に保存します。

      export ARCTL_API_TOKEN=$(arctl user info --show-tokens | jq -r .access_token)

  4. オプション: Agents、MCP servers、または Skills ガイドに従って、サンプルのエージェント、MCP サーバー、スキルをレジストリカタログに追加します。レジストリ MCP サーバーに接続した後、そのツールを使用してこれらのアーティファクトを一覧表示し、詳細を確認できます。

ステップ 1: レジストリ MCP サーバーを公開する

レジストリ MCP サーバーは、レジストリサーバー Pod のポート 31313 でリッスンします。

  1. ポート 31313 でレジストリサーバーをポートフォワードします。レジストリ MCP サーバーポートは UI および REST API ポート (12121) とは別であるため、両方のポートフォワードを同時に実行できます。

  2. レジストリ 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.mcpBridgeUrlMCP クライアントがレジストリ 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 Codearctl configure claude-code.mcp.json
Cursorarctl configure cursor.cursor/mcp.json
Visual Studio Codearctl configure vscode.vscode/mcp.json
Kiroarctl 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

  1. アクティブな arctl セッションからトークンを取得し、環境変数に保存します。

  2. 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 設定に保存されます。

  3. Claude Code にレジストリ MCP サーバーを登録します。

    claude mcp add --transport http agentregistry "${MCP_SERVER_URL}" \
  4. サーバーが登録されたことを確認します。arctl configure を使用した場合、サーバー名は agentregistry ではなく arctl です。

  5. サーバーが登録されていることを確認します。

    claude mcp list

    出力例: agentregistry: http://localhost:31313/mcp (connected) agentregistry: http://localhost:31313 (connected)

  6. トークンの期限が切れたら、ステップ 1 から 2 を再実行してトークンを更新します。

Important

この方法には、ステップ 2 の OAuth ディスカバリー設定が必要であり、IdP は HTTPS エンドポイントで提供されている必要があります。MCP クライアントは平文 HTTP アドレスへのトークンリクエスト送信を拒否します。始める前に セクションの Keycloak インスタンスはロードバランサーアドレス上の平文 HTTP で提供されるため、Interactive OAuth は完了できません。ローカル環境でレジストリ MCP サーバーをテストするには、代わりに Static auth header 方法を使用してください。

  1. ar-mcp-client Keycloak クライアントを使用してレジストリ MCP サーバーを登録します。

    claude mcp add --transport http agentregistry "${MCP_SERVER_URL}" \
      --client-id ar-mcp-client
  2. 対話的にログインします。Claude Code はレジストリ MCP サーバーの OAuth ディスカバリーメタデータを読み取り、IdP へのブラウザーウィンドウを開き、ログインに成功すると得られたトークンを保存します。

    claude mcp login agentregistry
  3. サーバーが登録されていることを確認します。

    claude mcp list

    出力例:

    agentregistry: http://localhost:31313/mcp (HTTP) - ✔ Connected
    

Cursor、Visual Studio Code、Kiro

次の手順では Cursor を例として使用します。別のクライアントを設定するには、cursor を vscode または kiro に置き換えます。

  1. アクティブな arctl セッションからトークンを取得し、環境変数に保存します。

    export ARCTL_TOKEN=$(arctl user info --show-tokens | jq -r .access_token)
  2. クライアントの MCP 設定ファイルを生成します。

    arctl configure cursor --url "${MCP_SERVER_URL}" --token-env ARCTL_TOKEN

    Note

    Visual Studio Code または Kiro 用のクライアント設定を生成するには、cursor を vscode または kiro に置き換えます。

    出力例:

    Configured Cursor AI Editor
    
  3. クライアントをリロードまたは再起動して新しい設定ファイルを読み込ませ、arctl MCP サーバーが接続されていることを確認します。

  4. トークンの有効期限が切れたら、ステップ 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 をセットアップする方法を示します。

  1. IdP が HTTPS エンドポイントで提供されており、ステップ 2 の OAuth ディスカバリー設定が完了していることを確認します。IdP を HTTPS で提供する方法について詳しくは、IdP のドキュメントを参照してください。

  2. 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 リストに追加します。

  3. クライアントの MCP 設定ファイルを生成します。--token-env フラグを省略するため、Authorization ヘッダーはファイルに書き込まれません。

    arctl configure cursor --url "${MCP_SERVER_URL}"

    出力例:

    Configured Cursor AI Editor
    
  4. クライアントをリロードまたは再起動して新しい設定ファイルを読み込ませます。クライアントは IdP に自分自身を登録し、IdP ログインページをブラウザーウィンドウで開き、ログインに成功すると取得したトークンを保存します。

  5. arctl MCP サーバーが接続されていることを確認します。

Note

動的クライアント登録では、接続する各 MCP クライアントが IdP に新しいクライアントを登録します。時間が経つと、クリーンアップが必要な多数のクライアントが作成される可能性があります。本番環境で動的クライアント登録を有効にする前に、このトレードオフを検討してください。

Codex

  1. アクティブな arctl セッションからトークンを取得し、環境変数に保存します。

    export ARCTL_TOKEN=$(arctl user info --show-tokens | jq -r .access_token)
  2. Codex にレジストリ MCP サーバーを登録します。

    codex mcp add agentregistry --url "${MCP_SERVER_URL}" \
      --bearer-token-env-var ARCTL_TOKEN
  3. サーバーが登録されていることを確認します。

    codex mcp list
  4. トークンの期限が切れたら、ステップ 1 から 2 を再実行してトークンを更新します。

Important

この方法には、ステップ 2 の OAuth ディスカバリー設定が必要であり、IdP は HTTPS エンドポイントで提供されている必要があります。MCP クライアントは平文 HTTP アドレスへのトークンリクエスト送信を拒否します。始める前に セクションの Keycloak インスタンスはロードバランサーアドレス上の平文 HTTP で提供されるため、Interactive OAuth は完了できません。ローカル環境でレジストリ MCP サーバーをテストするには、代わりに Static auth header 方法を使用してください。

  1. サーバー URL を使用してレジストリ MCP サーバーを登録します。

    codex mcp add agentregistry --url "${MCP_SERVER_URL}" \
      --oauth-resource "${MCP_SERVER_URL}"
  2. 対話的にログインします。Codex はレジストリ MCP サーバーの OAuth ディスカバリーメタデータを読み取り、IdP へのブラウザーウィンドウを開き、ログインに成功すると得られたトークンを保存します。

    codex mcp login agentregistry --scopes openid,profile
  3. サーバーが登録されていることを確認します。

    codex mcp list

    出力例:

    agentregistry: http://localhost:31313 (HTTP) - ✔ Connected
    agentregistry: http://localhost:31313/mcp (HTTP) - ✔ Connected
    

ステップ 4: カタログアクセスを確認する

レジストリ MCP サーバーで公開されているツールにアクセスし、レジストリカタログを参照して、追加した AI アーティファクトを表示できることを確認します。

  1. Claude Code など、任意の AI アシスタントを開き、レジストリカタログ内のすべてのエージェントを一覧表示するよう依頼します。

    プロンプト例:

    List all agents in the registry catalog.
  2. アシスタントが 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                         │
      └─────────────┴────────────────────────────────────┘
    
  3. MCP サーバーやスキルなど、その他の AI アーティファクトを続けて一覧表示するか、デプロイ済みインスタンスを表示します。

Note

カタログビューはユーザーの AccessPolicy によってスコープ設定されます。表示されるはずのアーティファクトが表示されない場合は、そのユーザーのロールにそのアーティファクトの registry:read 権限があることを確認してください。詳細については、レジストリアクセスを制限する を参照してください。