CommencerCommencez gratuitement

Récupérer une ressource et un prompt depuis MCP

Votre serveur de devises expose une ressource (file://currencies.txt) et un prompt (convert_currency_prompt) qui combinent la demande de l'utilisateur avec un contexte et des règles propres à la tâche. Pour alimenter un LLM, le client doit récupérer les deux en une seule passe. Implémentez une fonction utilitaire appelée get_context_from_mcp() qui renvoie le texte de la ressource et le texte du prompt (avec la requête de l'utilisateur déjà intégrée) afin que l'appelant puisse construire le message.

Le fichier currency_server.py est disponible avec un outil, une ressource et un prompt. Utilisez la même session pour lire la ressource et obtenir le prompt avec l'entrée de l'utilisateur.

Cet exercice fait partie du cours

<cours>Introduction au Model Context Protocol (MCP)</cours>
Voir le cours

Instructions de l’exercice

  • À l'intérieur de la session, appelez la méthode pour lire la ressource à "file://currencies.txt".
  • Appelez la méthode pour obtenir le prompt par son nom avec l'entrée de l'utilisateur : utilisez le nom de prompt "convert_currency_prompt" et un dictionnaire arguments avec la clé "currency_request" et la valeur user_query.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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?")))
Modifier et exécuter le code