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ă
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
- Implementează contractul pe fixture și testează input lipsă, necunoscut și valid.
- Notează intrarea, sursa și rezultatul așteptat înainte să rulezi experimentul. Folosește doar datele fictive din exemplu.
- 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.
- Repetă cazul după eliminarea unei informații necesare sau după o intrare ambiguă. Verifică dacă sistemul cere clarificare, se oprește sau inventează.
- 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