ÎncepețiÎncepe gratuit

Preia resursa și promptul din MCP

Serverul tău de valute expune o resursă (file://currencies.txt) și un prompt (convert_currency_prompt) care combină cererea utilizatorului cu contextul și regulile specifice sarcinii. Pentru a alimenta un LLM, clientul trebuie să le preia pe amândouă într-un singur pas. Implementează o funcție ajutătoare numită get_context_from_mcp(), care returnează textul resursei și textul promptului (cu interogarea utilizatorului deja inclusă), astfel încât apelantul să poată construi mesajul.

Fișierul currency_server.py este disponibil și conține un instrument, o resursă și un prompt. Folosește aceeași sesiune pentru a citi resursa și a obține promptul cu datele introduse de utilizator.

Acest exercițiu face parte din cursul

Introducere în Model Context Protocol (MCP)

Vezi cursul

Instrucțiuni pentru exercițiu

  • În interiorul sesiunii, apelează metoda pentru a citi resursa de la adresa "file://currencies.txt".
  • Apelează metoda pentru a obține promptul după nume, cu datele introduse de utilizator: folosește numele de prompt "convert_currency_prompt" și un dicționar arguments cu cheia "currency_request" și valoarea user_query.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

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?")))
Editează și rulează codul