Khi các Tác nhân AI và trợ lý AI ngày càng trở thành trung tâm của các ứng dụng và trải nghiệm hiện đại, nhu cầu tích hợp liền mạch, an toàn với các công cụ và nguồn dữ liệu bên ngoài trở nên cấp thiết hơn bao giờ hết.
Model Context Protocol (MCP) đang nổi lên như một tiêu chuẩn mở then chốt hỗ trợ những tích hợp này — cho phép các mô hình AI tương tác với API, cơ sở dữ liệu và các dịch vụ khác theo cách nhất quán, có khả năng mở rộng.
Tìm hiểu về MCP
MCP sử dụng kiến trúc client-host-server dựa trên JSON-RPC 2.0 cho việc truyền tin nhắn. Giao tiếp giữa client và server diễn ra qua các lớp truyền tải được xác định trước, chủ yếu gồm:
- stdio: Chuẩn đầu vào/đầu ra, phù hợp cho giao tiếp hiệu quả khi client và server chạy trên cùng một máy.
- HTTP với Server-Sent Events (SSE): Sử dụng HTTP POST cho tin nhắn từ client đến server và SSE cho tin nhắn từ server đến client, cho phép giao tiếp qua mạng, bao gồm cả các server từ xa.
Tại sao MCP lại quan trọng?
Mặc dù các Mô hình ngôn ngữ lớn (LLMs) rất mạnh mẽ, nhưng khả năng ứng dụng của chúng thường bị giới hạn bởi việc không thể truy cập dữ liệu thời gian thực hoặc dữ liệu riêng. Trước đây, tích hợp nguồn dữ liệu hoặc công cụ mới đòi hỏi phải xây dựng trình kết nối tùy chỉnh và tiêu tốn nhiều công sức kỹ thuật. MCP giải quyết vấn đề này bằng cách cung cấp một giao thức thống nhất để kết nối các tác nhân với nguồn dữ liệu cục bộ và từ xa — hợp nhất và đơn giản hóa việc tích hợp.
Tận dụng Azure API Management cho MCP server từ xa
Azure API Management (APIM) là nền tảng được quản lý toàn diện để xuất bản, bảo mật và giám sát API. Bằng cách coi các điểm cuối (endpoint) của MCP server như các API backend khác, tổ chức có thể áp dụng các quy trình quản trị, bảo mật và vận hành quen thuộc. Khi MCP được áp dụng rộng rãi, nhu cầu quản lý chặt chẽ các dịch vụ backend này sẽ tăng lên. API Management đóng vai trò quan trọng trong việc:
- Áp dụng các biện pháp bảo mật để bảo vệ tài nguyên backend.
- Đảm bảo độ tin cậy.
- Theo dõi hiệu quả và khắc phục sự cố với việc truy vết các yêu cầu và luồng ngữ cảnh.
Trong bài viết này, tôi sẽ hướng dẫn bạn qua một ví dụ thực tế: triển khai MCP server phía sau Azure API Management, cấu hình quản lý thông tin xác thực, và kết nối với GitHub Copilot.
Ví dụ thực tế: Tự động hóa quy trình phân loại sự cố (Issue Triage)
Bạn có thể tham khảo phòng lab Model Context Protocol (MCP) tại AI-Gateway/labs/model-context-protocol.
Giờ chúng ta sẽ chuyển từ lý thuyết sang thực hành: xem cách MCP, Azure API Management (APIM) và GitHub Copilot có thể chuyển hóa quy trình kỹ thuật phổ biến. Hãy tưởng tượng bạn là một quản lý kỹ thuật muốn tối ưu hóa quy trình phân loại sự cố của đội nhóm — giảm bớt các bước thủ công và nâng cao hiệu suất.
Quy trình ví dụ:
- Kỹ sư ghi nhận lỗi hoặc yêu cầu tính năng dưới dạng GitHub Issues.
- Sau khi được rà soát thủ công, sẽ tạo một vé sự cố tương ứng trong ServiceNow.
Việc chuyển giao thủ công này rất tốn kém và dễ sai sót. Chúng ta sẽ tự động hóa quy trình này bằng cách kết nối GitHub và ServiceNow một cách an toàn, cho phép tác nhân AI (GitHub Copilot trong VS Code) thực hiện các tác vụ phân loại thay bạn.
Một thách thức lớn ở đây là quản lý an toàn quyền truy cập được ủy quyền tới các API backend như GitHub và ServiceNow từ MCP Server. Credential Manager của Azure API Management giải quyết điều này bằng cách tập trung lưu trữ thông tin xác thực an toàn và hỗ trợ tạo kết nối an toàn đến các API backend của bên thứ ba.
Xây dựng và triển khai MCP Server
Chúng ta sẽ xây dựng hai MCP server:
-
GitHub Issues MCP Server
- Công cụ hỗ trợ: xác thực GitHub (authorize_github), lấy thông tin người dùng (get_user), liệt kê các issue của repository (list_issues).
-
ServiceNow Incidents MCP Server
- Công cụ hỗ trợ: xác thực ServiceNow (authorize_servicenow), liệt kê sự cố (list_incidents), tạo sự cố mới (create_incident).
- Công cụ hỗ trợ: xác thực ServiceNow (authorize_servicenow), liệt kê sự cố (list_incidents), tạo sự cố mới (create_incident).
Cả hai MCP server được xây dựng bằng Azure Container Apps và được bảo vệ bởi Azure API Management. Credential Manager trong APIM tập trung lưu trữ thông tin xác thực và tạo kết nối an toàn tới các API backend.
Bạn có thể sử dụng API Management Subscriptions để tạo các subscription key, cấp quyền truy cập client tới các API này.
Ngoài ra, để tăng cường bảo mật cho các endpoint /sse
và /messages
, ta áp dụng chính sách validate-jwt nhằm đảm bảo chỉ những client trình bày JWT hợp lệ mới được phép truy cập (tham khảo: AI-Gateway/labs/model-context-protocol/src/github/apim-api/auth-client-policy.xml
).
Sau khi đăng ký ứng dụng OAuth trên GitHub và ServiceNow, chúng ta cập nhật Credential Manager của APIM với Client ID và Client Secret tương ứng. Điều này cho phép APIM thực hiện các luồng OAuth thay cho người dùng, đồng thời lưu trữ và quản lý token cho các cuộc gọi backend tới GitHub và ServiceNow.
Kết nối Máy chủ MCP của bạn trong VS Code
Với các máy chủ MCP được triển khai và bảo mật đằng sau Azure API Management, bước tiếp theo là kết nối chúng với quy trình phát triển của bạn. Visual Studio Code hiện hỗ trợ MCP , cho phép chế độ tác nhân của GitHub Copilot kết nối với bất kỳ máy chủ nào tương thích với MCP và mở rộng khả năng của nó.
Mở Command Pallette và nhập MCP: Add Server ...
Chọn loại máy chủ là HTTP (HTTP hoặc Sự kiện do máy chủ gửi)
Dán vào URL máy chủ
Cung cấp ID máy chủ
Quá trình này sẽ tự động cập nhật settings.json của bạn bằng cấu hình máy chủ MCP.
Sau khi thêm, GitHub Copilot có thể kết nối với máy chủ MCP của bạn và truy cập các công cụ đã xác định, cho phép các quy trình làm việc của agentic như phân loại vấn đề và tự động hóa. Bạn có thể lặp lại các bước này để thêm ServiceNow MCP Server.
Tìm hiểu về Xác thực và Ủy quyền với Credential Manager
Khi người dùng khởi tạo quy trình xác thực (ví dụ: thông qua công cụ authorize_github), GitHub Copilot sẽ kích hoạt máy chủ MCP để tạo yêu cầu xác thực và URL đăng nhập duy nhất. Người dùng được chuyển hướng đến trang đồng ý, tại đó ứng dụng OAuth đã đăng ký của họ yêu cầu cấp quyền truy cập vào tài khoản GitHub của họ. Azure API Management hoạt động như một trung gian an toàn, quản lý luồng OAuth và lưu trữ mã thông báo.
Luồng của authorize_github
:
Khởi tạo kết nối:
- GitHub Copilot Agent mở kết nối SSE tới API Management thông qua MCP Client (VS Code).
Khám phá công cụ:
- APIM chuyển tiếp yêu cầu đến GitHub MCP Server, server phản hồi với danh sách các công cụ khả dụng.
Yêu cầu xác thực:
- Copilot chọn công cụ authorize_github, MCP server tạo authorization_id cho phiên chat.
Yêu cầu sự đồng ý người dùng:
- Nếu lần đầu đăng nhập, APIM yêu cầu Login URL từ MCP server và gửi cho client để người dùng đăng nhập GitHub.
Trao đổi token và lưu trữ:
- MCP Client gửi mã ủy quyền đến APIM, APIM đổi mã lấy access/refresh token từ GitHub và lưu trữ an toàn.
Xác nhận:
- APIM xác nhận đăng nhập thành công với MCP Client. Người dùng có thể thực hiện hành động xác thực như truy cập repo riêng tư.
Gọi công cụ với API quản lý bởi API Management
Ví dụ dùng công cụ list_issues:
- MCP Client yêu cầu danh sách issues từ MCP Server.
- MCP Server thêm authorization_id vào header và chuyển tiếp tới APIM.
- Danh sách issues được trả về cho tác nhân Copilot.
Bạn cũng có thể thêm ServiceNow MCP Server theo cách tương tự. Khi cả hai server được kết nối, Copilot Agent có thể lấy issue từ repo GitHub riêng tư và tạo sự cố mới trên ServiceNow, tự động hóa hoàn toàn quy trình phân loại issue.
Bạn có thể định nghĩa thêm các công cụ như suggest_assignee
, assign_engineer
, update_incident_status
, notify_engineer
, request_feedback
... để xây dựng quy trình kỹ thuật tự động khép kín từ lúc tạo issue đến khi giải quyết và nhận phản hồi.
Tổng kết
Azure API Management (APIM) là công cụ thiết yếu cho các doanh nghiệp muốn tích hợp mô hình AI với các công cụ bên ngoài qua Model Context Protocol (MCP).
Trong bài viết này, chúng tôi đã trình bày cách Credential Manager trong APIM hỗ trợ tạo kết nối an toàn với backend API, cách tích hợp MCP server vào VS Code và tận dụng APIM để quản lý luồng OAuth và lưu trữ token.
Cách tiếp cận này không chỉ đơn giản hóa quy trình làm việc như phân loại issue, tạo sự cố mà còn đảm bảo tiêu chuẩn bảo mật và quản trị doanh nghiệp cho tất cả API.
Hy vọng bài viết này hữu ích đối với các bạn!