Bỏ qua đến nội dung chính

Accessing resources

📖 Nội dung bài học

Tóm tắt

Các resource trong MCP cho phép server của bạn cung cấp thông tin có thể được đưa trực tiếp vào các prompt, thay vì yêu cầu tool calls để truy cập dữ liệu. Điều này tạo ra một cách hiệu quả hơn để cung cấp context cho các mô hình AI.

Sơ đồ trên minh họa cách các resource hoạt động: khi người dùng nhập một cái gì đó như "What's in the @...", code của chúng ta nhận diện đây là một yêu cầu resource, gửi một ReadResourceRequest đến server MCP, và nhận lại một ReadResourceResult với nội dung thực tế.

Triển khai đọc resource

Để bật tính năng truy cập resource trong client MCP của bạn, bạn cần triển khai một hàm read_resource. Đầu tiên, thêm các import cần thiết:

import json
from pydantic import AnyUrl

Hàm chính gửi một request đến server MCP và xử lý phản hồi dựa trên MIME type của nó:

async def read_resource(self, uri: str) -> Any:
    result = await self.session().read_resource(AnyUrl(uri))
    resource = result.contents[0]
    
    if isinstance(resource, types.TextResourceContents):
        if resource.mimeType == "application/json":
            return json.loads(resource.text)
    
    return resource.text

Hiểu cấu trúc phản hồi

Khi bạn yêu cầu một resource, server trả về một kết quả với một danh sách contents. Chúng ta truy cập phần tử đầu tiên vì thông thường chúng ta chỉ cần một resource tại một thời điểm. Phản hồi bao gồm:

  • Nội dung thực tế (text hoặc data)
  • Một MIME type cho biết cách chúng ta phân tích cú pháp nội dung
  • Các metadata khác về resource

Xử lý loại nội dung

Hàm kiểm tra MIME type để xác định cách xử lý nội dung:

  • Nếu là application/json, phân tích cú pháp text dưới dạng JSON và trả về đối tượng đã được phân tích cú pháp
  • Nếu không, trả về nội dung text thô

Cách tiếp cận này xử lý cả dữ liệu có cấu trúc (như JSON) và tài liệu text thuần túy một cách liền mạch.

Kiểm tra truy cập resource

Sau khi triển khai, bạn có thể kiểm tra chức năng resource thông qua ứng dụng CLI của bạn. Khi bạn nhập "@" theo sau là tên resource, hệ thống sẽ:

  1. Hiển thị các resource có sẵn trong danh sách tự động hoàn thành
  2. Cho phép bạn chọn một resource bằng cách dùng các phím mũi tên và phím cách
  3. Đưa nội dung resource trực tiếp vào prompt của bạn
  4. Gửi mọi thứ đến mô hình AI mà không yêu cầu thêm tool calls

Điều này tạo ra trải nghiệm người dùng mượt mà hơn nhiều so với việc mô hình AI phải thực hiện các tool calls riêng biệt để truy cập nội dung tài liệu. Nội dung resource trở thành một phần của context ban đầu, cho phép phản hồi ngay lập tức về dữ liệu.

🔁 Bài học liên quan

📚 Nguồn & ghi nhận

Bài học có hữu ích không?

Góp ý / Báo lỗiPhát hiện sai sót hoặc có ý tưởng cải thiện?