Acest articol explorează modul de utilizare al unui server Model Context Protocol (MCP) personalizat împreună cu funcționalitatea de apelare a funcțiilor Ollama pentru a contrui un agent AI complet local, capabil să apeleze instrumente externe (cum ar fi preluarea conținutului web sau prețurile acțiunilor).

Într-un moment în care inteligența artificială evoluează rapid, controlul asupra datelor și a modelelor devine crucial. Veți învăța cum MCP standardizează integrările instrumentelor, cum să definiți și să validați instrumente folosind Pydantic, cum să configurați Ollama pentru apelarea funcțiilor și cum să orchestrați interacțiuni complete end-to-end.
1. Introducere: MCP și Ollama
Model Context Protocol (MCP) este un standard deschis introdus de Anthropic, care permite modelelor lingvistice mari (LLM) să descopere și să invoce instrumente externe printr-o interfață uniformă de tip RPC. Acest lucru reduce complexitatea integrării și sporește securitatea. Ollama, pe de altă parte, oferă o modalitate simplă de a găzdui modele local, cum ar fi Llama 3, permițând inferența privată, offline, fără apeluri API către cloud.
Combinând un server MCP personalizat (construit cu SDK-ul Python oficial) și capacitățile de apelare a funcțiilor Ollama, obținem control complet asupra instrumentelor pe care agentul tău le poate utiliza, aplicăm scheme stricte de intrare/ieșire și realizăm interacțiuni AI rapide și eficiente din punct de vedere al costurilor pe propria infrastructură.
2. 2. Ce este MCP? – „Portul USB-C” pentru AI
MCP este adesea numit „portul USB-C” pentru aplicațiile AI. La fel cum USB-C standardizează conexiunile dispozitivelor, MCP standardizează modul în care modelele AI se conectează la instrumente și surse de date. În loc să scrieți conectori personalizați pentru fiecare nou serviciu, MCP permite clienților să descopere dinamic instrumentele disponibile și să le invoce cu parametri tipizați, îmbunătățind mentenabilitatea și limitele de securitate. Această standardizare simplifică enorm integrarea și gestionarea instrumentelor AI.
3. Construirea serverului MCP
Instalarea SDK-ului
Pentru a începe, trebuie să instalați SDK-ul Python oficial MCP:
pip install mcp-sdk
Această bibliotecă gestionează toate mesajele și evenimentele de ciclu de viață ale strângerii de mână MCP, permițându-vă să vă concentrați pe logica instrumentelor.
Pornirea unui server simplu
Creați un fișier `server.py` cu următorul conținut:
from mcp.sdk import FastMCPServer, ToolProvider, ToolRequest, ToolResponse
class FetchTool(ToolProvider):
name = "fetch"
description = "Fetch a webpage's text"
async def handle(self, req: ToolRequest) -> ToolResponse:
url = req.params["url"]
content = await fetch_url(url) # your fetch code
return ToolResponse(result=content)
async def main():
server = FastMCPServer(tools=[FetchTool()])
await server.serve(port=5000)
Aici, `FastMCPServer` pornește serverul și ascultă pe TCP sau STDIO, în timp ce fiecare `ToolProvider` definește o metodă de gestionare a instrumentului. FastMCP (bazat pe FastAPI) simplifică rutarea și concurența sub capotă.
Setarea intrărilor și ieșirilor
Definirea modelelor Pydantic pentru parametrii și răspunsurile instrumentelor asigură că clienții primesc metadate complete JSON Schema:
from pydantic import BaseModel
class FetchParams(BaseModel):
url: str
class FetchResponse(BaseModel):
result: str
Pydantic generează automat scheme JSON conforme cu Draft 2020–12 și OpenAPI 3.1.0, asigurând că serverul MCP publică exact ceea ce fiecare instrument se așteaptă.
Utilizarea `json_schema()` din Pydantic permite includerea schemelor în metadatele MCP și menținerea validării sincronizate.
4. Configurarea Ollama
Instalarea și descărcarea modelului AI
Instalați Ollama prin programul său de instalare, apoi descărcați modelul Llama 3.2:
ollama pull llama3.2
Aceasta descarcă elementele modelului pentru inferența locală (fără apeluri la internet), astfel încât permite menținerea confidențialității complete a datelor.
Modelul Llama 3.2 cu 3B parametri oferă performanțe bune în sarcinile de urmărire a instrucțiunilor și utilizare a instrumentelor.

Setarările pentru Ollama
În scriptul tău Python, se trec definițiile JSON-schema sau referințele directe ale funcțiilor ca instrumente pentru apelarea `ollama.chat()`:
import ollama
stock_tool = {
"name": "get_stock_price",
"description": "Get current stock price",
"parameters": {
"type": "object",
"required": ["symbol"],
"properties": {"symbol": {"type": "string"}}
},
}
response = ollama.chat(
model="llama3.2",
messages=[{"role": "user", "content": "Price of AAPL?"}],
tools=[stock_tool]
)
Ollama va returna orice obiecte `tool_call` necesare în răspuns, indicând când și cum să invoce instrumentele tale MCP.
Conectarea Ollama la serverul MCP
Clientul MCP trebuie setat pentru a face legătura către cererile `tool_call` ale Ollama ș:
from mcp.sdk import ClientSession, StdioServerParameters, stdio_client
import asyncio
async def main():
params = StdioServerParameters(command="python", args=["server.py"])
transport = await stdio_client(params)
session = await ClientSession(transport[0], transport[1])
await session.initialize()
resp = ollama.chat(...) # as above
for call in resp.message.tool_calls or []:
result = await session.call_tool(call.function.name, call.function.arguments)
# Reinvoke ollama.chat with the tool result to complete the answer
Aceasta asigură că fiecare `tool_call` este executat de serverul MCP, apoi reintrodus în Ollama pentru sinteza finală.
5. Concluzie: avantaje și dezavantaje
Combinând un server MCP personalizat și LLM-ul local Ollama, se obține control complet asupra instrumentelor, validare robustă a schemelor, performanță ridicată și confidențialitate strictă a datelor, toate fără taxe API recurente sau dependențe de cloud.
Acest model se poate extinde de la instrumente simple de preluare web și prețuri ale acțiunilor până la interogări complexe ale bazelor de date sau calcule specifice domeniului.
Avantakje
* Confidențialitate și control îmbunătățite ale datelor.
* Granițe de securitate mai puternice.
* Integrări standardizate.
* Extensibilitate și refolosire.
* Reducerea latenței și performanța îmbunătățită.
* Economii semnificative de costuri.
* Flexibilitate de personalizare și reglare fină.
Dezavantaje
* Complexitate crescută a integrării.
* Vulnerabilități de securitate potențiale.
* Cerințe ridicate de resurse.
* Provocări de întreținere și versiune.
* Ecosistem imatur.
Această abordare le oferă dezvoltatorilor și companiilor controlul asupra datelor lor, permițându-le să construiască aplicații AI securizate și eficiente.