Resource trong MCP server phơi bày dữ liệu cho client, tương tự các handler xử lý GET request trong một HTTP server - được thiết kế để lấy thông tin, chứ không phải để thực hiện hành động.
Ca sử dụng cốt lõi
Phần tiêu đề “Ca sử dụng cốt lõi”Bài học minh hoạ bằng một tính năng “mention tài liệu”: người dùng tham chiếu tới file bằng cú pháp @ten_tai_lieu, đòi hỏi vừa có danh sách tài liệu khả dụng, vừa có khả năng lấy nội dung một tài liệu cụ thể.

@ hiện danh sách tài liệu khả dụng để autocomplete; nội dung tài liệu được mention sẽ tự động chèn vào prompt.

Mẫu request-response
Phần tiêu đề “Mẫu request-response”Client gửi một ReadResourceRequest kèm một URI định danh; server xử lý và trả về dữ liệu qua ReadResourceResult.

ReadResourceRequest với URI docs://documents tới MCP server.

ReadResourceResult chứa danh sách tên tài liệu.
Các loại resource
Phần tiêu đề “Các loại resource”Resource trực tiếp: URI tĩnh, không có tham số, phù hợp cho các thao tác không cần biến số.
@mcp.resource( "docs://documents", mime_type="application/json")def list_docs() -> list[str]: return list(docs.keys())Resource có template: URI chứa tham số mà Python SDK tự động phân tích và truyền vào dưới dạng keyword argument.
@mcp.resource( "docs://documents/{doc_id}", mime_type="text/plain")def fetch_doc(doc_id: str) -> str: if doc_id not in docs: raise ValueError(f"Doc with id {doc_id} not found") return docs[doc_id]
Chi tiết triển khai
Phần tiêu đề “Chi tiết triển khai”Resource có thể trả về nhiều kiểu dữ liệu (chuỗi, JSON, dữ liệu nhị phân). Tham số mime_type cho biết định dạng dữ liệu: application/json cho dữ liệu có cấu trúc, text/plain cho văn bản, application/pdf cho file nhị phân. SDK tự động xử lý việc serialize.
Khởi động server bằng uv run mcp dev mcp_server.py, sau đó truy cập MCP Inspector qua trình duyệt. Inspector hiển thị cả resource trực tiếp lẫn resource template, cho phép bạn nhập thử tham số cho các resource dạng template.

lượt xem