0
0
Lập trình
Admin Team
Admin Teamtechmely

🧩 Tiêu thụ Endpoint MCP từ Azure Logic Apps với Vòng Lặp Agent

Đăng vào 3 tuần trước

• 5 phút đọc

🧩 Tiêu thụ Endpoint MCP từ Azure Logic Apps với Vòng Lặp Agent

Bạn muốn Logic App của mình có thể tư duy, chọn công cụ MCP phù hợp, xây dựng payload JSON-RPC và gọi máy chủ MCP — tất cả trong một lần chạy?

Bài viết này sẽ hướng dẫn bạn cách thiết lập phiên làm việc, khám phá công cụ từ máy chủ MCP, và để Logic Apps “Agent” lặp lại cho đến khi nhiệm vụ hoàn thành.

Chúng ta sẽ sử dụng một ví dụ đơn giản: bạn gửi một biểu thức toán học qua Logic App; Agent sẽ khám phá các công cụ MCP có sẵn, chọn công cụ phù hợp, tạo tools/call, gọi máy chủ MCP của bạn, và trả về kết quả cuối cùng.


⚡ Những gì bạn sẽ xây dựng

Luồng (tổng quan):

  1. Kích hoạt: Yêu cầu HTTP với chuỗi MathEquation.
  2. Thiết lập phiên làm việc: Gọi initialize trên điểm cuối máy chủ MCP → lưu Mcp-Session-Id.
    • 2.1 URL Máy chủ MCP: https://<your-mcp-server-url>/api/mcp (Máy chủ MCPArithmetic, xác thực được đặt là ẩn danh)
  3. Khám phá công cụ: Gọi tools/list → lưu danh mục công cụ có sẵn.
  4. Vòng lặp Agent: Logic Apps Agent chọn công cụ phù hợp và gọi nó thông qua một công cụ tùy chỉnh InvokeMCPTools (hành động HTTP bên trong).
  5. Trả về: Kết quả cuối cùng (dưới dạng văn bản thuần hoặc JSON) trở lại cho người gọi.

🔗 Thiết lập Phiên làm việc (initialize)

Lần gọi HTTP đầu tiên là đến điểm cuối MCP với phương thức initialize:

Copy
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {
    "protocolVersion": "2025-03-26",
    "capabilities": {
      "roots": {
        "listChanged": true
      }
    },
    "clientInfo": {
      "name": "LogicApps",
      "version": "1.0.0"
    }
  }
}

Máy chủ MCP sẽ phản hồi với các tiêu đề chứa một id phiên:

Copy
Mcp-Session-Id: <guid>

📝 Lưu ý: Lưu Mcp-Session-Id này vào một biến Logic Apps (mcpSessionId).
Bạn phải bao gồm nó trong tất cả các yêu cầu MCP tiếp theo.


🔍 Khám Phá Công Cụ với tools/list

Khi một phiên làm việc được thiết lập, bước tiếp theo là khám phá các công cụ MCP có sẵn.

Điều này được thực hiện bằng cách gọi tới điểm cuối MCP với phương thức tools/list.

Yêu cầu

Copy
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/list",
  "params": {}
}

Bao gồm tiêu đề phiên:

Copy
Mcp-Session-Id: @{variables('mcpSessionId')}

Phản hồi

Máy chủ MCP sẽ trả về một danh mục các công cụ có sẵn:

Copy
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "tools": [
      {
        "name": "wf_arithmetic_add",
        "description": "Cộng hai số",
        "parameters": {
          "number1": "integer",
          "number2": "integer"
        }
      },
      {
        "name": "wf_arithmetic_subtract",
        "description": "Trừ hai số",
        "parameters": {
          "number1": "integer",
          "number2": "integer"
        }
      }
    ]
  }
}

Trong Logic Apps, lưu JSON này vào một biến (mcpTools).
Agent sẽ sử dụng danh mục này để biết công cụ nào cần gọi.


🔍 Khám Phá Máy Chủ MCP (Hình ảnh)

Dưới đây là các hành động trong trình thiết kế:

Khởi tạo (phiên), Lấy Công Cụ (tools/list) và thiết lập biến.

🤖 Vòng Lặp Agent, Gọi Công Cụ & Tham Số Agent

Phần này sẽ chỉ cho bạn cách hành động Agent lập kế hoạch, thiết lập Tham số Agent, và gọi máy chủ MCP của bạn thông qua một công cụ tùy chỉnh (InvokeMCPTools).


1) Vòng Lặp Agent — Tổng quan

  • Agent nhận:
    • Đầu vào từ người dùng (ví dụ, @{triggerBody()?['MathEquation']})
    • Danh mục công cụ đã khám phá (@{variables('mcpTools')})
  • Nó chọn công cụ đúng từ danh mục, chuẩn bị payload JSON-RPC tools/call, và gọi công cụ thông qua InvokeMCPTools.
  • Agent chỉ trả về kết quả cuối cùng của công cụ (dưới dạng văn bản thuần hoặc JSON), giữ bí mật lý luận bên trong.

Nhắc nhở hệ thống: hướng dẫn Agent sử dụng InvokeMCPTools, chọn công cụ đúng, xây dựng một payload hợp lệ, và trả về chỉ kết quả cuối cùng.


2) Bọc Công Cụ: InvokeMCPTools

Agent cần một công cụ bọc mà biết cách thực hiện một HTTP POST đến điểm cuối MCP.
Bên trong Logic Apps, công cụ bọc này trông như sau:

Copy
{
  "jsonrpc": "2.0",
  "id": "@{guid()}",
  "method": "tools/call",
  "params": {
    "name": "@{agentParameters('mcpToolName')}",
    "arguments": "@outputs('ArgumentJson')"
  }
}

3) 🛠️ Gọi Công Cụ với Tham số Agent

Khi Agent gọi InvokeMCPTools, nó phải cung cấp hai tham số.

Tham số Loại Mục đích Ví dụ
mcpToolName string Định danh chính xác của công cụ MCP "wf_arithmetic_add"
mcpToolPayload string Chuỗi JSON của các tham số công cụ "{\"number1\":25,\"number2\":10}"

Luồng bên trong Logic Apps

  1. Agent thiết lập tham số

    • mcpToolName = "wf_arithmetic_add"
    • mcpToolPayload = "{\"number1\":25,\"number2\":10}"
  2. Compose (ArgumentJson)

    • Logic Apps chạy:
    Copy
     @json(agentParameters('mcpToolPayload'))
  • Chuyển đổi chuỗi thành một đối tượng JSON:

    Copy
     { "number1": 25, "number2": 10 }
  1. InvokeMCPTool (hành động HTTP)

    • Gửi payload cuối cùng tools/call đến máy chủ MCP.

Tiêu đề

  • Mcp-Session-Id → từ bước initialize (biến mcpSessionId)
  • Content-Type: application/json
  • Accept: application/json, text/event-stream

Nội dung

Copy
{
  "jsonrpc": "2.0",
  "id": "@{guid()}",
  "method": "tools/call",
  "params": {
    "name": "@{agentParameters('mcpToolName')}",
    "arguments": "@outputs('ArgumentJson')"
  }
}

📸 Gọi Công Cụ trong Trình Thiết Kế

Dưới đây là cách nó trông như thế nào trong trình thiết kế Logic Apps:


🧪 Kiểm Tra Luồng Từ Đầu Đến Cuối

Khi đã triển khai, bạn có thể kiểm tra Logic App bằng cách gửi một body JSON với một phương trình toán học.

Ví dụ Yêu cầu

Copy
POST https://<your-logicapp-endpoint>/triggers/RcvReq/invoke
Content-Type: application/json

{
  "MathEquation": "10 + 50 * 25"
}

Dưới đây là phiên chạy trong Postman cho thấy yêu cầu và phản hồi thành công:


✅ Tóm tắt

Bằng cách kết hợp khởi tạo phiên làm việc, khám phá công cụ, và một Vòng lặp Agent cho việc gọi công cụ, Logic Apps có thể hợp nhất các máy chủ MCP một cách liền mạch.

  • initialize → bắt đầu một phiên và lưu Mcp-Session-Id
  • tools/list → lấy danh mục các công cụ có sẵn
  • Agent → chọn công cụ và chuẩn bị tham số (mcpToolName, mcpToolPayload)
  • tools/call → máy chủ MCP thực thi công cụ và trả về đầu ra

Với mẫu này, Logic App của bạn có thể tư duy, lập kế hoạch qua các công cụ, và chỉ trả về kết quả cuối cùng cho người gọi.

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào