Inizia subitoInizia gratis

Uso degli strumenti LLM nei server MCP

Hai creato un server MCP con uno strumento per convertire valute utilizzando tassi di cambio aggiornati. Integrarlo con un LLM gli darà la capacità di rispondere con precisione a domande su valute e tassi di cambio—cosa che di default non può fare.

Qui trovi gran parte del codice già pronta: l'obiettivo principale è comprendere il flusso di lavoro più che la sintassi.

Questo esercizio fa parte del corso

Introduzione al Model Context Protocol (MCP)

Visualizza corso

Istruzioni dell'esercizio

  • Invia a Claude la query dell'utente (user_query) e la lista formattata degli strumenti (anthropic_tools).
  • Chiama lo strumento MCP scelto dall'LLM, usando il nome e gli argomenti estratti dal blocco di utilizzo dello strumento.
  • Invia il risultato (result) a Claude per la risposta finale.

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 call_anthropic_llm(user_query: str):
    """Call Claude with MCP tools."""
    
    print(f"\nUser: {user_query}\n")

    mcp_tools = await get_tools_from_mcp()
    
    anthropic_tools = []
    for tool in mcp_tools:
        anthropic_tool = {
            "name": tool.name,
            "description": tool.description or "",
            "input_schema": tool.inputSchema,
        }
        anthropic_tools.append(anthropic_tool)
    
    # Send the user query and formatted tools to the LLM
    client = AsyncAnthropic(api_key="")

    response = await client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=1024,
        messages=____,
        tools=____,
    )

    if response.stop_reason == "tool_use":
        tool_use = next(block for block in response.content if block.type == "tool_use")
        name = tool_use.name
        args = tool_use.input

        print(f"Model decided to call: {name}")
        print(f"Arguments: {args}\n")

        # Call the MCP tool
        result = await call_mcp_tool(____, ____)

        # Send the result back to Claude for the final response
        followup = await client.messages.create(
            model="claude-sonnet-4-6",
            max_tokens=1024,
            messages=[
                {"role": "user", "content": user_query},
                {"role": "assistant", "content": response.content},
                {
                    "role": "user",
                    "content": [
                        {
                            "type": "tool_result",
                            "tool_use_id": tool_use.id,
                            "content": ____,
                        }
                    ],
                },
            ],
            tools=anthropic_tools,
        )

        final_text = next((block.text for block in followup.content if block.type == "text"), None)
        if final_text:
            print(f"\nAssistant: {final_text}")
            return str(final_text)
        else:
            print("No follow-up message from model.")

    else:
        text = next((block.text for block in response.content if block.type == "text"), "")
        print(f"\nAssistant: {text}")
        return str(text)


if __name__ == "__main__":
    asyncio.run(call_anthropic_llm("How much is 250 US dollars in euros?"))
Modifica ed esegui il codice