Construirea unui server MCP minimal

Un server minimal expune o capabilitate îngustă, cu argumente și rezultat predictibile.

Ce vei învăța

  • Explici: host, client și server
  • Aplici ideea într-un exemplu: Construirea unui server MCP minimal
  • Recunoști limitele și verifici rezultatul exercițiului

Un server minimal expune o capabilitate îngustă, cu argumente și rezultat predictibile. Începem cu stoc fictiv și fără modificări de date.

Acesta este un laborator conceptual sau extern. Nu presupune că aplicația oferă toate controalele descrise.

Cum funcționează, pas cu pas

Handler demonstrativ și testare

Handlerul demonstrativ este inclus mai jos și folosește numai date fictive. Pentru un server MCP real, înregistrează funcția cu SDK-ul ales și transportul potrivit, apoi testează discovery și calls cu un client compatibil. stdio este potrivit pentru procese locale; Streamable HTTP pentru un endpoint remote. Compatibilitatea cu SSE vechi sau revizii noi trebuie verificată explicit.

const stock = new Map([['LX-240', 3], ['P-12', 5], ['A-7', 2]]);

function getProductStock(input) {
    if (!input || typeof input.sku !== 'string' || !input.sku.trim())
        throw new TypeError('A nonempty sku is required.');
    const sku = input.sku.trim();
    return stock.has(sku)
        ? { status: 'found', sku, quantity: stock.get(sku), synthetic: true }
        : { status: 'not_found', sku, synthetic: true };
}

console.log(getProductStock({ sku: 'LX-240' }));
// { status: 'found', sku: 'LX-240', quantity: 3, synthetic: true }

Harta vizuală

Construirea unui server MCP minimal Urmărește săgețile continue pentru fluxul principal. Săgețile albastre punctate furnizează date sau context; cele roz punctate arată feedback sau rezultate care revin. Culorile și formele disting modelele, stocările, deciziile și rezultatele. Relații: Client MCP → Server MCP; Server MCP → Validează argumente și permisiuni; Validează argumente și permisiuni → Handler-ul uneltei; Handler-ul uneltei → Date fictive de stoc; Date fictive de stoc → Rezultatele uneltelor; Rezultatele uneltelor → Teste în Playground; Teste în Playground → Verificare umană; Schema de intrare / ieșire → Validează argumente și permisiuni; Transport și autentificare → Server MCP; Set de evaluare → Teste în Playground. M04 · Hartă de relații Construirea unui server MCP minimal Procesare Client MCP Date Schema de intrare / ieșire Decizie / control Transport și autentificare Unealtă / serviciu Server MCP Decizie / control Validează argumente și permisiuni Procesare Handler-ul uneltei Stocare / index Date fictive de stoc Date Rezultatele uneltelor Stocare / index Set de evaluare Procesare Teste în Playground Decizie / control Verificare umană Flux principal Date și context Feedback și revenire

Urmărește săgețile continue pentru fluxul principal. Săgețile albastre punctate furnizează date sau context; cele roz punctate arată feedback sau rezultate care revin. Culorile și formele disting modelele, stocările, deciziile și rezultatele. Pe ecrane mici, derulează orizontal pentru a urmări întreaga diagramă.

Un exemplu complet

get_product_stock acceptă sku text. LX-240 întoarce quantity=3; SKU necunoscut întoarce not_found, nu stoc zero. Un server real validează și dreptul utilizatorului la catalog.

{"name":"get_product_stock","description":"Read fictional stock; never reserve it","inputSchema":{"type":"object","properties":{"sku":{"type":"string","minLength":1}},"required":["sku"],"additionalProperties":false}}

Încearcă tu

  1. Implementează contractul pe fixture și testează input lipsă, necunoscut și valid.
  2. Notează intrarea, sursa și rezultatul așteptat înainte să rulezi experimentul. Folosește doar datele fictive din exemplu.
  3. Urmărește etapele din diagramă. La fiecare pas scrie ce informație primește și ce produce; nu confunda rezultatul intermediar cu rezultatul final.
  4. Repetă cazul după eliminarea unei informații necesare sau după o intrare ambiguă. Verifică dacă sistemul cere clarificare, se oprește sau inventează.
  5. Compară cu soluția comentată. Păstrează configurația, data, rezultatul și o explicație pentru orice diferență. Schimbă un singur lucru și retestează.

Soluție comentată

Contractul distinge găsit, negăsit și eroare; clientul poate decide fără ghicit. Pentru a considera exercițiul reușit, poți arăta legătura dintre intrare, etapele parcurse și rezultat. Dacă lipsesc date, un răspuns prudent este mai util decât o completare inventată. Nu compara doar stilul: verifică și condițiile, sursele și operațiile efectuate.

Când merită și ce poate merge prost

Pin-uiește SDK și revizia protocolului; exemplul de contract nu este handshake complet. Alege această abordare când îmbunătățește o nevoie măsurată. Păstrează o variantă simplă ca referință și compară rezultatele pe aceleași intrări. Un singur exemplu reușit nu stabilește fiabilitatea în toate situațiile.

Verifică ce ai înțeles

Un server cu tools oferă automat resources și prompts?

Nu. Capabilitățile sunt opționale și trebuie descoperite și verificate.

Cine execută apelul propus de model?

Aplicația sau serviciul gazdă, după validare. Modelul nu primește automat acces nelimitat.

Ce rezultat trebuie să obții în acest exercițiu?

Contractul distinge găsit, negăsit și eroare; clientul poate decide fără ghicit.

Cuvinte de ținut minte

  • MCP server: Serviciu care expune capabilități prin Model Context Protocol.
  • Tool calling: Cerere structurată de folosire a unei capabilități externe.
  • Autorizare / Authorization: Verificarea dreptului la o operație sau resursă.

Surse și următorul pas

Pentru pregătire: M03 — Securitatea și depanarea MCP