Comece agoraComece grátis

Buscar recurso e prompt do MCP

Seu servidor de câmbio expõe um recurso (file://currencies.txt) e um prompt (convert_currency_prompt) que combinam a solicitação do usuário com contexto e regras específicos da tarefa. Para alimentar um LLM, o cliente precisa buscar ambos de uma vez. Implemente uma função auxiliar chamada get_context_from_mcp() que retorne o texto do recurso e o texto do prompt (já com a consulta do usuário) para que quem chamar possa montar a mensagem.

O arquivo currency_server.py está disponível com uma ferramenta, um recurso e um prompt. Use a mesma sessão para ler o recurso e obter o prompt com a entrada do usuário.

Este exercicio faz parte do curso

Introdução ao Model Context Protocol (MCP)

Ver curso

Instruções do exercicio

  • Dentro da sessão, chame o método para ler o recurso em "file://currencies.txt".
  • Chame o método para obter o prompt pelo nome com a entrada do usuário: use o nome do prompt "convert_currency_prompt" e um dicionário arguments com a chave "currency_request" e o valor user_query.

exercicio interativo prático

Tente este exercicio completando este código de exemplo.

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?")))
Editar e Executar Código