MCP e LLMs: Ferramentas

Introdução ao Model Context Protocol (MCP)

James Chapman

AI Curriculum Manager, DataCamp

Ferramentas MCP para ferramentas do LLM

 

Integração Ferramenta ↔ LLM depende muito do LLM

  • LLMs aceitam ferramentas de formas e sintaxes diferentes
  • Use o Claude via a Messages API da Anthropic
  • Foco: processos e transformações

llm_mcp.png

Introdução ao Model Context Protocol (MCP)

Fluxo de chamada de ferramenta

fct1.jpg

Introdução ao Model Context Protocol (MCP)

Fluxo de chamada de ferramenta

fct2.jpg

Introdução ao Model Context Protocol (MCP)

Fluxo de chamada de ferramenta

fct3.jpg

Introdução ao Model Context Protocol (MCP)

Fluxo de chamada de ferramenta

fct4.jpg

Introdução ao Model Context Protocol (MCP)

Fluxo de chamada de ferramenta

fct5.jpg

Introdução ao Model Context Protocol (MCP)

Fluxo de chamada de ferramenta

fct6.jpg

Introdução ao Model Context Protocol (MCP)

Servidor MCP: timezone_server.py

from mcp.server.fastmcp import FastMCP
import requests

mcp = FastMCP("Timezone Converter")

@mcp.tool()
def convert_timezone(date_time: str, from_timezone: str, to_timezone: str) -> str:
    ...

if __name__ == "__main__":
    mcp.run(transport="stdio")
Introdução ao Model Context Protocol (MCP)

Expandindo o código do cliente

async def get_tools_from_mcp():
            # ... 
            return response.tools

async def call_mcp_tool(tool_name: str, arguments: dict) -> str:        
            # ...
            result = await session.call_tool(tool_name, arguments)
            return str(result.content[0].text)

async def call_anthropic_llm(user_query: str):
Introdução ao Model Context Protocol (MCP)

Configurar: formatar as ferramentas para o LLM

async def call_anthropic_llm(user_query: str):
    """Call Claude with MCP tools."""

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, # MCP uses JSON Schema format }
anthropic_tools.append(anthropic_tool)
Introdução ao Model Context Protocol (MCP)

1. Enviar a pergunta e as ferramentas ao LLM

from anthropic import AsyncAnthropic
async def call_anthropic_llm(user_query: str):
    # ...

client = AsyncAnthropic(api_key="<ANTHROPIC_API_TOKEN>")
response = await client.messages.create( model="claude-sonnet-4-6", max_tokens=1024, messages=[{"role": "user", "content": user_query}], tools=anthropic_tools, )
Introdução ao Model Context Protocol (MCP)

2. Verificar chamada de ferramenta

async def call_anthropic_llm(user_query: str):
    # ...

    if response.stop_reason == "tool_use":

tool_use = next(b for b in response.content if b.type == "tool_use") name = tool_use.name args = tool_use.input print(f"Model decidiu chamar: {name}") print(f"Argumentos: {args}\n")
Introdução ao Model Context Protocol (MCP)

3. Chamar a ferramenta | 4. Mensagem de retorno

async def call_anthropic_llm(user_query: str):
    # ...

    if response.stop_reason == "tool_use":
        # ...

result = await call_mcp_tool(name, args)
tool_result = {"type": "tool_result", "tool_use_id": tool_use.id, "content": result} 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": [tool_result]}, ], tools=anthropic_tools, )
Introdução ao Model Context Protocol (MCP)

5. Resposta final

async def call_anthropic_llm(user_query: str):
    # ...

    if response.stop_reason == "tool_use":
        # ...

final = next((b.text for b in followup.content if b.type == "text"), None) if final: print(f"\nAssistant: {final}") else: print("No follow-up message from model.")
else: text = next((b.text for b in response.content if b.type == "text"), "") print(f"\nAssistant: {text}") return str(text)
Introdução ao Model Context Protocol (MCP)

Testando a função

if __name__ == "__main__":
    asyncio.run(call_anthropic_llm("It is 9:50 AM in the UK in January. What time 
    is it in Lisbon, Portugal?"))
Assistant: It's 9:50 AM in Lisbon as well.
Introdução ao Model Context Protocol (MCP)

Fluxo de chamada de ferramenta

fct6.jpg

Introdução ao Model Context Protocol (MCP)

Vamos praticar!

Introdução ao Model Context Protocol (MCP)

Preparing Video For Download...