ocireg MCP Server

ทางการ

เซิร์ฟเวอร์ MCP ที่ใช้ SSE ซึ่งช่วยให้แอปพลิเคชันที่ขับเคลื่อนด้วย LLM สามารถโต้ตอบกับรีจิสทรี OCI ได้ โดยมีเครื่องมือสำหรับดึงข้อมูลเกี่ยวกับอิมเมจคอนเทนเนอร์ แสดงรายการแท็ก และอื่นๆ

เอกสาร

OCI Registry MCP Server

Trust Score เซิร์ฟเวอร์ 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 รีจิสทรีส่วนตัว (ตามลำดับความสำคัญ):

  1. HTTP Authorization Header (ความสำคัญสูงสุด): รวมโทเค็น bearer ใน ส่วนหัว Authorization ของคำขอ HTTP:

    • Authorization: Bearer <your-token>
    • วิธีนี้มีความสำคัญเหนือวิธีการรับรองความถูกต้องอื่นๆ ทั้งหมด
    • เมื่อมีอยู่ ตัวแปรสภาพแวดล้อมและ Docker config จะถูกละเว้น
  2. ตัวแปรสภาพแวดล้อม Bearer Token: ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้:

    • OCI_TOKEN: โทเค็น Bearer สำหรับการรับรองความถูกต้องของรีจิสทรี
  3. ชื่อผู้ใช้และรหัสผ่าน: ตั้งค่าตัวแปรสภาพแวดล้อมต่อไปนี้:

    • OCI_USERNAME: ชื่อผู้ใช้สำหรับการรับรองความถูกต้องของรีจิสทรี
    • OCI_PASSWORD: รหัสผ่านสำหรับการรับรองความถูกต้องของรีจิสทรี
  4. 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

การกำหนดค่าพอร์ต

เซิร์ฟเวอร์สามารถกำหนดค่าให้รับฟังบนพอร์ตเฉพาะได้โดยใช้:

  1. ตัวแปรสภาพแวดล้อม:

    • MCP_PORT: หมายเลขพอร์ตที่จะรับฟัง (ต้องอยู่ระหว่าง 0 ถึง 65535)
    • หากไม่ได้ตั้งค่าหรือไม่ถูกต้อง จะใช้ค่าเริ่มต้นเป็นพอร์ต 8080
  2. แฟล็กบรรทัดคำสั่ง:

    • -port: เขียนทับการตั้งค่าตัวแปรสภาพแวดล้อม (ต้องอยู่ระหว่าง 0 ถึง 65535)
    • หากระบุพอร์ตไม่ถูกต้อง จะใช้ค่าเริ่มต้นเป็นพอร์ต 8080
    • ตัวอย่าง: ./ocireg-mcp -port 9090

การทดสอบ

go test ./...

การตรวจสอบโค้ด

golangci-lint run

การมีส่วนร่วม

เรายินดีต้อนรับการมีส่วนร่วมในเซิร์ฟเวอร์ MCP นี้! หากคุณต้องการมีส่วนร่วม โปรด ตรวจสอบ คู่มือ CONTRIBUTING สำหรับรายละเอียดเกี่ยวกับวิธีการเริ่มต้น

หากคุณพบข้อบกพร่องหรือมีคำขอฟีเจอร์ โปรด เปิด issue ใน รีพอสิทอรี หรือเข้าร่วมกับเราในช่อง #mcp-servers บน เซิร์ฟเวอร์ Discord ชุมชน ของเรา

ใบอนุญาต

โปรเจกต์นี้ได้รับอนุญาตภายใต้ Apache v2 License - ดูไฟล์ LICENSE สำหรับ รายละเอียด