Hôm nay, chúng ta hãy cùng khám phá một công cụ cực kỳ thực tiễn — FastAPI MCP. Nếu bạn đang xây dựng API bằng FastAPI và muốn các endpoint của bạn có thể được AI (như GPT, Claude, v.v.) truy cập trực tiếp, thì hướng dẫn này dành cho bạn.
FastAPI MCP là gì?
Nói đơn giản, FastAPI MCP là một giải pháp không cần cấu hình cho phép tự động mở các endpoint FastAPI của bạn dưới dạng các công cụ Model Context Protocol (MCP). Với khả năng tương thích MCP, các mô hình AI có thể tương tác trực tiếp với API của bạn một cách liền mạch và chuẩn hóa.
Về bản chất, FastAPI MCP hoạt động như một cầu nối: nó giúp các API của bạn có thể được AI khám phá và gọi tới. Hãy tưởng tượng Claude hoặc GPT có thể — thông qua các công cụ như Cursor hoặc Claude Desktop — lấy dữ liệu, xử lý thông tin, hoặc kích hoạt các logic nghiệp vụ chỉ bằng cách gọi các endpoint API của bạn. Không chỉ mạnh mẽ, mà còn rất thú vị!
Tại sao nên dùng FastAPI MCP?
Khi phát triển ứng dụng tích hợp AI, ngày càng phổ biến việc các mô hình ngôn ngữ lớn (LLM) cần tương tác với các dịch vụ bên ngoài, chẳng hạn như:
- Truy vấn cơ sở dữ liệu
- Gọi các dịch vụ tính toán
- Truy cập các công cụ nội bộ
- ...và nhiều hơn nữa
Trước đây, bạn cần xây dựng các endpoint tùy chỉnh hoặc viết các adapter riêng cho từng tích hợp AI. Với FastAPI MCP, chỉ với vài dòng code, bạn có thể biến API hiện có của mình thành giao diện sẵn sàng cho AI — tiết kiệm rất nhiều thời gian và công sức.
Hướng dẫn từng bước: Bắt đầu với FastAPI MCP trên máy cục bộ
Bước 1: Chuẩn bị môi trường Python
Trước tiên, hãy đảm bảo bạn đã cài Python (khuyến nghị từ phiên bản 3.10 trở lên). Kiểm tra phiên bản bằng cách chạy:
python --version
# or
python3 --version
Nếu bạn thấy một phiên bản phù hợp (như Python 3.10.x), môi trường đã sẵn sàng.
Bước 2: Cài đặt các gói cần thiết
Cài đặt FastAPI, Uvicorn và FastAPI MCP:
pip install fastapi uvicorn fastapi-mcp
Bước 3: Tạo ứng dụng FastAPI đơn giản
Để đảm bảo tính tương thích và tối giản cấu hình, hãy bắt đầu với một ví dụ cơ bản. Tạo file mới main.py và thêm nội dung sau:
from fastapi import FastAPI
from fastapi_mcp import FastApiMCP app = FastAPI(title="Simple API") @app.get("/hello", operation_id="say_hello")
async def hello(): """A simple greeting endpoint""" return {"message": "Hello World"} # Expose MCP server
mcp = FastApiMCP(app, name="Simple MCP Service")
mcp.mount() if __name__ == "__main__": import uvicorn uvicorn.run(app, host="127.0.0.1", port=8000)
Ví dụ này gồm một endpoint /hello
trả về lời chào.
Bước 4: Chạy và kiểm tra ứng dụng
Khởi động server:
python main.py
hoặc
uvicorn main:app --reload
Bạn sẽ thấy ứng dụng FastAPI chạy tại http://127.0.0.1:8000
.
Bước 5: Khám phá endpoint MCP
Mở trình duyệt và truy cập http://127.0.0.1:8000/mcp
.
Lưu ý: Khác với REST API thông thường, endpoint MCP sử dụng Server-Sent Events (SSE), nên bạn sẽ thấy nội dung như:
event: endpoint
data: /mcp/messages/?session_id=a543519a5f3848febfd4f40b5ad3b5c7
Điều đó có nghĩa là MCP server đã sẵn sàng nhận kết nối từ các client AI.
Kết nối FastAPI MCP với AI Client
Giả sử bạn muốn kết nối FastAPI MCP với client như Cursor, có hai cách:
Cách 1: Kết nối qua SSE (Server-Sent Events)
Hầu hết các client MCP hiện đại (Claude Desktop, Cursor, Windsurf, v.v.) hỗ trợ SSE. Cấu hình như sau:
{ "mcpServers": { "fastapi-mcp": { "url": "http://localhost:8000/mcp" } }
}
Ví dụ, trong Cursor, vào Settings → "MCP" → "Add new global MCP server" và thêm config trên vào mcp.json
.
Khi FastAPI MCP server đang chạy, IDE AI sẽ tự động phát hiện và kích hoạt các chức năng mới.
Cách 2: Dùng mcp-remote
làm cầu nối
Nếu bạn cần hỗ trợ xác thực hoặc client MCP của bạn không hỗ trợ SSE, bạn có thể sử dụng mcp-remote:
{ "mcpServers": { "fastapi-mcp": { "command": "npx", "args": [ "mcp-remote", "http://localhost:8000/mcp", "8080" ] } }
}
Thực tế: FastAPI MCP hoạt động ra sao?
Sau khi kết nối, bạn có thể yêu cầu trong AI IDE (ví dụ tại tab Agent của Cursor):
"Gọi endpoint /hello
cho tôi."
AI sẽ chạy công cụ MCP và trả lại kết quả endpoint giống như một lập trình viên thật sự.
Các mẹo nâng cao
Chỉ định endpoint được expose
Không phải endpoint nào cũng nên để AI truy cập. FastAPI MCP hỗ trợ kiểm soát:
# Only expose specific operations
mcp = FastApiMCP(app, include_operations=["say_hello", "get_user_info"]) # Exclude certain operations
mcp = FastApiMCP(app, exclude_operations=["delete_user", "update_settings"]) # Expose only endpoints with specific tags
mcp = FastApiMCP(app, include_tags=["public", "read_only"]) # Exclude endpoints with specific tags
mcp = FastApiMCP(app, exclude_tags=["admin", "sensitive"])
Thêm xác thực
Để bảo vệ endpoint MCP, bạn có thể thêm xác thực API key:
from fastapi import FastAPI, Depends, Security
from fastapi.security import APIKeyHeader api_key_header = APIKeyHeader(name="X-API-Key") async def verify_api_key(api_key: str = Security(api_key_header)): if api_key != "your-secret-key": raise HTTPException(status_code=403, detail="Invalid API key") return api_key mcp = FastApiMCP(app, mcp_dependencies=[Depends(verify_api_key)])
mcp.mount()
Bây giờ, mọi lệnh gọi MCP đều yêu cầu khóa API hợp lệ trong header yêu cầu.
Xử lý phản hồi tùy chỉnh
Bạn có thể thêm metadata vào phản hồi gửi tới AI:
async def response_processor(request, response, response_data): response_data["processed_by"] = "custom_processor" response_data["timestamp"] = datetime.now().isoformat() return response_data mcp = FastApiMCP(app, response_processor=response_processor)
mcp.mount()
Tách riêng triển khai MCP server
Bạn có thể host MCP server tách biệt với API chính:
# api_app.py
from fastapi import FastAPI
api_app = FastAPI() # mcp_app.py
from fastapi import FastAPI
from fastapi_mcp import FastApiMCP
from api_app import api_app mcp_app = FastAPI()
mcp = FastApiMCP(api_app)
mcp.mount(mcp_app)
Sau đó triển khai api_app
và mcp_app
độc lập theo nhu cầu.
Các lưu ý bảo mật
Khi dùng FastAPI MCP:
- Chỉ expose các endpoint an toàn, chỉ đọc (read-only).
- Thêm xác thực nếu cần.
- Dùng Pydantic models để kiểm soát dữ liệu đầu vào.
- Lọc/masking dữ liệu nhạy cảm trong phản hồi.
Kết luận
Bắt đầu với FastAPI MCP cực kỳ đơn giản. Chỉ với vài thao tác, bạn có thể biến API hiện tại thành giao diện tương tác với AI mà không cần viết lại code hay xây dựng adapter tùy chỉnh.
Tóm lại các bước:
- Chuẩn bị môi trường Python
- Cài đặt fastapi, uvicorn, fastapi-mcp
- Tạo ứng dụng FastAPI
- Thêm hỗ trợ MCP chỉ với vài dòng code
- Kết nối và kiểm thử từ IDE hoặc công cụ AI yêu thích
Để khám phá thêm nhiều tính năng mới nhất, bạn có thể tham khảo tài liệu chính thức FastAPI MCP trên GitHub: https://github.com/tadata-org/fastapi_mcp
Cảm ơn các bạn đã theo dõi!