Đọc Resources từ Client
Giờ hãy bước thêm bước cuối cùng: bổ sung chức năng cho client để nó có thể đọc dữ liệu của resource từ MCP server của bạn! Danh sách các loại tiền tệ và ký hiệu của chúng có thể được một LLM dùng như danh sách kiểm tra để xác nhận rằng người dùng đang yêu cầu một loại tiền tệ được hỗ trợ bởi công cụ convert_currency(), và đồng thời đảm bảo các đối số của hàm công cụ là ký hiệu tiền tệ hợp lệ.
Tệp currency_server.py đã được khởi động và sẵn sàng để bạn sử dụng.
Bài tập này là một phần của khóa học
Giới thiệu về Model Context Protocol (MCP)
Hướng dẫn bài tập
- Định nghĩa một hàm async tên
read_resource()nhận tham sốresource_urikiểustr - Bên trong hàm, dùng
session.read_resource()vớiawaitđể đọc resource tại URI đã cho, gán kết quả vàoresource_content - Lặp qua nội dung của từng resource và in ra các thuộc tính
.mimeTypevà.text
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
# Define an async function for reading MCP resources
____ ____ ____(____: ____):
"""Read a specific resource by URI."""
params = StdioServerParameters(
command=sys.executable,
args=["currency_server.py"],
)
async with stdio_client(params) as (reader, writer):
async with ClientSession(reader, writer) as session:
await session.initialize()
print(f"Reading resource: {resource_uri}")
# Read the resource from the session context
resource_content = ____ ____
# Print the contents of each resource
for content in ____:
print(f"\nContent ({content.mimeType}):")
print(content.____)
return resource_content
asyncio.run(read_resource("file://currencies.txt"))