Khi server có sẵn không đủ
Đôi khi bạn cần năng lực riêng: gọi API nội bộ công ty, chạy một script đặc thù, đọc một định dạng dữ liệu lạ. Lúc đó bạn tự viết MCP server — và tin vui là bạn dùng chính AI để viết nó.
MCP server đơn giản gồm gì?
Về bản chất, một MCP server là một chương trình:
- Khai báo danh sách tools (tên + mô tả + schema tham số đầu vào).
- Khi AI gọi một tool, server thực thi và trả kết quả.
Anthropic cung cấp SDK chính thức cho Python và TypeScript giúp việc này rất gọn.
Ví dụ ý tưởng: server "tiện ích cá nhân"
Một custom tool đơn giản — lấy giờ hiện tại theo múi giờ:
# server.py — dùng MCP Python SDK (FastMCP)
from mcp.server.fastmcp import FastMCP
from datetime import datetime
from zoneinfo import ZoneInfo
mcp = FastMCP("tien-ich-ca-nhan")
@mcp.tool()
def get_time(timezone: str = "Asia/Ho_Chi_Minh") -> str:
"""Lấy giờ hiện tại theo múi giờ. Dùng khi user hỏi mấy giờ ở đâu đó."""
return datetime.now(ZoneInfo(timezone)).strftime("%Y-%m-%d %H:%M:%S %Z")
if __name__ == "__main__":
mcp.run()
Khai báo vào file cấu hình MCP:
{
"mcpServers": {
"tien-ich": { "command": "python", "args": ["/duong-dan/server.py"] }
}
}
Dùng AI để viết server cho bạn
Đây là cách nhanh nhất. Prompt mẫu:
"Viết cho tôi một MCP server bằng Python (dùng FastMCP) cung cấp tool
doc_lognhận tham sốservice_name, đọc 50 dòng cuối của file log dịch vụ đó trong thư mục/var/log/, và trả về nội dung. Viết kèm hướng dẫn cấu hình vào Cursor và cách test."
AI sẽ sinh code + schema + hướng dẫn. Bạn chỉ cần đọc lại, chạy thử, tinh chỉnh.
Nguyên tắc viết tool tốt (để AI gọi đúng)
- Mô tả tool rõ ràng, nói cả KHI NÀO dùng — đây là thứ AI dựa vào để quyết định gọi tool. "Lấy giờ hiện tại theo múi giờ. Dùng khi user hỏi giờ" tốt hơn "get time".
- Schema tham số chặt chẽ — kiểu dữ liệu, mô tả từng tham số, giá trị mặc định hợp lý.
- Trả lỗi rõ ràng — khi thất bại, trả thông báo lỗi mô tả được, để AI tự điều chỉnh cách gọi.
- Một tool một việc — đừng nhồi 5 chức năng vào một tool.
An toàn khi tự viết server
- Server chạy với quyền của bạn → cẩn thận với tool thực thi lệnh hệ thống hoặc xoá dữ liệu.
- Đừng hardcode secret trong code — đọc từ biến môi trường.
- Test trong môi trường an toàn trước khi cho phép thao tác ghi.
💡 Đây chính là "vibe coding" ở tầng meta: bạn dùng AI để mở rộng năng lực của chính AI.
