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

Accessing resources

📖 Nội dung bài học

Gia đình phông chữ

Tóm tắt

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

Tìm hiểu về Yêu cầu Tài nguyên

Khi bạn đã định nghĩa tài nguyên trên server MCP của mình, client của bạn cần một cách để yêu cầu và sử dụng chúng. Client đóng vai trò là cầu nối giữa ứng dụng của bạn và server MCP, tự động xử lý giao tiếp và phân tích dữ liệu.

Luồng hoạt động rất đơn giản: khi người dùng muốn tham chiếu một tài liệu (ví dụ: gõ "@report.pdf"), ứng dụng của bạn sử dụng client MCP để tìm nạp tài nguyên đó từ server và đưa nội dung của nó trực tiếp vào prompt được gửi đến Claude.

Triển khai Đọc Tài nguyên

Chức năng cốt lõi yêu cầu một hàm read_resource trong client MCP của bạn. Hàm này nhận một tham số URI xác định tài nguyên nào cần tìm nạp:

async def read_resource(self, uri: str) -> Any:
    result = await self.session().read_resource(AnyUrl(uri))
    resource = result.contents[0]

Phản hồi từ server MCP chứa một danh sách contents. Bạn thường chỉ cần phần tử đầu tiên, chứa dữ liệu tài nguyên thực tế cùng với siêu dữ liệu như loại MIME.

Xử lý các Loại Nội dung Khác nhau

Tài nguyên có thể trả về các loại nội dung khác nhau, vì vậy client của bạn cần phân tích chúng một cách thích hợp. Loại MIME cho bạn biết cách xử lý dữ liệu:

if isinstance(resource, types.TextResourceContents):
    if resource.mimeType == "application/json":
        return json.loads(resource.text)
    
    return resource.text

Cách tiếp cận này đảm bảo rằng các tài nguyên JSON được phân tích cú pháp đúng cách thành các đối tượng Python, trong khi các tài nguyên văn bản thuần túy được trả về dưới dạng chuỗi. Loại MIME đóng vai trò là gợi ý của bạn để xác định chiến lược phân tích cú pháp chính xác.

Các Import Bắt buộc

Để làm cho việc này hoạt động đúng, bạn sẽ cần các import này trong client MCP của mình:

import json
from pydantic import AnyUrl

Module json xử lý việc phân tích cú pháp các phản hồi JSON, trong khi AnyUrl đảm bảo xử lý kiểu thích hợp cho tham số URI.

Kiểm tra Truy cập Tài nguyên

Sau khi triển khai, bạn có thể kiểm tra chức năng thông qua ứng dụng CLI của mình. Khi bạn gõ thứ gì đó như "What's in the @report.pdf document?", hệ thống sẽ:

  • Hiển thị các tài nguyên khả dụng trong danh sách tự động hoàn thành
  • Cho phép bạn chọn một tài nguyên
  • Tự động tìm nạp nội dung tài nguyên
  • Bao gồm nội dung đó trong prompt gửi đến Claude

Ưu điểm chính là Claude nhận được nội dung tài liệu trực tiếp trong prompt, loại bỏ nhu cầu tool call để truy cập thông tin. Điều này làm cho các tương tác nhanh hơn và hiệu quả hơn.

Tích hợp với Ứng dụng của Bạn

Hãy nhớ rằng mã client MCP bạn viết được sử dụng bởi các phần khác của ứng dụng của bạn. Hàm read_resource trở thành một khối xây dựng mà các thành phần khác có thể gọi để tìm nạp nội dung tài liệu, liệt kê các tài nguyên khả dụng hoặc tích hợp dữ liệu tài nguyên vào prompt.

Sự phân tách mối quan tâm này giúp mã của bạn sạch sẽ: client MCP xử lý giao tiếp với server, trong khi logic ứng dụng của bạn tập trung vào cách sử dụng dữ liệu đó một cách hiệu quả.

🔁 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?