MCP och LLM:er: Verktyg

Introduktion till Model Context Protocol (MCP)

James Chapman

AI Curriculum Manager, DataCamp

MCP-verktyg till LLM-verktyg

 

Integreringen av verktyg och LLM är starkt LLM-beroende

  • LLM:er accepterar verktyg på olika sätt och med olika syntax
  • Använd Claude via Anthropics Messages API
  • Fokus: processer och transformationer

llm_mcp.png

Introduktion till Model Context Protocol (MCP)

Arbetsflödet för verktygssanrop

fct1.jpg

Introduktion till Model Context Protocol (MCP)

Arbetsflödet för verktygssanrop

fct2.jpg

Introduktion till Model Context Protocol (MCP)

Arbetsflödet för verktygssanrop

fct3.jpg

Introduktion till Model Context Protocol (MCP)

Arbetsflödet för verktygssanrop

fct4.jpg

Introduktion till Model Context Protocol (MCP)

Arbetsflödet för verktygssanrop

fct5.jpg

Introduktion till Model Context Protocol (MCP)

Arbetsflödet för verktygssanrop

fct6.jpg

Introduktion till Model Context Protocol (MCP)

MCP-server: 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")
Introduktion till Model Context Protocol (MCP)

Utöka klientkoden

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):
Introduktion till Model Context Protocol (MCP)

Förberedelse: Formatera verktygen för LLM:en

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)
Introduktion till Model Context Protocol (MCP)

1. Skicka frågan och verktygen till LLM:en

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, )
Introduktion till Model Context Protocol (MCP)

2. Kontrollera ett verktygssanrop

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 decided to call: {name}") print(f"Arguments: {args}\n")
Introduktion till Model Context Protocol (MCP)

3. Anropa verktyget | 4. Uppföljningsmeddelandet

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, )
Introduktion till Model Context Protocol (MCP)

5. Det slutliga svaret

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)
Introduktion till Model Context Protocol (MCP)

Testa funktionen

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.
Introduktion till Model Context Protocol (MCP)

Arbetsflödet för verktygssanrop

fct6.jpg

Introduktion till Model Context Protocol (MCP)

Laten we oefenen!

Introduktion till Model Context Protocol (MCP)

Preparing Video For Download...