Inizia subitoInizia gratis

Recupera Resource e Prompt da MCP

Il tuo server delle valute espone una risorsa (file://currencies.txt) e un prompt (convert_currency_prompt) che combinano la richiesta dell'utente con contesto e regole specifiche del task. Per alimentare un LLM, il client deve recuperarli entrambi in un'unica operazione. Implementa una funzione di supporto chiamata get_context_from_mcp() che restituisca il testo della risorsa e il testo del prompt (con la query dell'utente già inclusa) così che chi la chiama possa costruire il messaggio.

Il file currency_server.py è disponibile con uno strumento, una risorsa e un prompt. Usa la stessa sessione per leggere la risorsa e ottenere il prompt con l'input dell'utente.

Questo esercizio fa parte del corso

Introduzione al Model Context Protocol (MCP)

Visualizza corso

Istruzioni dell'esercizio

  • All'interno della sessione, chiama il metodo per leggere la risorsa in "file://currencies.txt".
  • Chiama il metodo per ottenere il prompt per nome con l'input dell'utente: usa il nome del prompt "convert_currency_prompt" e un dizionario arguments con chiave "currency_request" e valore user_query.

esercizio interattivo pratico

Prova questo esercizio completando questo codice di esempio.

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?")))
Modifica ed esegui il codice