ocireg MCP Server
ทางการเซิร์ฟเวอร์ MCP ที่ใช้ SSE ซึ่งช่วยให้แอปพลิเคชันที่ขับเคลื่อนด้วย LLM สามารถโต้ตอบกับรีจิสทรี OCI ได้ โดยมีเครื่องมือสำหรับดึงข้อมูลเกี่ยวกับอิมเมจคอนเทนเนอร์ แสดงรายการแท็ก และอื่นๆ
เอกสาร
OCI Registry MCP Server
เซิร์ฟเวอร์ MCP (Model Context Protocol) ที่ให้เครื่องมือสำหรับการสืบค้น OCI
รีจิสทรีและการอ้างอิงอิมเมจ
ภาพรวม
โปรเจกต์นี้ใช้เซิร์ฟเวอร์ MCP แบบ SSE ที่อนุญาตให้แอปพลิเคชันที่ขับเคลื่อนด้วย 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 Header (ความสำคัญสูงสุด): รวมโทเค็น bearer ใน ส่วนหัว
Authorizationของคำขอ HTTP:Authorization: Bearer <your-token>- วิธีนี้มีความสำคัญเหนือวิธีการรับรองความถูกต้องอื่นๆ ทั้งหมด
- เมื่อมีอยู่ ตัวแปรสภาพแวดล้อมและ Docker config จะถูกละเว้น
-
ตัวแปรสภาพแวดล้อม Bearer Token: ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้:
OCI_TOKEN: โทเค็น Bearer สำหรับการรับรองความถูกต้องของรีจิสทรี
-
ชื่อผู้ใช้และรหัสผ่าน: ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้:
OCI_USERNAME: ชื่อผู้ใช้สำหรับการรับรองความถูกต้องของรีจิสทรีOCI_PASSWORD: รหัสผ่านสำหรับการรับรองความถูกต้องของรีจิสทรี
-
Docker Config (ความสำคัญต่ำสุด): หากไม่มีการให้การรับรองความถูกต้องอื่นๆ เซิร์ฟเวอร์จะใช้ Docker keychain เริ่มต้น ซึ่งอ่านข้อมูลประจำตัวจาก
~/.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 ใน
รีพอสิทอรี หรือเข้าร่วมกับเราในช่อง #mcp-servers บน
เซิร์ฟเวอร์ Discord ชุมชน ของเรา
ใบอนุญาต
โปรเจกต์นี้ได้รับอนุญาตภายใต้ Apache v2 License - ดูไฟล์ LICENSE สำหรับ รายละเอียด