ocireg MCP Server
官方一個基於SSE的MCP伺服器,允許由LLM驅動的應用
文件
OCI Registry MCP 伺服器
一個 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 登錄檔的驗證方法(依優先順序排列):
-
HTTP Authorization 標頭(最高優先順序):在 HTTP 請求的
Authorization標頭中包含一個 bearer 權杖:Authorization: Bearer <your-token>- 此方法的優先順序高於所有其他驗證方法
- 當此方法存在時,環境變數和 Docker 設定將被忽略
-
Bearer Token 環境變數:設定下列環境變數:
OCI_TOKEN:用於登錄檔驗證的 bearer 權杖
-
使用者名稱和密碼:設定下列環境變數:
OCI_USERNAME:用於登錄檔驗證的使用者名稱OCI_PASSWORD:用於登錄檔驗證的密碼
-
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
連接埠設定
伺服器可以透過下列任一方式設定監聽特定連接埠:
-
環境變數:
MCP_PORT:要監聽的連接埠號碼(必須介於 0 到 65535 之間)- 如果未設定或無效,預設為連接埠 8080
-
命令列旗標:
-port:覆寫環境變數設定(必須介於 0 到 65535 之間)- 如果提供的連接埠無效,則預設為連接埠 8080
- 範例:
./ocireg-mcp -port 9090
測試
go test ./...
程式碼檢查
golangci-lint run
貢獻
我們歡迎對此 MCP 伺服器做出貢獻!如果您想貢獻,請檢閱 CONTRIBUTING 指南 以取得如何開始的詳細資訊。
如果您遇到錯誤或有功能請求,請在儲存庫中
開啟一個 issue,或加入我們
社群 Discord 伺服器 上的 #mcp-servers 頻道。
授權
本專案採用 Apache v2 授權條款 - 詳情請參閱 LICENSE 檔案。