ЁЯНЭ рдзрдбрд╛ 01 тАФ MCP рдХрд╛: adapter рдЪреНрдпрд╛ рдбреНрд░реЙрд╡рд░рдЪреА рд╕рдорд╕реНрдпрд╛
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 8 рдкреИрдХреА рдзрдбрд╛ 01 ┬╖ рдкреБрдвреЗ: lesson-02-architecture
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
MCP рдЬреНрдпрд╛ рд╕рдорд╕реНрдпреЗрд▓рд╛ рд╕рдВрдкрд╡рдгреНрдпрд╛рд╕рд╛рдареА рдЬрдиреНрдорд╛рд▓рд╛ рдЖрд▓рд╛ рддреА рд╕рдорд╕реНрдпрд╛ тАФ рдЖрдгрд┐ protocol рдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХ рд░рдЪрдирд╛-рдирд┐рд░реНрдгрдп рд╕рдордЬрд╛рд╡рдгрд╛рд░реА рдПрдХрдЪ рдХрд▓реНрдкрдирд╛ (N├ЧM тЖТ N+M).
ЁЯОТ рд╕реБрд░реВ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА: рд╣рд╛ AI рдХреЛрд░реНрд╕рдЪреНрдпрд╛ рдмреЛрдирд╕ рдзрдбрд╛ 13 рдЪрд╛ рдЦреЛрд▓ рд╕рд╛рдереАрджрд╛рд░ рдЖрд╣реЗ, рдЖрдгрд┐ Agents рд╢рд╛рд│реЗрдЪреНрдпрд╛ рдЖрдзреА рдХрд┐рдВрд╡рд╛ рдирдВрддрд░ рдерд╛рдВрдмрдгреНрдпрд╛рд╕рд╛рдареА рдЪрд╛рдВрдЧрд▓рд╛ рдЯрдкреНрдкрд╛. рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд Python 3 рд▓рд╛рдЧрддреЗ. рд╣реЗ рдХрд╛рдп рдирд╛рд╣реА: production-SDK tutorial тАФ рд╣реА рд╢рд╛рд│рд╛ рдкреНрд░рддреНрдпреЗрдХ byte рджрд╛рдЦрд╡реВрди protocol (рдЖрд╡реГрддреНрддреА 2026-07-28, рд╕рдзреНрдпрд╛рдЪреА) рд╢рд┐рдХрд╡рддреЗ; рдЦрд▒реНрдпрд╛ servers рд╕рд╛рдареА рдЕрдзрд┐рдХреГрдд SDKs рд╡рд╛рдкрд░рд╛.
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
рд╢рд╛рд│реЗрдЪреА рд╡рд┐рдЬреНрдЮрд╛рди рдкреНрд░рдпреЛрдЧрд╢рд╛рд│рд╛ ЁЯФм: рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдХрд░рдг (microscope, рддрд░рд╛рдЬреВ, thermometer) рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рд╡рд┐рдЪрд┐рддреНрд░ cable рд╕реЛрдмрдд рдпреЗрддреЗ, рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧрд╛рдд рд╡реЗрдЧрд╡реЗрдЧрд│реЗ sockets рдЕрд╕рддрд╛рдд. рдЦреЛрд▓реА 3 рдордзреНрдпреЗ microscope? рдЦреЛрд▓реА-3-microscope рд╕рд╛рдареА рд╣рд╛рддрд╛рдиреЗ adapter рдмрдирд╡рд╛. рдирд╡рд╛ рддрд░рд╛рдЬреВ? рдкрд╛рдЪ рдЦреЛрд▓реНрдпрд╛ = рдЖрдгрдЦреА рдкрд╛рдЪ adapters.
N рдЦреЛрд▓реНрдпрд╛ ├Ч M рдЙрдкрдХрд░рдгреЗ = N├ЧM adapters. рд╕рдлрд╛рдИ рдХрд░реНрдордЪрд╛рд▒реНрдпрд╛рдЪрд╛ рдбреНрд░реЙрд╡рд░ рдореНрд╣рдгрдЬреЗ рдЧреБрдВрддрд▓реЗрд▓реНрдпрд╛ spaghetti рдЪрд╛ рдЧреБрдВрддрд╛. ЁЯНЭ рдЖрдгрд┐ рд╣реЗ рдХрд╛рд▓реНрдкрдирд┐рдХ рдирд╛рд╣реА тАФ MCP рдкреВрд░реНрд╡реА AI tooling рдЕрд╕реЗрдЪ рд╣реЛрддреЗ: IDE рд╕рд╛рдареА рддреБрдордЪреЗ GitHub integration, chatbot рд╕рд╛рдареА рдЖрдгрдЦреА рдПрдХ, рддреБрдордЪреНрдпрд╛ agent рд╕рд╛рдареА рддрд┐рд╕рд░реЗ. рддреАрдЪ рдХреНрд╖рдорддрд╛, рдкреНрд░рддреНрдпреЗрдХ app рд╕рд╛рдареА рдкреБрдиреНрд╣рд╛ рдмрдирд╡рд▓реЗрд▓реА, рдХрд╛рдпрдордЪреА.
рд╢рд╛рд│рд╛ (рдЖрдгрд┐ рдЙрджреНрдпреЛрдЧ) рдиреЗрд╣рдореА рдпрд╛рдЪ рдЙрдкрд╛рдпрд╛рд╡рд░ рдкреЛрд╣реЛрдЪрддрд╛рдд: socket рдЪреЗ рдорд╛рдирдХреАрдХрд░рдг рдХрд░рд╛ ЁЯФМ. рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдХрд░рдг рдорд╛рдирдХ plug рд╕реЛрдмрдд рдпреЗрддреЗ; рдкреНрд░рддреНрдпреЗрдХ рдЦреЛрд▓реАрдд рдорд╛рдирдХ рднрд┐рдВрддреАрд╡рд░рдЪреЗ socket рдЕрд╕рддреЗ. рдХреЛрдгрддреЗрд╣реА рдЙрдкрдХрд░рдг, рдХреЛрдгрддреАрд╣реА рдЦреЛрд▓реА: N+M.
MCP рдореНрд╣рдгрдЬреЗ AI рд╕рд╛рдареА рддреЗрдЪ socket: apps (hosts) рдирд╛ sockets рдорд┐рд│рддрд╛рдд, рдХреНрд╖рдорддрд╛рдВрдирд╛ (servers) plugs рдорд┐рд│рддрд╛рдд, рдЖрдгрд┐ рдпрд╛ repo рдордзреНрдпреЗ рдПрдХ рдЦрд░реА рдЪрд╛рд▓рдгрд╛рд░реА рдЬреЛрдбреА рдЖрд╣реЗ тАФ server/school_server.py рдЖрдгрд┐ client/mini_client.py тАФ рдЬреА рддреБрдореНрд╣реА рдзрдбрд╛ 07 рдкрд░реНрдпрдВрдд рдкреВрд░реНрдг рд╡рд╛рдЪрд╛рд▓. рдХреЛрдгрддреАрд╣реА рдЬрд╛рджреВ рдЙрд░рдгрд╛рд░ рдирд╛рд╣реА.
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart LR
subgraph before["ЁЯНЭ before: N├ЧM"]
a1["IDE тип GitHub adapter"]
a2["chatbot тип GitHub adapter"]
a3["agent тип GitHub adapter"]
a4["тАжevery pair, hand-built"]
end
subgraph after["ЁЯФМ after: N+M"]
h["hosts with standard sockets:<br/>IDE ┬╖ chatbot ┬╖ agent"]
s["servers with standard plugs:<br/>GitHub ┬╖ files ┬╖ your DB"]
h ---|"one protocol"| s
end
before -->|"standardize the socket"| after
тЭУ рдХрд╛рдп
- MCP (Model Context Protocol): AI applications рдирд╛ tools рдЖрдгрд┐ data рд╢реА рдЬреЛрдбрдгреНрдпрд╛рд╕рд╛рдареАрдЪреЗ рдЦреБрд▓реЗ standard (Anthropic, 2024 рдЪреНрдпрд╛ рд╢реЗрд╡рдЯреА; рд╕рдВрдкреВрд░реНрдг ecosystem рдиреЗ рд╕реНрд╡реАрдХрд╛рд░рд▓реЗрд▓реЗ). AI рд╕рд╛рдареА USB-C, рд╢рд╛рд│реЗрдЪреНрдпрд╛ socket рдЪреНрдпрд╛ рдкрджреНрдзрддреАрдиреЗ.
- рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░: integrations рд╡рд╛рдЯреВрди рдШреЗрддрд╛ рдпреЗрдгрд╛рд░реЗ рднрд╛рдЧ рдмрдирддрд╛рдд. рддреБрдордЪрд╛ database server рдПрдХрджрд╛рдЪ рд▓рд┐рд╣рд╛ тЖТ рддреЛ Claude Desktop, рддреБрдордЪрд╛ IDE рдЖрдгрд┐ рддреБрдордЪрд╛ custom agent рдпрд╛рдВрдордзреНрдпреЗ, рдХреЛрдгрддрд╛рд╣реА рдмрджрд▓ рди рдХрд░рддрд╛ рдЪрд╛рд▓рддреЛ.
- рдЗрддрд░ рд╢рд╛рд│рд╛рдВрдордзреВрди рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдЪ рдорд╛рд╣реАрдд рдЕрд╕рд▓реЗрд▓реА рдЗрддрд┐рд╣рд╛рд╕рд╛рдЪреА рдкреБрдирд░рд╛рд╡реГрддреНрддреА: containers рдиреА "software рдХрд╕реЗ рдкрд╛рдард╡рд╛рдпрдЪреЗ" рдпрд╛рдЪреЗ рдорд╛рдирдХреАрдХрд░рдг рдХреЗрд▓реЗ (Docker рдХреЛрд░реНрд╕), Kubernetes рдиреЗ "рддреЗ рдХрд╕реЗ рдЪрд╛рд▓рд╡рд╛рдпрдЪреЗ" рдпрд╛рдЪреЗ тАФ рдХрдВрдЯрд╛рд│рд╡рд╛рдгреЗ, рд╕рд╛рдорд╛рдпрд┐рдХ interfaces рд╣реЗрдЪ ecosystems рдШрдбрд╡рддрд╛рдд. MCP рд╣реЗ "AI рдЧреЛрд╖реНрдЯреАрдВрдкрд░реНрдпрдВрдд рдХрд╕рд╛ рдкреЛрд╣реЛрдЪрддреЛ" рдпрд╛рд╕рд╛рдареА рдХрд░рддреЛ.
ЁЯдФ рд╣рд╛ рдХреЛрд░реНрд╕ рдХрд╛ (AI рдХреЛрд░реНрд╕рдЪреНрдпрд╛ рдмреЛрдирд╕ рдзрдбреНрдпрд╛рдРрд╡рдЬреА)
AI рдХреЛрд░реНрд╕рдЪрд╛ рдзрдбрд╛ 13 рд╡рд░реВрди рджрд┐рд╕рдгрд╛рд░реЗ рджреГрд╢реНрдп рджреЗрддреЛ. рд╣реА рд╢рд╛рд│рд╛ рдЬрдорд┐рдиреАрд╡рд░ рдЙрддрд░рддреЗ: рдЦрд░реА architecture (L02), рддреАрди primitives (L03), byte-by-byte wire (L04), рдкреНрд░рд╛рдорд╛рдгрд┐рдХрдкрдгреЗ security (L05), рдордЧ рддреБрдореНрд╣реА рдЦрд░рд╛ server рдЖрдгрд┐ client рд╡рд╛рдЪрддрд╛ (L06тАУ07) рдЖрдгрд┐ sequence рдЖрдХреГрддреНрдпрд╛рдВрд╕рд╣ production рд╕рд╛рд░рдЦреЗ рдкрд╛рдЪ use cases рдЕрднреНрдпрд╛рд╕рддрд╛ (L08).
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛ (60 рд╕реЗрдХрдВрдж тАФ рд╕рдВрдкреВрд░реНрдг protocol, live)
python3 client/mini_client.py
рдкрд╛рд╣рд╛: рдУрд│рдЦ ЁЯкк (server/discover), рдПрдХ discovery ЁЯУЛ, рддреАрди tool calls ЁЯз░ тАФ рдкреНрд░рддреНрдпреЗрдХ JSON message рдЫрд╛рдкрд▓реЗрд▓рд╛, рдкреНрд░рддреНрдпреЗрдХ request рд╡рд░ рддреНрдпрд╛рдЪрд╛ _meta badge (рдЖрд╡реГрддреНрддреА 2026-07-28: handshake рдирд╛рд╣реА). рддреЛ рд╕рдВрд╡рд╛рдж рд╣рд╛рдЪ рдпрд╛ рдХреЛрд░реНрд╕рдЪрд╛ рд╕рдВрдкреВрд░реНрдг рд╡рд┐рд╖рдп рдЖрд╣реЗ. рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ (рдЫрд╛рдЯрд▓реЗрд▓реЗ):
тХРтХРтХР 1) introductions ЁЯкк тАФ server/discover (optional since 2026-07-28) тХРтХРтХР
тЖТ {"jsonrpc": "2.0", "id": 1, "method": "server/discover", "params": {"_meta": {"io.modelcontext тАж
тЖР {"jsonrpc": "2.0", "id": 1, "result": {"resultType": "complete", "supportedVersions": ["2026-0 тАж
ЁЯФм school-server v2.0.0 speaks ['2026-07-28'] ┬╖ stocks: tools
тХРтХРтХР 2) discovery ЁЯУЛ тАФ 'what do you offer?' тХРтХРтХРтХРтХРтХРтХРтХРтХРтХРтХРтХРтХРтХРтХРтХРтХР
тЖТ {"jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {"_meta": {"io.modelcontextproto тАж
тЖР {"jsonrpc": "2.0", "id": 2, "result": {"resultType": "complete", "tools": [{"name": "get_stude тАж
ЁЯз░ get_student_count: How many students are in a class (3A or 3B)?
ЁЯз░ lookup_grade: Look up one student's grade (read-only).
ЁЯз░ add_homework: Add a homework item (WRITES state тАФ hosts should confirm with the user!).
тХРтХРтХР 3) tool calls ЁЯз░ тАФ what an agent's loop would do тХРтХРтХРтХРтХРтХРтХР
тЖТ {"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "get_student_count", "a тАж
тЖР {"jsonrpc": "2.0", "id": 3, "result": {"resultType": "complete", "content": [{"type": "text", тАж
ЁЯУД lands on the desk: Class 3A has 3 students: aishwarya, katrina, dipika.
тЖТ {"jsonrpc": "2.0", "id": 4, "method": "tools/call", "params": {"name": "lookup_grade", "argume тАж
тЖР {"jsonrpc": "2.0", "id": 4, "result": {"resultType": "complete", "content": [{"type": "text", тАж
ЁЯУД lands on the desk: Katrina (3A) has grade A+.
тЖТ {"jsonrpc": "2.0", "id": 5, "method": "tools/call", "params": {"name": "add_homework", "argume тАж
тЖР {"jsonrpc": "2.0", "id": 5, "result": {"resultType": "complete", "content": [{"type": "text", тАж
ЁЯУД lands on the desk: Added тЬПя╕П тАФ homework list is now: [{"title": "read MCP lesson 05", "due": "Friday"}]
тХРтХРтХР done тАФ that was the ENTIRE protocol: three verbs and a badge ЁЯкк (no handshake since 2026-07-28) тХРтХРтХР
рдзрдбрд╛ 07 рдкрд░реНрдпрдВрдд рддреБрдореНрд╣реА рддреНрдпрд╛рдЪреНрдпрд╛ рджреЛрдиреНрд╣реА рдмрд╛рдЬреВ рдордирд╛рдд рд▓рд┐рд╣рд┐рд▓реЗрд▓реНрдпрд╛ рдЕрд╕рддреАрд▓.
тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ
python3 client/mini_client.py рддреАрди рд╡рд┐рднрд╛рдЧ рдЫрд╛рдкрддреЛ тАФ ЁЯкк рдУрд│рдЦ (server/discover), ЁЯУЛ discovery (рддреАрди tools рдЪреА рдпрд╛рджреА), ЁЯз░ рддреАрди tool calls тАФ рдкреНрд░рддреНрдпреЗрдХрд╛рдд рдПрдХ тЖТ request рдУрд│ рдЖрдгрд┐ рдПрдХ тЖР reply рдУрд│, рдЖрдгрд┐ рд╢реЗрд╡рдЯ done тАФ that was the ENTIRE protocol рдиреЗ рд╣реЛрддреЛ. Exit code 0, stack trace рдирд╛рд╣реА. рдЫрд╛рдЯрд▓реЗрд▓реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд output рдХрд░реВрди-рдкрд╛рд╣рд╛ рд╡рд┐рднрд╛рдЧрд╛рдд command рдЦрд╛рд▓реА рдЖрд╣реЗ.
ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ
Python 3 рд╢рд┐рд╡рд╛рдп рдХрд╛рд╣реАрд╣реА install рди рдХрд░рддрд╛ рддреБрдореНрд╣реА рдЦрд░рд╛ MCP server рдЖрдгрд┐ рдЦрд░рд╛ MCP host рдЪрд╛рд▓рд╡рд▓рд╛ тАФ socket рдореНрд╣рдгрдЬреЗ рдЬрд╛рджреВ рдирд╛рд╣реА, рддреНрдпрд╛ ~230 рдУрд│реА рдЖрд╣реЗрдд рдЬреНрдпрд╛ рддреБрдореНрд╣реА рд╡рд╛рдЪрдгрд╛рд░ рдЖрд╣рд╛рдд.
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
- client рджреБрд╕рд▒реНрдпрд╛ directory рдордзреВрди рдЪрд╛рд▓рд╡рдгреЗ тАФ рддреЛ repo root рдЪреНрдпрд╛ рд╕рд╛рдкреЗрдХреНрд╖
server/school_server.pyрд╕реБрд░реВ рдХрд░рддреЛ; рддреЛ repo root рдордзреВрдирдЪ рдЪрд╛рд▓рд╡рд╛ - рдЖрдзреА SDK install рдХрд░рдгреЗ тАФ рдЗрдереЗ рдХрд╢рд╛рд▓рд╛рд╣реА рддреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА; рд╣рд╛рдЪ рддрд░ рдореБрджреНрджрд╛ рдЖрд╣реЗ
- рдЬреБрдиреЗ tutorials handshake рджрд╛рдЦрд╡рддрд╛рдд рдореНрд╣рдгреВрди output рдордзреНрдпреЗ handshake рдЕрдкреЗрдХреНрд╖рд┐рдд рдзрд░рдгреЗ тАФ рдЖрд╡реГрддреНрддреА 2026-07-28 рдиреЗ рддреЛ рдХрд╛рдвреВрди рдЯрд╛рдХрд▓рд╛ (рдзрдбрд╛ 04)
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ: MCP рдЪреЗ рдореВрд▓реНрдп N+M рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░рд╛рдд рдЖрд╣реЗ: рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╖рдорддреЗрд╕рд╛рдареА рдПрдХ server, рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ host рдкреБрдиреНрд╣рд╛ рд╡рд╛рдкрд░рддреЛ. рдЬреЗ teams рддреЛ рдиреАрдЯ рд╕реНрд╡реАрдХрд╛рд░рддрд╛рдд рддреЗ servers рдирд╛ рдкреНрд░рддреНрдпреЗрдХ app рд╕рд╛рдареАрдЪрд╛ рдЪрд┐рдХрдЯ рдЧреЛрдВрдж рди рдорд╛рдирддрд╛ рд╕рд╛рдорд╛рдпрд┐рдХ infrastructure рдорд╛рдирддрд╛рдд тАФ versioned, reviewed, least-privilege.
тПня╕П рдкреБрдвреЗ
рдирдХреНрдХреА рдХреЛрдг рдХреЛрдгрд╛рд╢реА рдмреЛрд▓рддреЛ? Hosts, clients, servers тАФ рддреАрди рднреВрдорд┐рдХрд╛.
git checkout lesson-02-architecture