MCP dan LLM: Tools

Pengantar Model Context Protocol (MCP)

James Chapman

AI Curriculum Manager, DataCamp

Dari Tool MCP ke Tool LLM

 

Integrasi Tool ↔ LLM sangat bergantung pada LLM

  • LLM menerima tool dengan cara dan sintaks yang berbeda
  • Gunakan Claude via Anthropic Messages API
  • Fokus: proses dan transformasi

llm_mcp.png

Pengantar Model Context Protocol (MCP)

Alur Kerja Pemanggilan Tool

fct1.jpg

Pengantar Model Context Protocol (MCP)

Alur Kerja Pemanggilan Tool

fct2.jpg

Pengantar Model Context Protocol (MCP)

Alur Kerja Pemanggilan Tool

fct3.jpg

Pengantar Model Context Protocol (MCP)

Alur Kerja Pemanggilan Tool

fct4.jpg

Pengantar Model Context Protocol (MCP)

Alur Kerja Pemanggilan Tool

fct5.jpg

Pengantar Model Context Protocol (MCP)

Alur Kerja Pemanggilan Tool

fct6.jpg

Pengantar Model Context Protocol (MCP)

Server 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")
Pengantar Model Context Protocol (MCP)

Perluas Kode Klien

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

Setup: Format Tool untuk 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)
Pengantar Model Context Protocol (MCP)

1. Kirim Kueri dan Tool ke 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, )
Pengantar Model Context Protocol (MCP)

2. Periksa Pemanggilan Tool

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

3. Panggil Tool | 4. Pesan Tindak Lanjut

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

5. Respons Akhir

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

Uji Fungsinya

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

Alur Kerja Pemanggilan Tool

fct6.jpg

Pengantar Model Context Protocol (MCP)

Ayo berlatih!

Pengantar Model Context Protocol (MCP)

Preparing Video For Download...