เปลี่ยน REST API เป็นเครื่องมือ MCP ด้วย Google Cloud API Gateway

· By: TanasakP

24 ก.ย. 2026

ความสามารถส่วนใหญ่ขององค์กรในปัจจุบันถูกเก็บไว้ในรูปแบบ REST API ซึ่ง AI agents มักเข้าถึงไม่ได้โดยตรง การจะทำให้ agent เรียกใช้งานได้ ทีมพัฒนามักต้องตั้งค่าและดูแล MCP server แยกต่างหาก ซึ่งส่งผลให้ต้องทำระบบ routing, authentication และ quota logic ซ้ำซ้อนกับที่ API Gateway จัดการอยู่แล้ว ในขณะที่โปรโตคอล Model Context Protocol (MCP) ได้กลายเป็นมาตรฐานหลักที่เฟรมเวิร์กอย่าง Agent Development Kit (ADK) และ Gemini Enterprise ให้การรองรับแบบ native

Google Cloud API Gateway เข้ามาปิดช่องว่างนี้ในรูปแบบ Public Preview โดย API Gateway สามารถทำหน้าที่เป็น remote MCP server ได้เพียงแค่ใส่คำอธิบายประกอบ (annotate) ลงใน OpenAPI spec ที่มีอยู่แล้ว เมื่อทำการ deploy REST operations เดิมของคุณจะพร้อมใช้งานในฐานะเครื่องมือ MCP สำหรับ agent ทันที โดยไม่ต้องเสียเวลาสร้างหรือดูแลรักษาเซิร์ฟเวอร์แยกต่างหาก

API Gateway ถือเป็นตัวเลือกน้ำหนักเบาในกลุ่มผลิตภัณฑ์ของ Google Cloud หากคุณมีบริการบน Cloud Run และต้องการให้ API ปลอดภัยพร้อมเปิดให้ agent เข้าถึงได้ในไม่กี่นาที นี่คือทางลัดที่รวดเร็วที่สุด แต่สำหรับแพลตฟอร์มระดับองค์กรที่ต้องการการจัดการ lifecycle และนโยบาย traffic ขั้นสูง ควรเลือกใช้ Apigee ส่วนการควบคุมการเรียกออกภายนอกให้ใช้ Agent Gateway และใช้ Model routing เพื่อสร้าง endpoint เดียวที่เสถียรสำหรับการเรียก LLM ขาออก

กระบวนการทำงานของ API Gateway คือการรับคำขอ MCP JSON-RPC มาตรฐานบน endpoint เดียว และแปลง (transcodes) แต่ละ tools/call ให้เป็นคำขอ REST โดยใช้นโยบาย (policies) เดิมที่มีอยู่และแปลคำตอบกลับไป เนื่องจากคำขอที่ถูกแปลงไม่ต่างจากการเรียก REST ปกติ การตรวจสอบสิทธิ์ด้วย JWT หรือ API-key รวมถึงโควตาและการบันทึก log จะยังคงทำงานได้เหมือนเดิม ทำให้ traffic ทั้งสองรูปแบบใช้เส้นทางและโควตาจากแหล่งเดียวกัน

1. ใส่คำอธิบายประกอบใน OpenAPI spec ของคุณ MCP รองรับ OpenAPI 3.0.x หรือ 3.1.x เท่านั้น หากคุณยังใช้เวอร์ชัน 2.0 ให้ทำการย้ายข้อมูลก่อน โดยเปิดใช้งานที่ระดับเอกสารด้วย x-google-api-management.mcp และปรับแต่งแต่ละ operation ด้วย x-google-mcp-tool ซึ่งทุก operation ที่เปิดใช้งานต้องมีข้อมูล backend และคำอธิบายที่ชัดเจน

openapi: 3.0.4
info:
  title: Order Service
  version: 1.0.0
x-google-api-management:
  mcp: true # expose this spec's operations as MCP tools
backends:
  orders-backend:
    address: https://orders-a1b2c3-uc.a.run.app
paths:
  /orders/{orderId}:
    get:
      operationId: getOrderStatus
      description: Returns the current status, carrier, and ETA for an order.
      x-google-backend: orders-backend
      x-google-mcp-tool:
        name: get_order_status
        description: "Look up the delivery status and ETA of a customer order.
          Use this when the user asks where an order is or when it will arrive."
        parameters:
          - name: orderId
            in: path
            required: true
            schema:
              type: string

คำอธิบายของเครื่องมือ (tool description) คือสัญญาณหลักที่ LLM ใช้ตัดสินใจเลือกใช้งาน ดังนั้นควรระบุให้ชัดเจนว่า ควรใช้เมื่อใดและทำไม ไม่ใช่เพียงแค่บอกว่ามันคืนค่าอะไรกลับมา

2. Deploy gateway ทำการ Deploy การตั้งค่า API ตามปกติ โดย API Gateway จะสร้างการกำหนดค่าที่รองรับ MCP และเริ่มให้บริการบนเส้นทาง /mcp โดยอัตโนมัติโดยไม่ต้องจัดเตรียมโครงสร้างพื้นฐานเพิ่มเติม

3. กำหนดสิทธิ์การเข้าถึง โดยค่าเริ่มต้น tools/list จะไม่มีการตรวจสอบสิทธิ์เพื่อให้สะดวกต่อการพัฒนา แต่สำหรับการใช้งานจริงควรระบุให้ใช้ JWT เพื่อความปลอดภัย (API keys ไม่สามารถใช้กับ method นี้ได้):

x-google-api-management:
  mcp:
    tools-list:
      security:
        orderServiceJwt: [] # the object form also enables MCP globally

สำหรับ tools/call ระบบจะบังคับใช้นโยบายการตรวจสอบสิทธิ์ตามที่ REST operation ต้นทางกำหนดไว้เสมอ ไม่ว่าคุณจะตั้งค่าในขั้นตอนการค้นหาเครื่องมือไว้อย่างไรก็ตาม

4. เชื่อมต่อกับ agent ชี้ MCP client ไปที่ endpoint /mcp ของ gateway โดยใช้ ADK พร้อมระบุชุดเครื่องมือและข้อมูลประจำตัวที่จำเป็น ดังตัวอย่างด้านล่าง:

from google.adk.agents import Agent
from google.adk.tools.mcp_tool import McpToolset, StreamableHTTPConnectionParams
order_tools = McpToolset(
    connection_params=StreamableHTTPConnectionParams(
        url="https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/mcp",
        headers={"x-api-key": API_KEY},
    )
)
agent = Agent(
    model="gemini-2.5-flash",
    name="order_support_agent",
    instruction="Help the user check on their orders.",
    tools=[order_tools],
)

Gateway จะทำหน้าที่จับคู่ arguments ของเครื่องมือกลับไปยัง REST path, query, body และ headers ให้อัตโนมัติ หากต้องการตรวจสอบการรับส่งข้อมูล สามารถใช้คำสั่ง curl ดังนี้:

curl -X POST "https://my-gateway-a12bcd345e67f89g0h.uc.gateway.dev/mcp" \
  -H "content-type: application/json" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -H "x-api-key: $API_KEY" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"get_order_status","arguments":{"orderId":"A-1042"}}}'
{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text",
  "text":"{\"orderId\":\"A-1042\",\"status\":\"IN_TRANSIT\",\"eta\":\"2026-09-24\"}"}],
  "isError":false}}

นอกจากนี้คุณยังสามารถเชื่อมต่อ gateway เข้ากับ API hub เพื่อเผยแพร่ MCP server ไปยัง Agent Registry ได้โดยอัตโนมัติ ช่วยให้นักพัฒนาค้นหาเครื่องมือได้ง่ายขึ้น โดยที่ยังใช้การตั้งค่าเดิมทั้งหมดในการดูแลรักษา

ปัจจุบันฟีเจอร์นี้รองรับ backend แบบ REST และ OpenAPI 3.x ในช่วง Public Preview ส่วนความสามารถอื่นๆ เช่น MCP resources, prompts และการตรวจสอบ payload ด้วย Model Armor อยู่ในแผนพัฒนาต่อไป สำหรับข้อจำกัดเบื้องต้น ได้แก่ ไม่รองรับ operation ที่คืนค่า body ว่างเปล่า (เช่น HTTP 204), จำกัดเครื่องมือสูงสุด 1,000 รายการต่อหนึ่ง gateway และไม่สามารถเปิดใช้งาน MCP ร่วมกับ model routing ใน config เดียวกันได้

ผู้ที่สนใจสามารถศึกษาขอบเขตการทำงานและเริ่มใช้งานได้ทันทีที่ เอกสารประกอบ Google Cloud

Source: Google Developers Blog
ดูแลงานแปลและเรียบเรียงโดย TanasakP
เปลี่ยน REST API เป็นเครื่องมือ MCP ด้วย Google Cloud API Gateway

ความคิดเห็น (0)

เข้าสู่ระบบเพื่อร่วมแสดงความเห็น

สมัครสมาชิก

มาเป็นคนแรกที่แสดงความเห็นกันเลยโบร