ЁЯз░ рдзрдбрд╛ 03 тАФ рддреАрди primitives: tools, resources, prompts
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 8 рдкреИрдХреА рдзрдбрд╛ 03 ┬╖ рдорд╛рдЧреЗ: lesson-02-architecture ┬╖ рдкреБрдвреЗ: lesson-04-the-wire
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рдзрдбреЗ 01тАУ02, рдЖрдгрд┐ server рджреЗрдК рд╢рдХрддреЛ рдЕрд╢рд╛ рддреАрди рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ рдЧреЛрд╖реНрдЯреА тАФ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдХреЗрд╡реНрд╣рд╛ рд╡рд╛рдкрд░рд╛рдпрдЪреА рддреЗ рдХреЛрдг рдард░рд╡рддреЗ.
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
рдЙрдкрдХрд░рдг рдЖрдкрд▓реНрдпрд╛ рджреЗрдгрдЧреНрдпрд╛ рддреАрди рд▓реЗрдмрд▓ рд▓рд╛рд╡рд▓реЗрд▓реНрдпрд╛ рдХрдкреНрдкреНрдпрд╛рдВрд╡рд░ рдЬрд╛рд╣реАрд░ рдХрд░рддреЗ:
- ЁЯз░ Tools тАФ "рд╡рд┐рджреНрдпрд╛рд░реНрдерд┐рдиреАрд╕рд╛рдареА рдореА рдЬреНрдпрд╛ рдЧреЛрд╖реНрдЯреА рдХрд░реВ рд╢рдХрддреЛ." Inputs рдЕрд╕рд▓реЗрд▓реНрдпрд╛
рдХреГрддреА:
lookup_grade(student),query_db(sql),send_email(...). рддреНрдпрд╛ рдХреЗрд╡реНрд╣рд╛ call рдХрд░рд╛рдпрдЪреНрдпрд╛ рддреЗ MODEL рдард░рд╡рддреЛ (host рдЪреНрдпрд╛ рдкрд░рд╡рд╛рдирдЧреАрдиреЗ тАФ L02!). рдЖрдЬрдЪреЗ 90% servers рдпрд╛рдЪ рдХрдкреНрдкреНрдпрд╛рдиреЗ рд╕реБрд░реБрд╡рд╛рдд рдХрд░рддрд╛рдд, рдЖрдгрд┐ рдЖрдкрд▓рд╛ school server рдлрдХреНрдд рд╣рд╛рдЪ рдХрдкреНрдкрд╛ рднрд░рддреЛ. - ЁЯУБ Resources тАФ "рдорд╛рдЭреНрдпрд╛рдХрдбреВрди рддреБрдореНрд╣реА рд╡рд╛рдЪреВ рд╢рдХрддрд╛ рдЕрд╢рд╛ рдЧреЛрд╖реНрдЯреА." рдкрддреНрддреЗ рдЕрд╕рд▓реЗрд▓рд╛ context: рдПрдХ file, database рдордзреАрд▓ рдПрдХ record, рдПрдХ log. рдмрд╛рдХрд╛рд╡рд░ рдХрд╛рдп рдЬреЛрдбрд╛рдпрдЪреЗ рддреЗ HOST/APP рдард░рд╡рддреЗ (AI рдХреЛрд░реНрд╕ L08) тАФ рдЬрд╕реЗ рд╡рд░реНрдЧ рд╕реБрд░реВ рд╣реЛрдгреНрдпрд╛рдкреВрд░реНрд╡реА рд╡рд┐рджреНрдпрд╛рд░реНрдерд┐рдиреАрдЪреНрдпрд╛ рдмрд╛рдХрд╛рд╡рд░ рдХреЛрдгрддреА handouts рдареЗрд╡рд╛рдпрдЪреА рддреЗ рд╢рд┐рдХреНрд╖рд┐рдХрд╛ рдирд┐рд╡рдбрддреЗ.
- ЁЯУЬ Prompts тАФ "рдореА рд╕реБрдЪрд╡рддреЛ рддреНрдпрд╛ рдХреГрддреА-рдкрджреНрдзрддреА." Server рд╕реЛрдмрдд рдпреЗрдгрд╛рд░реЗ рдЖрдзреАрдЪ рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ prompt templates: "ticket рдЪрд╛ рд╕рд╛рд░рд╛рдВрд╢ рдЕрд╕рд╛ рдХрд░рд╛". рддреЗ USER рдирд┐рд╡рдбрддреЛ (slash-commands, menu items) тАФ рдЬрд╕реЗ рдЙрдкрдХрд░рдгрд╛рдЪреНрдпрд╛ рдирд┐рд░реНрдорд╛рддреНрдпрд╛рдиреЗ рдбрдмреНрдпрд╛рдд рдареЗрд╡рд▓реЗрд▓реНрдпрд╛ worksheets.
рдкреНрд░рддреНрдпреЗрдХреА рдПрдХ рдирд┐рд░реНрдгрдп: modelтЖТtools, appтЖТresources, userтЖТprompts. рд╣реЗрдЪ рд╕рдВрдкреВрд░реНрдг рд╡рд░реНрдЧреАрдХрд░рдг тАФ рджреЛрдирджрд╛ рдореНрд╣рдгрд╛ рдЖрдгрд┐ servers рдмрдирд╡рдгрд╛рд▒реНрдпрд╛ рдмрд╣реБрддреЗрдХ рд▓реЛрдХрд╛рдВрдкреЗрдХреНрд╖рд╛ рддреБрдореНрд╣рд╛рд▓рд╛ MCP рдЬрд╛рд╕реНрдд рдХрд│реЗрд▓. ЁЯШД
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart TB
subgraph server["ЁЯФм what a server offers"]
tools["ЁЯз░ TOOLS - actions with inputs<br/>lookup_grade ┬╖ add_homework"]
res["ЁЯУБ RESOURCES - readable context<br/>file://report.pdf ┬╖ db://students/3A"]
prompts["ЁЯУЬ PROMPTS - suggested recipes<br/>'/summarize-ticket'"]
end
m["ЁЯза model decides<br/>(host permitting)"]
a["ЁЯПл app decides<br/>what's on the desk"]
u["ЁЯзС user picks<br/>from a menu"]
tools --- m
res --- a
prompts --- u
тЭУ рдХрд╛рдп
- Tool = рдирд╛рд╡ + рд╡рд░реНрдгрди + inputSchema (JSON Schema). рд╡рд░реНрдгрди MODEL рд╕рд╛рдареА рдЕрд╕рддреЗ тАФ рддреНрдпрд╛рд╡рд░реВрдирдЪ рд╡рд┐рджреНрдпрд╛рд░реНрдерд┐рдиреАрд▓рд╛ рдХрд│рддреЗ рдХреА рдЙрдкрдХрд░рдг рдХреЗрд╡реНрд╣рд╛ рд╡рд╛рдкрд░рд╛рдпрдЪреЗ. рддреЗ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ docstring рд╕рд╛рд░рдЦреЗ рд▓рд┐рд╣рд╛; рдЕрд╕реНрдкрд╖реНрдЯ рд╡рд░реНрдгрди = рдХрдзреАрдЪ call рди рд╣реЛрдгрд╛рд░реЗ tools (рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рд╣реВрди рд╡рд╛рдИрдЯ, рдЪреБрдХреАрдЪреЗ call рд╣реЛрдгрд╛рд░реЗ).
- Resource = URI + content. Hosts рдмрджрд▓рд╛рдВрд╕рд╛рдареА subscribe рдХрд░реВ рд╢рдХрддрд╛рдд. "рдХреГрддреА" рдирд╡реНрд╣реЗ, "рдЬреЛрдбрддрд╛ рдпреЗрдгрд╛рд░рд╛ context" рдЕрд╕рд╛ рд╡рд┐рдЪрд╛рд░ рдХрд░рд╛.
- Prompt = arguments рдЕрд╕рд▓реЗрд▓реЗ рдирд╛рд╡ рджрд┐рд▓реЗрд▓реЗ template, messages рдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рд╣реЛрдгрд╛рд░реЗ. Team рдЪреЗ workflows рдПрдХрд╕рд╛рд░рдЦреЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреНрдпрд╛рдЪреА рдХрд┐рдВрдордд рдХрдореА рд▓реЗрдЦрд▓реА рдЬрд╛рддреЗ.
- Servers рдЖрдкрдг рдХреЛрдгрддреЗ рдХрдкреНрдкреЗ рднрд░рддреЛ рддреЗ рддреНрдпрд╛рдВрдЪреНрдпрд╛ capabilities рдордзреНрдпреЗ рдЬрд╛рд╣реАрд░ рдХрд░рддрд╛рдд,
рдЬреНрдпрд╛рдВрдЪреЗ рдЙрддреНрддрд░
server/discoverрджреЗрддреЛ (рдзрдбрд╛ 04) тАФ рдЖрдкрд▓рд╛ server{"tools": {}}рдореНрд╣рдгрддреЛ рдЖрдгрд┐ рдмрд╛рдХреА рдХрд╛рд╣реА рдирд╛рд╣реА, рдЬреЗ рдкреНрд░рд╛рдорд╛рдгрд┐рдХ рдЖрдгрд┐ рдпреЛрдЧреНрдп рдЖрд╣реЗ.
рдХреЛрдг рд╕реБрд░реВ рдХрд░рддреЛ, рдХреЛрдг рд╡рд╛рдкрд░рддреЛ тАФ рддреАрди рдХрдкреНрдкреНрдпрд╛рдВрд╕рд╛рдареА рдПрдХ рддрдХреНрддрд╛:
| рдХрдкреНрдкрд╛ | рдХреЛрдг рд╕реБрд░реВ рдХрд░рддреЛ | рдХреЛрдг рд╡рд╛рдкрд░рддреЛ | Wire verbs |
|---|---|---|---|
| ЁЯз░ tools | model рд╕реБрдЪрд╡рддреЛ (host рдЪреНрдпрд╛ рдкрд░рд╡рд╛рдирдЧреАрдиреЗ) | model тАФ result тЖТ рдмрд╛рдХ | tools/list, tools/call |
| ЁЯУБ resources | host/app рдЬреЛрдбрддреЗ | model тАФ рдмрд╛рдХрд╛рд╡рд░рдЪрд╛ context | resources/list, resources/read |
| ЁЯУЬ prompts | user рдирд┐рд╡рдбрддреЛ (menu, slash-command) | model / app | prompts/list, prompts/get |
ЁЯдФ рдХрд╛
Teams рд╕рдЧрд│реЗрдЪ tools рдордзреНрдпреЗ рдХреЛрдВрдмреВрди servers рдЪреА рд░рдЪрдирд╛ рдЪреБрдХрд╡рддрд╛рдд ("read_file рд╣рд╛ tool!" тАФ рдХрдзреА рдХрдзреА рдмрд░реЛрдмрд░, рдкрдг context рдЪреЗ рдирд┐рдпрдВрддреНрд░рдг APP рдХрдбреЗ рдЕрд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ рдЕрд╕реЗрд▓, рддрд░ рддреЛ resource рдЖрд╣реЗ). рдкреНрд░рддреНрдпреЗрдХ рдХрдкреНрдкреНрдпрд╛рд╕рд╛рдареА рдХреЛрдг рдард░рд╡рддреЛ тАФ model/app/user тАФ рд╣реЗ рдЬрд╛рдгрдгреЗ рдореНрд╣рдгрдЬреЗ рд░рдЪрдиреЗрдЪрд╛ рд╣реЛрдХрд╛рдпрдВрддреНрд░. рддреЛ security рдЪрд╛рд╣реА рд╣реЛрдХрд╛рдпрдВрддреНрд░ рдЖрд╣реЗ: tools рдХреГрддреА рдХрд░рддрд╛рдд, рдореНрд╣рдгреВрди tools рдирд╛ guardrails рдорд┐рд│рддрд╛рдд (L05); resources рд╡рд╛рдЪрддрд╛рдд, рдореНрд╣рдгреВрди рддреНрдпрд╛рдВрдЪреА privacy review рд╣реЛрддреЗ.
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛
python3 client/mini_client.py # part 2 prints the tools shelf
рддреАрди tool рд╡рд░реНрдгрдиреЗ рдореЛрдареНрдпрд╛рдиреЗ рд╡рд╛рдЪрд╛. рдордЧ рдХрд╛рдЧрджрд╛рд╡рд░, рдЖрдкрд▓реНрдпрд╛ school server рдЪреА рдиреАрдЯ рднрд░рд▓реЗрд▓реА
рд░рдЪрдирд╛ рдХрд░рд╛: рдпрд╛рдВрдкреИрдХреА рдХреЛрдгрддреЗ рдХреЛрдгрддреНрдпрд╛ рдХрдкреНрдкреНрдпрд╛рд╡рд░ рдЬрд╛рддреЗ?
3A рдЪреЗ grade report card (resource тАФ app рддреЗ рдЬреЛрдбрддреЗ), "grades рдмрджреНрджрд▓ рдкрд╛рд▓рдХрд╛рдВрдирд╛ email
рд▓рд┐рд╣рд╛" template (prompt тАФ user рддреЗ рдирд┐рд╡рдбрддреЛ),
add_homework (tool тАФ model рдХреГрддреА рдХрд░рддреЛ, host рдЦрд╛рддреНрд░реА рдХрд░рддреЛ). рдЖрддрд╛
school_server.py рдЪреА TOOLS рдпрд╛рджреА рддрдкрд╛рд╕рд╛ тАФ рддреА рд╡рд╛рдврд╡рд▓реА рддрд░
resources/list рдореНрд╣рдгреВрди рддреБрдореНрд╣реА рдХрд╛рдп рдЬреЛрдбрд╛рд▓? (рдзрдбрд╛ 06 рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗ рдХрд░реВрди рджрд╛рдЦрд╡рд╛рдпрдЪреЗ
рдЖрд╡реНрд╣рд╛рди рджреЗрддреЛ.)
тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ
Scripted run рдЪрд╛ рднрд╛рдЧ 2 рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡рд░реНрдгрдирд╛рдВрд╕рд╣ рдиреЗрдордХреЗ рддреАрди tools рджрд╛рдЦрд╡рддреЛ; рднрд╛рдЧ 1 (server/discover) рдиреЗ stocks: tools рд╕рд╛рдВрдЧрд┐рддрд▓реЗ тАФ resources рдХрд┐рдВрд╡рд╛ prompts рдирд╛рд╣реАрдд, server рдЪреНрдпрд╛ capabilities рд╢реА рдЬреБрд│рдгрд╛рд░реЗ.
ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ
рдХреЛрдг рдард░рд╡рддреЛ рдпрд╛рд╡рд░реВрди рддреБрдореНрд╣реА рдХреЛрдгрддреНрдпрд╛рд╣реА рдХреНрд╖рдорддреЗрдЪреЗ рд╡рд░реНрдЧреАрдХрд░рдг рдХрд░реВ рд╢рдХрддрд╛ тАФ model тЖТ tool, app тЖТ resource, user тЖТ prompt тАФ рдЖрдгрд┐ рдХрд╛рд╣реАрд╣реА call рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА server рдЪреЗ рдХрдкреНрдкреЗ рддреНрдпрд╛рдЪреНрдпрд╛ capabilities рд╡рд░реВрди рд╡рд╛рдЪреВ рд╢рдХрддрд╛.
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
- рд╕рдЧрд│реЗрдЪ tool рдмрдирд╡рдгреЗ тАФ рдмрд╛рдХрд╛рд╡рд░ рдХрд╛рдп рдЬрд╛рддреЗ рдпрд╛рдЪреЗ рдирд┐рдпрдВрддреНрд░рдг app рдХрдбреЗ рдЕрд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ рдЕрд╕реЗрд▓, рддрд░ рддреЛ resource рдЖрд╣реЗ
- tool рд╡рд░реНрдгрдиреЗ рдорд╛рдгрд╕рд╛рдВрд╕рд╛рдареА рд▓рд┐рд╣рд┐рдгреЗ тАФ рддреА model рд╡рд╛рдЪрддреЛ; рдЕрд╕реНрдкрд╖реНрдЯ рд╡рд░реНрдгрди рдореНрд╣рдгрдЬреЗ рдХрдзреАрдЪ call рди рд╣реЛрдгрд╛рд░реЗ tools
capabilitiesрд╣реЗ рд╡рдЪрди рдЖрд╣реЗ рд╣реЗ рд╡рд┐рд╕рд░рдгреЗ:toolsрдЬрд╛рд╣реАрд░ рдХрд░реВрдиtools/listрд▓рд╛ рдЙрддреНрддрд░ рди рджреЗрдгреЗ рдкреНрд░рддреНрдпреЗрдХ host рд▓рд╛ рдореЛрдбрддреЗ
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ: рдзрд╛рд░рджрд╛рд░ рд╡рд░реНрдгрдиреЗ рдЖрдгрд┐ рд╕рдореГрджреНрдз
inputSchema(enums, required fields) рдЕрд╕рд▓реЗрд▓реЗ servers рдмрд░реЛрдмрд░ call рд╣реЛрддрд╛рдд; model рд▓рд╛ рджрд┐рд╢рд╛ рджреЗрдгреНрдпрд╛рдЪрд╛ рд╣рд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА prompt engineering рдкреЗрдХреНрд╖рд╛ рд╕реНрд╡рд╕реНрдд рдорд╛рд░реНрдЧ рдЖрд╣реЗ. рд░рдЪрдиреЗрдЪрд╛ рд╡реЗрд│ plumbing рд╡рд░ рдирд╡реНрд╣реЗ, рдХрдкреНрдкреНрдпрд╛рд╡рд░ рдЦрд░реНрдЪ рдХрд░рд╛.
тПня╕П рдкреБрдвреЗ
рдЖрддрд╛ рдЦрд░реЗ bytes рд╡рд╛рдЪрд╛рдпрдЪреА рд╡реЗрд│: badge, discovery рдЖрдгрд┐ calls тАФ wire, рдПрдХрд╛ sequence рдЖрдХреГрддреАрдЪреНрдпрд╛ рд░реВрдкрд╛рдд рдЬреА рддреБрдореНрд╣реА рдХрд╛рдпрдо рдУрд│рдЦрд╛рд▓.
git checkout lesson-04-the-wire