MCP a LLM: Nástroje

Introduction to Model Context Protocol (MCP)

James Chapman

AI Curriculum Manager, DataCamp

Nástroje MCP jako nástroje LLM

 

Integrace nástroje s LLM závisí na konkrétním LLM

  • LLM přijímají nástroje různými způsoby a s různou syntaxí
  • Použijeme Claude přes Anthropic Messages API
  • Zaměření: procesy a transformace

llm_mcp.png

Introduction to Model Context Protocol (MCP)

Pracovní postup volání nástrojů

fct1.jpg

Introduction to Model Context Protocol (MCP)

Pracovní postup volání nástrojů

fct2.jpg

Introduction to Model Context Protocol (MCP)

Pracovní postup volání nástrojů

fct3.jpg

Introduction to Model Context Protocol (MCP)

Pracovní postup volání nástrojů

fct4.jpg

Introduction to Model Context Protocol (MCP)

Pracovní postup volání nástrojů

fct5.jpg

Introduction to Model Context Protocol (MCP)

Pracovní postup volání nástrojů

fct6.jpg

Introduction to 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")
Introduction to Model Context Protocol (MCP)

Rozšíření kódu klienta

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):
Introduction to Model Context Protocol (MCP)

Nastavení: Formátování nástrojů pro 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)
Introduction to Model Context Protocol (MCP)

1. Odeslání dotazu a nástrojů do 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, )
Introduction to Model Context Protocol (MCP)

2. Kontrola volání nástroje

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")
Introduction to Model Context Protocol (MCP)

3. Volání nástroje | 4. Navazující zpráva

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, )
Introduction to Model Context Protocol (MCP)

5. Závěrečná odpověď

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)
Introduction to Model Context Protocol (MCP)

Testování funkce

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.
Introduction to Model Context Protocol (MCP)

Pracovní postup volání nástrojů

fct6.jpg

Introduction to Model Context Protocol (MCP)

Pojďme procvičovat!

Introduction to Model Context Protocol (MCP)

Preparing Video For Download...