Načtení resource a promptu z MCP
Tvůj currency server zpřístupňuje resource (file://currencies.txt) a prompt (convert_currency_prompt), který kombinuje uživatelův požadavek s kontextem a pravidly specifickými pro daný úkol. Aby bylo možné tyto informace předat LLM, musí klient načíst obojí najednou. Implementuj pomocnou funkci get_context_from_mcp(), která vrátí text resource a text promptu (s dotazem uživatele již zahrnutým), aby volající mohl sestavit zprávu.
Soubor currency_server.py je k dispozici s nástrojem, resource a promptem. Použij stejnou session pro načtení resource i získání promptu se vstupem uživatele.
Toto cvičení je součástí kurzu
Introduction to Model Context Protocol (MCP)
Pokyny k cvičení
- Uvnitř session zavolej metodu pro načtení resource na adrese
"file://currencies.txt". - Zavolej metodu pro získání promptu podle názvu se vstupem uživatele: použij název promptu
"convert_currency_prompt"a slovníkargumentss klíčem"currency_request"a hodnotouuser_query.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def get_context_from_mcp(user_query: str) -> tuple[str, str]:
"""Fetch resource content and prompt text from the MCP server."""
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()
# Read the resource (supported currencies)
resource_result = await session.____("file://currencies.txt")
resource_text = resource_result.contents[0].text
# Get the prompt with the user's query
prompt_result = await session.____("convert_currency_prompt",
arguments={"currency_request": user_query})
prompt_text = prompt_result.messages[0].content.text
return resource_text, prompt_text
print(asyncio.run(get_context_from_mcp("How much is 50 GBP in euros?")))