ocireg MCP Server

官方

一個基於SSE的MCP伺服器,允許由LLM驅動的應用

文件

OCI Registry MCP 伺服器

Trust Score 一個 MCP(模型上下文協定)伺服器,提供查詢 OCI 登錄檔和映像參照的工具。

概覽

本專案實作了一個基於 SSE 的 MCP 伺服器,讓 LLM 驅動的應用程式能與 OCI 登錄檔互動。它提供了擷取容器映像資訊、列出標籤等工具。

功能特色

  • 取得 OCI 映像的相關資訊
  • 列出儲存庫的標籤
  • 取得映像清單
  • 取得映像設定

MCP 工具

此伺服器提供下列 MCP 工具:

get_image_info

取得 OCI 映像的相關資訊。

輸入:

  • image_ref:映像參照(例如 docker.io/library/alpine:latest)

輸出:

  • 映像資訊,包含摘要、大小、架構、作業系統、建立日期和層數

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 Registry MCP 伺服器最簡單的方法是使用 ToolHive,它提供了安全、 容器化的 MCP 伺服器部署:

# 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 標頭中包含一個 bearer 權杖:

    • Authorization: Bearer <your-token>
    • 此方法的優先順序高於所有其他驗證方法
    • 當此方法存在時,環境變數和 Docker 設定將被忽略
  2. Bearer Token 環境變數:設定下列環境變數:

    • OCI_TOKEN:用於登錄檔驗證的 bearer 權杖
  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 檔案。