Отримання ресурсу та підказки з MCP
Ваш сервер валют надає ресурс (file://currencies.txt) і підказку (convert_currency_prompt), які поєднують запит користувача з контекстом і правилами для конкретного завдання. Щоб передати це LLM, клієнт має отримати обидва за один раз. Реалізуйте допоміжну функцію get_context_from_mcp(), яка повертає текст ресурсу та текст підказки (із уже підставленим запитом користувача), щоб виклик міг зібрати повідомлення.
Файл currency_server.py доступний із інструментом, ресурсом і підказкою. Використайте ту саму сесію, щоб прочитати ресурс і отримати підказку із вхідними даними користувача.
Ця вправа є частиною курсу
Вступ до Model Context Protocol (MCP)
Інструкції до вправи
- Усередині сесії викликайте метод для читання ресурсу за адресою
"file://currencies.txt". - Викликайте метод для отримання підказки за назвою з вхідними даними користувача: використайте назву підказки
"convert_currency_prompt"і словникargumentsз ключем"currency_request"і значеннямuser_query.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
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?")))