AutoGen kết nối MCP: McpWorkbench, công cụ chỉ đọc và proxy
AutoGen kết nối MCP là cách cho agent của framework AutoGen dùng công cụ từ một server Model Context Protocol, ví dụ công cụ lấy nội dung trang web qua proxy. Trước khi viết mã, cần biết một sự thật quan trọng: AutoGen đã chuyển sang trạng thái lưu trữ. ProxyVN kiểm trạng thái dự án, chạy autogen-ext 0.7.5 với server MCP chỉ đọc và ghi lại từng lời gọi công cụ.
AutoGen kết nối MCP trong bối cảnh dự án đã lưu trữ
AutoGen không còn được bảo trì

Dự án đã lưu trữ
README của kho microsoft/autogen trên GitHub ngày 27/10/2026 ghi AutoGen đang chuyển sang lưu trữ và không còn được Microsoft bảo trì. README cảnh báo dùng kho đã lưu trữ cần thận trọng, vì không còn bảo trì hay vá bảo mật, lỗ hổng trong dự án và phụ thuộc có thể không được sửa. README khuyên không dùng cho môi trường thật.
Người dùng mới được khuyên bắt đầu với Microsoft Agent Framework, người dùng cũ được khuyên chuyển đổi theo hướng dẫn chuyển từ AutoGen sang Microsoft Agent Framework. README mô tả Agent Framework là bản kế nhiệm có hỗ trợ dài hạn, có MCP.
Với dự án mới, đừng chọn AutoGen chỉ để có MCP. Bài này dành cho hệ thống đang chạy AutoGen cần thêm hoặc sửa công cụ MCP trong khi chuẩn bị chuyển đổi.
Hai thế hệ API
AutoGen có hai thế hệ. Bản 0.2 dùng các lớp như AssistantAgent và UserProxyAgent trong gói pyautogen. Bản 0.4 trở đi tách thành autogen-core, autogen-agentchat và autogen-ext, API khác hẳn. MCP chỉ có ở thế hệ mới, trong gói autogen-ext với module autogen_ext.tools.mcp.
Trang hướng dẫn agent của AutoGen thuộc thế hệ mới. Mã ví dụ trên mạng dùng pyautogen hay UserProxyAgent là thế hệ cũ, không dùng được với McpWorkbench. Kiểm tên gói trong tệp phụ thuộc trước khi chép mã.
Ranh giới với bài CrewAI
Bài CrewAI web scraping nói về framework agent khác. Bài proxy cho AI agent tự động nói ở mức chung. Bài này chỉ đi vào AutoGen thế hệ mới với McpWorkbench, một công cụ fetch có giới hạn URL, log lời gọi công cụ, tiêu chí dừng và chỗ đặt proxy.
Cài đặt cho AutoGen kết nối MCP
Bản cài trong lab
Lab dùng môi trường ảo Python 3.12 trên Windows 10. Cài autogen-agentchat và autogen-ext kèm tùy chọn mcp, pip chọn bản 0.7.5 cho cả hai, kéo theo mcp bản 2.3.0 là bản mới nhất.
python -m venv venv
venv\Scripts\python -m pip install "autogen-ext[mcp]" autogen-agentchat
Lỗi nhập với mcp 2.x
Ngay khi nhập autogen_ext.tools.mcp, Python báo ImportError: cannot import name 'RequestContext' from 'mcp.shared.context'. Lý do là SDK mcp bản 2 đã đổi cấu trúc module, còn autogen-ext 0.7.5 viết cho bản 1. Dự án đã lưu trữ nên không có bản vá theo kịp.
Cách sửa là ghim mcp dưới bản 2. Sau khi cài mcp<2, pip chọn bản 1.30.0, nhập module thành công và McpWorkbench chạy được.
venv\Scripts\python -m pip install "mcp<2"
Đây là ví dụ cụ thể về rủi ro của dự án đã lưu trữ: phụ thuộc đi tiếp, dự án đứng yên. Ghim cả autogen-ext lẫn mcp trong tệp phụ thuộc, và ghi lý do bên cạnh để người sau không nâng mcp mà không biết.
Server MCP phải hợp với SDK bản 1
Server lab trong các bài trước viết bằng lớp MCPServer của SDK bản 2. Với môi trường mcp 1.30.0, lớp tương ứng là FastMCP trong mcp.server.fastmcp. Mình đổi đúng một dòng nhập để server chạy được trong cùng môi trường ảo.
Nếu server chạy trong môi trường riêng, nó có thể dùng SDK bản 2, vì giao thức MCP qua stdio không phụ thuộc bản SDK hai bên. Chỉ khi server và client dùng chung môi trường Python, xung đột phiên bản mới xảy ra.
Công cụ fetch chỉ đọc cho AutoGen kết nối MCP
Server với giới hạn URL
Brief yêu cầu một workflow có một công cụ fetch giới hạn URL. Server lab có công cụ fetch_url: chỉ GET, chỉ tới host nằm trong biến ALLOWED_HOSTS, chỉ trả 2000 ký tự đầu. Công cụ thứ hai proxy_seen cho biết server nhận biến proxy nào, đã che mật khẩu.
from mcp.server.fastmcp import FastMCP
import httpx, os
from urllib.parse import urlsplit
ALLOWED = {h.strip() for h in os.environ.get("ALLOWED_HOSTS", "").split(",") if h.strip()}
mcp = FastMCP("lab-web-readonly")
@mcp.tool()
def fetch_url(url: str) -> str:
"""Lay toi da 2000 ky tu cua mot URL thuoc danh sach host duoc phep, chi GET."""
host = urlsplit(url).hostname or ""
if host not in ALLOWED:
return f"TU CHOI: host {host} khong nam trong danh sach cho phep"
try:
r = httpx.get(url, timeout=5, follow_redirects=True)
return f"HTTP {r.status_code}\n{r.text[:2000]}"
except httpx.HTTPError as e:
return f"LOI MANG: {type(e).__name__}: {e}"
if __name__ == "__main__":
mcp.run()
httpx bên trong đọc HTTP_PROXY, HTTPS_PROXY và NO_PROXY từ môi trường. Proxy vì vậy được truyền qua môi trường của tiến trình server, không qua AutoGen.
McpWorkbench và StdioServerParams
Tài liệu module MCP của autogen-ext mô tả McpWorkbench là workbench bọc một server MCP, cung cấp list_tools và call_tool, nên dùng như context manager để mở và đóng phiên. Tài liệu cảnh báo chỉ kết nối server tin cậy, nhất là với StdioServerParams vì nó chạy lệnh trên máy.
StdioServerParams trong bản 0.7.5 nhận command, args, env, cwd và read_timeout_seconds mặc định 5 giây. Biến env là chỗ đặt proxy cho server.
from autogen_ext.tools.mcp import McpWorkbench, StdioServerParams
proxy = "http://user1:p%40ss%232026@127.0.0.1:8942"
params = StdioServerParams(
command=sys.executable,
args=["mcp_server_v1.py"],
env={"SYSTEMROOT": "C:\\Windows", "ALLOWED_HOSTS": "shop.test",
"HTTP_PROXY": proxy, "HTTPS_PROXY": proxy, "NO_PROXY": "127.0.0.1,localhost"},
read_timeout_seconds=10,
)
Trên Windows, mình phải đưa SYSTEMROOT vào env vì env thay toàn bộ môi trường của tiến trình con, thiếu biến này một số thư viện mạng của Python không khởi tạo được. Mật khẩu trong URL proxy phải mã hóa phần trăm, bài định dạng proxy có bảng mã hóa.
Khả năng MCP của McpWorkbench
Tài liệu liệt kê McpWorkbench hỗ trợ công cụ với list_tools, call_tool, tài nguyên với list_resources, read_resource, mẫu tài nguyên, prompt với list_prompts, get_prompt. Sampling được hỗ trợ tùy chọn qua model_client. Roots và elicitation chưa được hỗ trợ.
McpWorkbench còn có tool_overrides để đổi tên hoặc mô tả công cụ như agent thấy, mà không đổi server. Tùy chọn này hữu ích khi mô tả gốc của server quá chung, làm agent gọi sai.
Workflow có log và tiêu chí dừng khi AutoGen kết nối MCP
Gọi công cụ không qua mô hình
Để kiểm phần MCP và proxy độc lập với mô hình, mình viết workflow gọi thẳng McpWorkbench. Đây đúng là những gì agent sẽ làm khi mô hình quyết định gọi công cụ, chỉ thay quyết định của mô hình bằng danh sách URL cố định. Mỗi lời gọi được ghi một dòng log JSON gồm số thứ tự, tên công cụ, URL, cờ lỗi, thời gian và đoạn đầu kết quả.
MAX_CALLS = 3
async with McpWorkbench(server_params=params) as wb:
tools = await wb.list_tools()
print("tools:", [t["name"] for t in tools])
calls = 0
for url in urls:
if calls >= MAX_CALLS:
print(json.dumps({"stop": "MAX_CALLS", "calls": calls}))
break
t0 = time.time()
res = await wb.call_tool("fetch_url", {"url": url})
calls += 1
text = res.result[0].content if res.result else ""
print(json.dumps({"call": calls, "url": url, "is_error": res.is_error,
"ms": round((time.time() - t0) * 1000), "result": text[:70]}))
MAX_CALLS là tiêu chí dừng brief yêu cầu: không quá ba lời gọi công cụ cho một nhiệm vụ. Với agent thật, cùng tiêu chí đặt ở tầng điều phối, ví dụ giới hạn số lượt hoặc điều kiện kết thúc của nhóm agent.
Kết quả lab
list_tools trả fetch_url và proxy_seen. Bảng dưới là các dòng log của bốn URL dự kiến.
Lời gọi |
URL |
is_error |
Thời gian |
Kết quả |
|---|---|---|---|---|
1 |
http://shop.test:8941/autogen-1 |
false |
khoảng 700 ms |
HTTP 200 với JSON của trang |
2 |
https://evil.example.net/ |
false |
3 ms |
TU CHOI: host không nằm trong danh sách |
3 |
http://shop.test:8941/status/503 |
false |
khoảng 670 ms |
HTTP 503 |
Dừng |
URL thứ tư |
không gọi |
không có |
stop MAX_CALLS sau 3 lời gọi |
Nhật ký proxy ghi GET http://shop.test:8941/autogen-1 với tài khoản user1, xác thực đạt. Tên shop.test chỉ phân giải được bên trong proxy, nên kết quả 200 chứng minh server đã đi qua proxy. Lời gọi thứ hai không tạo request nào ra mạng.
is_error luôn false
Ở cả ba lời gọi, is_error đều false, kể cả khi trang trả 503 hay host bị từ chối. Với McpWorkbench, is_error chỉ phản ánh lỗi ở tầng công cụ MCP, còn nội dung lỗi do server tự trả dưới dạng văn bản. Agent và mã điều phối phải đọc nội dung kết quả, không chỉ đọc cờ.
Một cách cải thiện là cho server trả lỗi đúng chuẩn MCP khi có lỗi mạng hay mã HTTP xấu, để is_error bằng true. Cách khác là giữ văn bản nhưng có tiền tố cố định như TU CHOI hay LOI MANG để mã điều phối nhận ra.
Với AutoGen kết nối MCP, is_error false không có nghĩa request web thành công. Đọc nội dung kết quả công cụ trước khi cho agent dùng tiếp.
Đặt proxy đúng chỗ khi AutoGen kết nối MCP

Proxy trong môi trường của server
Ba tiến trình, ba môi trường
Một hệ thống AutoGen với MCP stdio có ba nơi gửi request mạng. Tiến trình AutoGen gọi nhà cung cấp mô hình qua model client. Tiến trình server MCP gọi website qua công cụ fetch. Nếu dùng server MCP qua HTTP, tiến trình AutoGen còn gọi tới server đó. Mỗi nơi nhận proxy theo cách riêng.
Trong lab, proxy chỉ được đặt trong env của StdioServerParams, nên chỉ request web của server đi proxy. Model client của AutoGen đi theo môi trường của tiến trình AutoGen, không bị ảnh hưởng. Tách như vậy giúp proxy chỉ dùng cho việc cần IP khác, không làm chậm request tới mô hình.
env thay toàn bộ môi trường
Khi truyền env cho StdioServerParams, tiến trình con chỉ thấy các biến trong env, không thừa hưởng môi trường của tiến trình cha theo cách mặc định của SDK. Đó là lý do phải tự thêm SYSTEMROOT trên Windows. Trên Linux, có thể cần thêm PATH hoặc HOME tùy server.
Hành vi này có lợi về bảo mật: server không thấy khóa API của mô hình hay bí mật khác của tiến trình AutoGen. Chỉ truyền đúng biến server cần. Bài no_proxy là gì giải thích cách viết NO_PROXY cho các địa chỉ server cần đi thẳng.
Server MCP qua HTTP
Với StreamableHttpServerParams, server chạy ở nơi khác, AutoGen kết nối tới URL của server. Proxy cho request web nằm ở môi trường của máy chạy server, không ở AutoGen. Kết nối từ AutoGen tới server dùng thư viện HTTP của SDK mcp, đi theo biến proxy của tiến trình AutoGen nếu thư viện đọc biến đó.
Nếu server nằm trong mạng nội bộ còn tiến trình AutoGen có HTTPS_PROXY ra ngoài, thêm địa chỉ server vào NO_PROXY của tiến trình AutoGen. Không có, kết nối tới server nội bộ bị đẩy ra proxy và lỗi.
Bảo mật khi AutoGen kết nối MCP
Chỉ server tin cậy
Cảnh báo của tài liệu McpWorkbench cần được nhắc lại: StdioServerParams chạy một lệnh trên máy với quyền của tiến trình. Server lấy từ kho gói công khai chạy bằng npx hay uvx có thể làm bất cứ việc gì người dùng làm được. Đọc mã server, ghim phiên bản và chỉ truyền biến cần thiết.
Giới hạn trong server, không chỉ trong prompt
Agent quyết định gọi công cụ dựa trên nội dung hội thoại, kể cả nội dung trang vừa tải. Trang có thể chứa chỉ dẫn khiến agent gọi fetch_url với URL lạ. Lời gọi thứ hai trong lab cho thấy giới hạn host ngay trong server chặn được việc này, bất kể agent nghĩ gì.
Đặt giới hạn trong prompt hệ thống của agent là chưa đủ. Mô hình có thể bị dẫn dắt. Giới hạn trong mã server là lớp phòng vệ cố định.
Tài khoản proxy không vào ngữ cảnh
Công cụ proxy_seen che phần tài khoản trước khi trả. Không có công cụ nào nên trả nguyên biến môi trường, vì kết quả công cụ đi vào ngữ cảnh của mô hình và có thể được gửi tới nhà cung cấp mô hình, lưu trong log hội thoại.
Thiết kế công cụ để AutoGen kết nối MCP hiệu quả
Mô tả công cụ quyết định cách agent gọi
Agent trong AutoGen thế hệ mới chọn công cụ dựa trên tên, mô tả và lược đồ đầu vào mà server công bố. Mô tả của fetch_url trong lab nói rõ ba điều: chỉ lấy URL thuộc danh sách host được phép, chỉ GET, chỉ trả 2000 ký tự đầu. Mô tả rõ giới hạn giúp agent không cố gọi với URL ngoài danh sách, giảm số lời gọi lãng phí.
Nếu server có sẵn từ bên ngoài với mô tả quá chung, dùng tool_overrides của McpWorkbench để đổi mô tả mà không sửa server. Mô tả mới nên viết theo ngữ cảnh của hệ thống: tên miền nào được phép, khi nào nên gọi, khi nào không. Đây là cách điều chỉnh hành vi agent rẻ và an toàn hơn sửa prompt hệ thống.
Định dạng kết quả dễ đọc cho mô hình
Kết quả của fetch_url bắt đầu bằng một dòng trạng thái như HTTP 200, TU CHOI hay LOI MANG, rồi mới tới nội dung. Dòng đầu cố định giúp mô hình nhận ra ngay kết quả tốt hay xấu, và giúp mã điều phối lọc lỗi bằng một phép so chuỗi đơn giản.
Giới hạn 2000 ký tự giữ ngữ cảnh gọn. Với trang dài, cân nhắc thêm tham số offset để agent đọc tiếp từng đoạn, thay vì tăng giới hạn khiến ngữ cảnh phình to. Mỗi đoạn đọc thêm là một lời gọi, và nằm trong tiêu chí dừng MAX_CALLS.
Một công cụ, một việc
Server lab chỉ có hai công cụ, một để đọc web, một để chẩn đoán. Server có quá nhiều công cụ làm agent khó chọn và làm bề mặt rủi ro lớn hơn. Nếu cần thêm khả năng như tìm kiếm hay trích dữ liệu có cấu trúc, cân nhắc server riêng cho từng nhóm việc, mỗi server có giới hạn và proxy riêng.
Kiểm thử AutoGen kết nối MCP theo tầng
Tầng server
Kiểm server MCP độc lập bằng client của SDK mcp, không cần AutoGen. Đây là cách đã làm ở các bài khác trong loạt này: khởi chạy server qua stdio với nhiều bộ env, gọi từng công cụ, đối chiếu nhật ký proxy. Tầng này trả lời câu hỏi server có đi proxy đúng không và có giới hạn host đúng không.
Tầng workbench
Kiểm McpWorkbench như lab trong bài: gọi list_tools, call_tool với danh sách URL cố định, ghi log JSON và áp tiêu chí dừng. Tầng này trả lời câu hỏi AutoGen có khởi chạy server đúng không, env có tới server không, thời gian chờ có đủ không.
Tầng agent
Sau cùng mới tới agent thật với mô hình. Ở tầng này, quan sát agent gọi công cụ bao nhiêu lần cho một câu hỏi, có gọi với URL ngoài danh sách không, có dừng đúng lúc không. Vì mỗi lần chạy tốn token và có tính ngẫu nhiên, chạy ít và tập trung vào các kịch bản dễ sai. Tách ba tầng giúp không phải dùng mô hình đắt tiền để gỡ một lỗi cấu hình proxy. Khi tầng server và tầng workbench đều đạt, mọi lỗi còn lại ở tầng agent thường là do mô tả công cụ hoặc logic điều phối.
Ghi kết quả lab thành tài liệu nội bộ
Sau khi chạy ba tầng kiểm thử, ghi lại bản autogen-ext, bản mcp, bản Python, cấu hình env của từng server và kết quả từng ca vào tài liệu của nhóm. Tài liệu này là điểm tựa khi có người nâng một phụ thuộc và hệ thống bắt đầu lỗi. Chỉ cần so cấu hình hiện tại với cấu hình đã ghi là thấy ngay thứ gì đã đổi.
Với hệ thống đang chuẩn bị chuyển sang framework mới, tài liệu này còn là danh sách việc cần làm lại. Mỗi server, mỗi biến proxy và mỗi tiêu chí dừng đều phải có tương ứng ở framework mới trước khi tắt bản AutoGen. Đánh dấu từng mục khi đã chuyển và đã kiểm lại bằng cùng bộ ca thử, để không mục nào bị bỏ sót trong lúc vội.
Chi phí và tốc độ khi AutoGen kết nối MCP qua proxy
Mỗi lời gọi tốn ở ba nơi
Một lời gọi fetch_url tốn token khi mô hình quyết định gọi và khi đọc kết quả, tốn băng thông hoặc lượt của proxy khi server tải trang, và tốn thời gian chờ của cả hệ thống. Với nhóm nhiều agent trao đổi qua lại, số lời gọi có thể tăng nhanh nếu không có tiêu chí dừng.
MAX_CALLS trong lab là cách đơn giản nhất để chặn trên. Với hệ thống thật, đặt thêm giới hạn theo người dùng, theo phiên và theo ngày. Ghi số lời gọi vào log để thấy xu hướng và điều chỉnh giới hạn theo nhu cầu thật của người dùng.
Tôn trọng website nguồn
Proxy chỉ đổi IP. Agent gọi cùng một trang nhiều lần trong thời gian ngắn vẫn là tần suất cao với website. Thêm bộ đệm kết quả trong server: cùng URL trong vài phút trả lại kết quả đã có thay vì tải lại. Cách này giảm tải cho website, giảm lượt proxy và làm agent trả lời nhanh hơn. Bài lỗi 429 khi dùng proxy có cách xử lý khi bị giới hạn.
Quản lý rủi ro khi AutoGen kết nối MCP trên nền đã lưu trữ
Cô lập môi trường
Vì dự án không còn vá bảo mật, chạy AutoGen trong môi trường cô lập: môi trường ảo hoặc container riêng, quyền tối thiểu, không có bí mật không cần thiết. Server MCP chạy dưới dạng tiến trình con với env tối giản như lab đã làm, không thừa hưởng biến của tiến trình cha.
Theo dõi lỗ hổng phụ thuộc

Ghim phiên bản phụ thuộc
Ghim phiên bản của autogen-ext, autogen-agentchat, mcp và các thư viện bên dưới. Chạy công cụ quét lỗ hổng phụ thuộc định kỳ. Khi có lỗ hổng trong một phụ thuộc mà không nâng được vì xung đột như trường hợp mcp 2.x, đánh giá rủi ro và đẩy nhanh kế hoạch chuyển sang framework được bảo trì.
Đặt hạn chót chuyển đổi
README đã khuyên người dùng hiện có chuyển đổi. Đặt một hạn chót cụ thể trong kế hoạch của nhóm, thay vì để hệ thống chạy mãi trên nền không được bảo trì. Phần server MCP đã tách riêng sẽ giúp việc chuyển đổi nhỏ hơn nhiều.
AutoGen kết nối MCP với nhiều server
Mỗi server một workbench
Một agent có thể cần nhiều server MCP: một server đọc web qua proxy, một server đọc cơ sở dữ liệu nội bộ, một server gửi thông báo. Mỗi server dùng một McpWorkbench với StdioServerParams riêng, nên mỗi server có env riêng. Chỉ server đọc web nhận biến proxy, server nội bộ không có biến proxy và đi thẳng.
Cách tách này rõ ràng hơn đặt HTTPS_PROXY cho cả tiến trình AutoGen rồi cố gắng loại trừ bằng NO_PROXY. Khi xem lại cấu hình, người đọc thấy ngay server nào ra Internet qua proxy, server nào chỉ làm việc trong mạng.
Proxy khác nhau cho từng server
Nếu hai server cần IP ra khác nhau, ví dụ một server lấy giá theo thị trường Việt Nam, một server lấy giá theo thị trường Mỹ, đặt hai URL proxy khác nhau trong env của hai server. AutoGen không cần biết gì về chuyện này. Agent chỉ thấy hai công cụ với mô tả khác nhau.
Ghi rõ trong mô tả công cụ thị trường mà mỗi công cụ phục vụ, để agent chọn đúng. Ghi trong log server IP ra và thị trường tương ứng để đối chiếu khi dữ liệu trông bất thường.
Gỡ lỗi khi AutoGen kết nối MCP
Bảng tra
Hiện tượng |
Thường do |
Xử lý |
|---|---|---|
ImportError RequestContext |
mcp 2.x với autogen-ext 0.7.5 |
Ghim mcp<2 |
Không nhập được FastMCP trong server |
Server viết cho SDK bản khác |
Sửa dòng nhập theo bản SDK của môi trường |
Server không khởi động trên Windows |
env thiếu SYSTEMROOT |
Thêm SYSTEMROOT vào env |
Quá hạn khi gọi công cụ |
read_timeout_seconds 5 giây quá ngắn |
Tăng read_timeout_seconds |
Kết quả LOI MANG getaddrinfo |
Server không có biến proxy |
Thêm HTTP_PROXY, HTTPS_PROXY vào env |
Kết quả HTTP 407 |
Tài khoản proxy sai |
Kiểm tài khoản, mã hóa mật khẩu |
is_error false nhưng nội dung lỗi |
Server trả lỗi dạng văn bản |
Đọc nội dung hoặc sửa server |
Dòng read_timeout_seconds đáng chú ý khi đi qua proxy. Mặc định 5 giây, trong khi lời gọi qua proxy trong lab mất khoảng 700 mili giây với trang nhỏ. Với proxy dân cư chậm hay trang nặng, 5 giây có thể không đủ. Mình đặt 10 giây trong lab.
Log hai phía
Log ở phía AutoGen ghi lời gọi công cụ như trong lab. Log ở phía server ghi request web, mã trạng thái và host. Nhật ký proxy ghi kết nối thật. Ba nguồn này cho phép biết lỗi nằm ở agent, ở server hay ở proxy. Bài sửa lỗi 407 Proxy Authentication Required có danh sách nguyên nhân khi proxy từ chối.
Chuyển AutoGen kết nối MCP sang Microsoft Agent Framework
Phần không đổi
Server MCP là phần độc lập với framework. Server chỉ đọc trong bài, cùng giới hạn host và biến proxy trong môi trường, dùng lại được với Microsoft Agent Framework hay bất kỳ client MCP nào. Đây là lý do nên đặt logic truy cập web trong server MCP thay vì trong mã agent.
Phần cần viết lại
Phần kết nối tới server và đăng ký công cụ cho agent viết lại theo API của framework mới. Hướng dẫn chuyển đổi của Microsoft là nguồn chính. Tiêu chí dừng như MAX_CALLS và log lời gọi công cụ cũng chuyển sang cơ chế tương ứng của framework mới.
Trong lúc chuyển, chạy song song hai bản với cùng server MCP và cùng proxy, so log lời gọi công cụ. Khác biệt cho biết chỗ nào framework mới gọi công cụ khác đi.
Chọn proxy cho server
Proxy cho server MCP lấy dữ liệu web không phụ thuộc framework. Với API đối tác cần IP cố định, proxy tĩnh phù hợp. Với lấy dữ liệu công khai nhiều trang, proxy xoay chia tải. ProxyVN có proxy dân cư tĩnh, datacenter và proxy xoay, hỗ trợ HTTP và SOCKS5, cấp tài khoản user và mật khẩu. Nếu cần proxy cho server MCP, anh em có thể mua proxy tốc độ cao tại trang chủ ProxyVN rồi đặt vào env của server.
Câu hỏi thường gặp về AutoGen kết nối MCP
AutoGen còn được bảo trì không. README ngày 27/10/2026 ghi dự án đang chuyển sang lưu trữ, không còn bảo trì, khuyên dùng Microsoft Agent Framework.
Vì sao nhập autogen_ext.tools.mcp báo lỗi. autogen-ext 0.7.5 không tương thích mcp 2.x. Ghim mcp<2.
Đặt proxy cho server MCP ở đâu. Trong env của StdioServerParams, với HTTP_PROXY, HTTPS_PROXY, NO_PROXY.
Proxy của server có ảnh hưởng tới request tới mô hình không. Không, nếu chỉ đặt trong env của server.
Vì sao is_error false khi trang lỗi. Server trả lỗi dạng văn bản. Đọc nội dung kết quả.
Có giới hạn số lời gọi công cụ được không. Có, ở tầng điều phối. Lab dùng MAX_CALLS bằng 3.
Có dùng server MCP viết bằng SDK bản 2 với autogen-ext 0.7.5 được không. Được nếu server chạy trong môi trường Python riêng. Giao thức qua stdio không phụ thuộc bản SDK của hai bên, chỉ môi trường chung mới xung đột.
Có nên đặt HTTPS_PROXY cho cả tiến trình AutoGen không. Chỉ khi mạng bắt buộc mọi lưu lượng đi proxy. Nếu không, đặt proxy riêng cho server cần IP khác sẽ gọn hơn.
Checklist AutoGen kết nối MCP

Checklist AutoGen kết nối MCP
Trước khi dùng
- Xác nhận lý do còn dùng AutoGen và có kế hoạch chuyển đổi.
- Thế hệ API mới: autogen-agentchat, autogen-ext.
- Ghim mcp<2 với autogen-ext 0.7.5.
- Server tin cậy, đọc mã, ghim phiên bản.
- Giới hạn host trong server.
- Proxy trong env của server, có NO_PROXY.
- read_timeout_seconds đủ dài cho request qua proxy.
- Log lời gọi công cụ và tiêu chí dừng.
Giới hạn của lab
Lab chạy autogen-agentchat, autogen-ext 0.7.5 với mcp 1.30.0 trên Windows, gọi McpWorkbench trực tiếp, không gọi mô hình. Chưa thử agent thật quyết định gọi công cụ, chưa thử StreamableHttpServerParams và chưa thử Microsoft Agent Framework.
AutoGen kết nối MCP và những điều cần nhớ
AutoGen kết nối MCP qua McpWorkbench của autogen-ext, nhưng dự án đã lưu trữ và bản 0.7.5 cần ghim mcp<2. Đặt proxy trong env của server, giới hạn host trong server, đọc nội dung kết quả thay vì chỉ is_error, đặt tiêu chí dừng. Cần proxy ổn định khi AutoGen kết nối MCP, liên hệ Proxy.vn - Nhà cung cấp dịch vụ proxy chất lượng hàng đầu Việt Nam.