MCP Tools (Unelte controlate de Model) în Model Context Protocol (MCP)

Primitiva MCP prin care serverul expune funcții executabile (interogări SQL, apeluri API, calcule, modificări de fișiere) pe care modelul AI le poate invoca autonom.

Specificație & cod MCP
// Definiția JSON Schema expusă de Server prin tools/list:
{
  "name": "cauta_factura",
  "description": "Caută o factură în ERP după CUI sau număr",
  "inputSchema": {
    "type": "object",
    "properties": { "cui": { "type": "string" } },
    "required": ["cui"]
  }
}

Descriere & Utilizare

În specificația MCP, Tools (Uneltele) sunt primitive controlate de model (Model-controlled): serverul le publică lista și schema de parametri, iar LLM-ul decide autonom în timpul conversației când este momentul să apeleze o unealtă pentru a rezolva cererea utilizatorului.

Spre deosebire de Resources (care sunt doar pentru citire pasivă), o unealtă Tool poate efectua calcule dinamice, interogări filtrate sau acțiuni cu efecte secundare (crearea unui tichet în Jira, trimiterea unui email, rularea unui test).

Fiecare unealtă este definită prin trei elemente obligatorii: un identificator unic (name), o descriere detaliată pentru model (description) și o schemă de validare a argumentelor (inputSchema în format JSON Schema).

Cum să o reții ușor

💡 Dacă Resources sunt cărțile de pe raft pe care le poți citi, Tools sunt butoanele de pe panoul de comandă pe care AI-ul le poate apăsa pentru a executa o acțiune.

Opțiuni și parametri tehnici

  • tools/list: metoda JSON-RPC prin care clientul obține catalogul tuturor uneltelor disponibile pe server.
  • tools/call: metoda prin care clientul trimite numele uneltei și obiectul arguments completat de model.
  • annotations (readOnlyHint / destructiveHint): metadate prin care serverul informează Host-ul dacă unealta doar citește date (sigură) sau șterge/modifică date (necesită confirmarea utilizatorului).
  • isError: true: flag în răspunsul uneltei care îi permite modelului să vadă eroarea și să își corecteze singur apelul.

Exemple practice și cazuri de utilizare

  • Unealtă de interogare read-only: verifica_stoc_produs(cod_sku: str) — poate fi aprobată automat de Host.
  • Unealtă cu efect extern: emite_factura_smartbill(client_id: int, produse: list) — Host-ul afișează fereastră de confirmare umană înainte de execuție.
  • Returnare conținut bogat: o unealtă MCP poate returna în lista content atât blocuri de tip text, cât și image (base64) sau resource.

Sfaturi de configurare & capcane

Când o unealtă întâmpină o eroare de validare (de exemplu, CUI inexistent), returnează mesajul explicativ în content cu isError: true în loc să oprești procesul serverului — astfel LLM-ul își poate reforma singur cererea.

Comenzi și ghiduri înrudite