始める無料で始める

クライアントからリソースを読み取る

いよいよ最後のステップです。クライアントに機能を追加して、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"))
コードを編集して実行