MCP i LLM: narzędzia

Wprowadzenie do Model Context Protocol (MCP)

James Chapman

AI Curriculum Manager, DataCamp

Narzędzia MCP jako narzędzia LLM

 

Integracja narzędzi z LLM zależy od konkretnego modelu

  • LLM przyjmują narzędzia w różny sposób i z różną składnią
  • Używamy Claude przez Anthropic Messages API
  • Fokus: procesy i transformacje

llm_mcp.png

Wprowadzenie do Model Context Protocol (MCP)

Przepływ wywołania narzędzia

fct1.jpg

Wprowadzenie do Model Context Protocol (MCP)

Przepływ wywołania narzędzia

fct2.jpg

Wprowadzenie do Model Context Protocol (MCP)

Przepływ wywołania narzędzia

fct3.jpg

Wprowadzenie do Model Context Protocol (MCP)

Przepływ wywołania narzędzia

fct4.jpg

Wprowadzenie do Model Context Protocol (MCP)

Przepływ wywołania narzędzia

fct5.jpg

Wprowadzenie do Model Context Protocol (MCP)

Przepływ wywołania narzędzia

fct6.jpg

Wprowadzenie do Model Context Protocol (MCP)

Serwer 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")
Wprowadzenie do Model Context Protocol (MCP)

Rozszerzenie kodu 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):
Wprowadzenie do Model Context Protocol (MCP)

Konfiguracja: formatowanie narzędzi dla 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)
Wprowadzenie do Model Context Protocol (MCP)

1. Wysłanie zapytania i narzędzi 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, )
Wprowadzenie do Model Context Protocol (MCP)

2. Sprawdzanie wywołania narzędzia

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")
Wprowadzenie do Model Context Protocol (MCP)

3. Wywołanie narzędzia | 4. Wiadomość uzupełniająca

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, )
Wprowadzenie do Model Context Protocol (MCP)

5. Końcowa odpowiedź

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)
Wprowadzenie do Model Context Protocol (MCP)

Testowanie funkcji

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.
Wprowadzenie do Model Context Protocol (MCP)

Przepływ wywołania narzędzia

fct6.jpg

Wprowadzenie do Model Context Protocol (MCP)

Czas na ćwiczenia!

Wprowadzenie do Model Context Protocol (MCP)

Preparing Video For Download...