クライアントからリソースを読み取る
いよいよ最後のステップです。クライアントに機能を追加して、MCP サーバーからリソースのデータを読み取れるようにしましょう。通貨とそのシンボルの一覧は、LLM がユーザーのリクエストした通貨を convert_currency() ツールがサポートしているかどうかを確認したり、ツール関数の引数が有効な通貨シンボルかどうかを検証したりする際に活用できます。
currency_server.py はすでに起動済みで、すぐに使える状態になっています。
この演習はコースの一部です
Model Context Protocol(MCP)入門
演習の手順
resource_uriというstr型のパラメータを受け取る非同期関数read_resource()を定義しましょう- 関数内で
awaitを使ってsession.read_resource()を呼び出し、指定された URI のリソースを読み取って、結果をresource_contentに代入しましょう - 各リソースの内容をループで処理し、
.mimeTypeと.text属性を出力しましょう
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
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"))