ocireg MCP Server

公式

SSEベ

ドキュメント

OCI レジストリ MCP サーバー

Trust Score OCI レジストリとイメージ参照をクエリするためのツールを提供する MCP (Model Context Protocol) サーバーです。

概要

このプロジェクトは、LLM を活用したアプリケーションが OCI レジストリとやり取りできるようにする SSE ベースの MCP サーバーを実装します。コンテナイメージに関する情報の取得、タグの一覧表示などのツールを提供します。

機能

  • OCI イメージに関する情報の取得
  • リポジトリのタグ一覧表示
  • イメージマニフェストの取得
  • イメージ設定の取得

MCP ツール

サーバーは以下の MCP ツールを提供します。

get_image_info

OCI イメージに関する情報を取得します。

入力:

  • image_ref: イメージ参照 (例: docker.io/library/alpine:latest)

出力:

  • ダイジェスト、サイズ、アーキテクチャ、OS、作成日、レイヤー数を含むイメージ情報

list_tags

リポジトリのタグを一覧表示します。

入力:

  • repository: リポジトリ名 (例: docker.io/library/alpine)

出力:

  • リポジトリのタグ一覧

get_image_manifest

OCI イメージのマニフェストを取得します。

入力:

  • image_ref: イメージ参照 (例: docker.io/library/alpine:latest)

出力:

  • イメージマニフェスト

get_image_config

OCI イメージの設定を取得します。

入力:

  • image_ref: イメージ参照 (例: docker.io/library/alpine:latest)

出力:

  • イメージ設定

使用方法

ToolHive での実行 (推奨)

OCI レジストリ MCP サーバーを実行する最も簡単な方法は、MCP サーバーの安全なコンテナ化デプロイを提供する ToolHive を使用することです。

# Install ToolHive (if not already installed)
# See: https://docs.stacklok.com/toolhive/guides-cli/install

# Register a supported client so ToolHive can auto-configure your environment
thv client setup
# Run the OCI Registry MCP server (packaged as 'oci-registry' in ToolHive)
thv run oci-registry

# List running servers
thv list

# Get detailed information about the server
thv registry info oci-registry

サーバーは MCP 互換クライアントから利用可能になり、OCI レジストリにイメージ情報をクエリできます。

ToolHive での認証

プライベートレジストリにアクセスする必要がある場合、ToolHive のシークレット管理を使用して認証情報を提供できます。

# For bearer token authentication
thv secret set oci-token
# Enter your bearer token when prompted

thv run --secret oci-token,target=OCI_TOKEN oci-registry

# For username/password authentication
thv secret set oci-username
thv secret set oci-password
# Enter your credentials when prompted

thv run --secret oci-username,target=OCI_USERNAME --secret oci-password,target=OCI_PASSWORD oci-registry

開発

前提条件

  • Go 1.21 以降
  • OCI レジストリへのアクセス

認証

サーバーは、プライベート OCI レジストリにアクセスするための以下の認証方法をサポートします (優先順位順)。

  1. HTTP Authorization ヘッダー (最優先): HTTP リクエストの Authorization ヘッダーにベアラートークンを含めます。

    • Authorization: Bearer <your-token>
    • この方法は他のすべての認証方法よりも優先されます
    • これが存在する場合、環境変数と Docker 設定は無視されます
  2. ベアラートークン環境変数: 以下の環境変数を設定します。

    • OCI_TOKEN: レジストリ認証用のベアラートークン
  3. ユーザー名とパスワード: 以下の環境変数を設定します。

    • OCI_USERNAME: レジストリ認証用のユーザー名
    • OCI_PASSWORD: レジストリ認証用のパスワード
  4. Docker 設定 (最低優先度): 他の認証が提供されない場合、サーバーはデフォルトの Docker キーチェーンを使用し、~/.docker/config.json から認証情報を読み取ります。

例:

# HTTP Authorization header (for per-request authentication)
# This is handled automatically by the MCP client when making requests
# Example: curl -H "Authorization: Bearer mytoken" http://localhost:8080/...

# Bearer token authentication via environment variable
export OCI_TOKEN=mytoken

# Username/password authentication via environment variables
export OCI_USERNAME=myuser
export OCI_PASSWORD=mypassword

ポート設定

サーバーは、以下のいずれかを使用して特定のポートでリッスンするように設定できます。

  1. 環境変数:

    • MCP_PORT: リッスンするポート番号 (0 ~ 65535 の範囲である必要があります)
    • 設定されていないか無効な場合、デフォルトでポート 8080 になります
  2. コマンドラインフラグ:

    • -port: 環境変数の設定を上書きします (0 ~ 65535 の範囲である必要があります)
    • 無効なポートが指定された場合、デフォルトでポート 8080 になります
    • 例: ./ocireg-mcp -port 9090

テスト

go test ./...

リンティング

golangci-lint run

貢献

この MCP サーバーへの貢献を歓迎します!貢献をご希望の場合は、開始方法の詳細について CONTRIBUTING ガイド をご確認ください。

バグを発見した場合や機能リクエストがある場合は、リポジトリで Issue を作成 するか、コミュニティ Discord サーバー#mcp-servers チャンネルにご参加ください。

ライセンス

このプロジェクトは Apache v2 ライセンスの下でライセンスされています。詳細は LICENSE ファイルを参照してください。