Практычныя прытамулкі: ваш сервер MCP запускаецца па застарэлых тэхнічных специфікацыях. Ось вона.
Практычныя прытамулкі: ваш сервер MCP запускаецца па застарэлых тэхнічных специфікацыях. Цікава інформацыя пра: контракты, пераканання та месцы для додавання коду для команд, якія викорыстоўваюць гэты патэрн.
Наступныя прытамакі восстанавліваюць практычны падход да тэмы «Я ваш сервер MCP працуе па застарелай спефікацыі. Ось як перейсці на новую за 20 хвілін». Акцэнт ставяцца на кантракты, пераконтроўкі і месца для коду, які можна проста заместіць, а не на мотывацыйныя аспекты. Калі працуеце на стадіі агляду, спачатку запісайце кантракт: неабяжныя вхідныя даны, сігнал успеху і тое, што вядзецца пад частковым невяскам. Такі список дапамагае залишыцца чыстым пад час будучых змян у кодзе. Валіце маленькія, тэставаныя елементы заместо величзіных скрыптав. Калі якісь крок не выйшоў, невяскама трэба паказаць конкретную адпаведальнасць, а не заплутаны ланцужок задач.
Чаму ўсунулі сесіі
Прычыны, чырванне якіх на стадзіі рэалізацыі, лепш усвядомляюцца, калі іх рассматрываць як вимерную плошчу. Запісайце адны ідеальны прыклад, адну справу з нявярнамасцю і прыметку пра адкатуванне, перш чым расширваць масштабы. Рассматрайце гэтае стадзію як кантракт межа вхіднымі даннымі та перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, задаце критэрыя успеху та не падзейцеся частым, непрыгледным завершэнням задання. Адкройце інструменты з вузькімі схемамі та чысткімі пазначэннямі побачных наследкав. Адпрацоўвальнікам неабходна знаты, якія вызовы мутуюць стан, перш чым вони автаматычна схваляюць іх.
5 змян, якія вам неабходна разумець
Этап «5 змян, які вам патрабуецца» працюе найэфектыўней, калі яго спрыяваць як мерыемую плошчу. Зафіксавайце адны ідеальны прыклад, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану перш чым расширваць масштабы. Запісвайце часы выканання і косты токеноў або запытак па боку функцыйнальных рэзультаатаў. Відразлівасць костоў з самага пачатку запобегае неспакойным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя среды. Адкройце інструменты з вузкімі схемамі і чысткімі пазначэннямі па боковых эфектах. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць іх.
1. Рукапрымкі і заголовкі сесіі з’явіліся
Процес абсарабкі і практыка працююць наяўней, калі іх спрыявае можласць вимеры. Перш чым расширваць масштаб, зафіксавайце адны ідеальны прыклад, адзін кейс неудачы і запіс пра вярнэнне да пачатковага стану. Храніце настройкі за межамі коду прыемліка. Файлы сераўнавання, базы секрэтных дадзеных і пазнакі функцый каляжуцца ў адным месцы, якое аператары можаць пераглядаць без неабяжнай чытанняў усіх элементаў системы. Адкройце інструменты з вузкімі схемамі та чытальнымі пазначэннямі побачных эфектаў. Хостам неабходна знаты, якія вызовы зменяюць стан дадзеных, перш чым яны автаматычна схваляюць ўпраўленні. Процес абсарабкі і практыка працююць наяўней, калі іх спрыявае можласць вимеры. Перш чым расширваць масштаб, зафіксавайце адны ідеальны прыклад, адзін кейс неудачы і запіс пра вярнэнне да пачатковага стану. Валіце маленькія, тэставальныя елементы замест вялікіх скрыптав. Калі якісь крок не выйшаў, прычына неудачы должна быць адносна конкрэтнай адпаведальнасці, а не сложнай сэткі крокаў.
POST /mcp HTTP/1.1
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: search
{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"search","arguments":{"q":"otters"},
"_meta":{"io.modelcontextprotocol/clientInfo":
{"name":"my-app",
"version":"1.0"}
}}}
2. Тепер два заголовкі ўмовныя
Для двух заголовкаў на гэтым этапе неабходна прадзефінаваць вхідныя даны, адпаведальную особу за выкананне крока і критэрыя завершэння перад змінайом коду. Аператары должны магчымае перзапускати крок з вядомай точкі контролю, не прабуючы спадарожваць схованы стан. Спрыяйце гэтаму этапу як даговору між вхіднымі данымі і перакананымі выходнымі рэзультатамі. Дайце назвы артыфактам, прадзефінаваць пераканання ў успеху і адмовіцеся ад тыхнай частковай рэалізацыі без паведамлення. Автентыфікуйцеся на в’язку і парадзефінавайце правы пры доступе да дадзей. Толькі токен-носіцель не ўтварае межы арендавання.
3. Адпаведныя адказы тепер можна кэшаваць
Для трэйнаў з 3 пунктамі неабходна спачатку адзначыць вхідныя даны, адпаведальнага за кожны крок і крэтыяры завершэння, прычаму змінюваць код. Аператары должны магчымае перзапускать крок з вядомай точкі контролю, не прабуючы вычысляць захаваны стан. Запісваюць час выконання і вартасць токена або запыту разам з функцыйнальнымі рэзултатамі. Відразы вартасці з самага пачатку запобегае неспакоўным рахункам, калі процес пераходзіць з дэмовай среды ў спяльнаныя сераўеры. Автентыфікуецца пры входзе і паўторна автарызуецца на роўні дадзенняў. Толькі токен-носіцель не є межай адпаведнае часткі системы.
4. Паглęбленая автарызацыя
Для 4-го ўскладненага стадію автарызацыі неабходна прадзефінаваць вхідныя даны, адпаведальную особу за кожны крок і крэтыніяя зупінкі пры перадзеўранні коду. Аператарыявальнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Конфігурацыю трэба знаходзіць за межамі коду прыкладнення. Файлы сераўіса, хранальнікі секрэтных дадзеных і флагі функцый належаць у аднам месца, якое аператарыявальнікі можаць пераглядаць, не чытаяўшы весь ланцуг задач. Автарызацыю трэба адбываць на воратах сістэмы, а практычную автарызацыю — на роўні дадзеных. Сам токен-носіцель не є межай адпаведальнасці. Для 4-го ўскладненага стадію автарызацыі неабходна прадзефінаваць вхідныя даны, адпаведальную особу за кожны крок і крэтыніяя зупінкі пры перадзеўранні коду. Аператарыявальнікі должны магчымае перзапускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Лепш выбіраць маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына нехарактэрыстыкі должна вказываць на адну адпаведальнасць, а не на заплутаны ланцуг задач.
5. Спісак застарэлых элементаў
Калі працуеце над стадзіяй 5 «Спісак застарэлых элементаў», спачатку запішыце умовы кантракту: неабходныя данні, сигнал успеху і тое, што выходзіць на падчасныя неудачы. Такі чэк-ліст дапамагае заставіць пазнейшыя змены коду быць чыстымі. Спрыятлівае ставленне да гэтай стадзіі значыць спрыятлівае ставленне да кантракту межу даннімі і перакананымі выходамі. Дайце назвы элементам, задаць правіла пераканання успеху і не падзеўляйцеся на падчасныя завершэння без адпаведных рэзультатаў. Запішыце назву інструмента, хэш параметраў, час адклікання і рэзультат кожнага вызову. Без такога лёгкага следу дэбагаванне можа зайняць гады.
Практычная міграцыя
Калі працюеце над стадзіяй «Практычная міграцыя», спачатку запісайце контракт: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список перакладоў заходзіць пазнейшыя змены коду чыстымі. Запісвайце час выканання і кост токена або запыту праза функцыйнальныя рэзултаты. Відразка коста з самага пачатку запобегае неспакоўным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя среды. Запішвайце назву інструмента, хэш аргументаў, час затрымкі і рэзултат кожнага вызову. Без такога лёгкага следу дэбагаванне агента губіць гады.
Мінуты 0–2: Адлучыце, чы робіць гэта сёння
Калі працюеце над стадзіяй «Мінута 0 2 – Аджыранне», спачатку запісайце «контракт»: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага абярання. Такій чэк-ліст дапамагае заставіць пазнейшыя змены коду быць чыстымі. Храніце настройкі параду ўнутры коду прыемленае. Файлы сераўіснага сэрвісу, хранальнікі секретных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжлівага чытання всей структуры. Запісвайце назву інструмента, хэш аргументаў, час затрымкі і рынак кожнага вызову. Без такога лёгкага следу дэбагаванне агента губіць гадзіны. Калі працюеце над стадзіяй «Мінута 0 2 – Аджыранне», спачатку запісайце «контракт»: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага абярання. Такій чэк-ліст дапамагае заставіць пазнейшыя змены коду быць чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптов. Калі які-небудзь крок абяраецца, прычына абярання должна вказываць на адну адпаведную абявенасць, а не на заплутаны ланцоўкі працы.
Мінута 2–5: Адчыненне SDK
Этап апдэйта „Мінута 2 5“ працюе найэфектывней, калі яго розглядаць як вимерную паверхню. Зафіксавце адна „золатая“ транскрыпцыя, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Разглядвайце гэты этап як кантракт межа вхіднымі даннымі і пераканаленымі выходнымі рэзультатамі. Даўце назвы артыфактам, задаце критэрыя успеху і не падзеўляйцеся частым, непূরным выкананнем задачы. Адкройце інструменты з вузкімі схемамі та чысткімі пазначэннямі побачных эфектаў. Адпаведальныя за эксплуатацыю должны знать, якія вызовы мутуюць стан, перш чым автаматычна схваліць іх.
pip install --upgrade "mcp>=2"
Мінута 5–10: Перэйменаваць клас
Этап перэіменавання за 5–10 хвілін працюе найэфективней, калі яго розглядаць як вимерную плошчу. Запісаце адна ідеальная версія, адзін прыклад неудачы і запіс працэй з вярненням да пачатковага стану пры розширэнні масштаба. Запісвайце часы выканання і косты токеноў або запытак праза функцыйнае рэзультат. Відразліва візуалізацыя костаў з’являецца рана, чаго дапамагае ухіліцца ад неспакойных рахункоў, калі процес пераходзіць з дэмовай среды ў спакульную. Адкрывайце інструменты з вузкімі схемамі і чысткімі пазначэннямі парадуктавых эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым вони автаматычна схваляюць іх.
# Before, on mcp 1.x
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("Demo")
# After, on mcp 2.x
from mcp.server.mcpserver import MCPServer
mcp = MCPServer("Demo")
# Wire types are snake_case now
result.isError # → result.is_error
tool.inputSchema # → tool.input_schema
# The error class matches the new capitalisation
except McpError: # → except MCPError:
10–15 хвілін: Адключыце механізм сесій
Этап Minute 10 15 Rip працюе найкраща, калі яго розглядаць як вимерную паверхню. Зберагчыце адны ідеальны прыклад роботы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Храніце настройкі парадульна ад коду прыемліка. Файлы сераўнавання, хранальнікі секрэтных данных і пазнакі функцый крануцца ў адным месцы, якое аператары можаць пераглядаць без неабяжнага чытання всіх элементаў системы. Адкрывайце інструменты з вузкімі схемамі та чытальнымі пазнакамі побачных эфектаў. Хостам неабходна знаты, якія вызовы мутуюць стан, перш чым яны автаматычна схваляюць ўпраўленні. Этап Minute 10 15 Rip працюе найкраща, калі яго розглядаць як вимерную паверхню. Зберагчыце адны ідеальны прыклад роботы, адзін прыклад неудачы і запіс пра вярнэнне да пачатковага стану, перш чым расширваць сферу дзеяння. Валідзіце маленькія, тэставаныя елементы замест большых скрыптов. Калі якісь крок не выйшаў, прычына неудачы должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны ланцужок задач.
# Instead of hiding state in a session the model can't see:
@mcp.tool()
def open_dataset(path: str) -> str:
"""Open a dataset and return a handle for subsequent calls."""
handle = register_dataset(path) # your own store, your own TTL
return handle # the model now HOLDS this
@mcp.tool()
def query_dataset(handle: str, query: str) -> list[dict]:
"""Query a previously opened dataset."""
return lookup(handle).query(query)
Мінуты 15–18: Пераканацца ў правільнасці новых заголовкаў
Для стадіі адміністрацыі за 15–18 хвілін неабяжна прадзеўначыць вхідныя даны, адпаведальнага за крок і крэтыяры завершэння пры змены коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы схованы стан. Спрыяйце гэтай стадіі як даговору межа вхіднымі данымі і адзначанымі выходнымі рэзультатамі. Даўце назвы артыфактам, прадзеўначыць перакананні ў успеху і адмовіцеся ад тыхнай частковай рэалізацыі без паведамлення. Автентыфікуйцеся на в’язку і паўтарна автарызуйцеся на роўні дадзенняў. Толькі токэн-носіцель не ёстся межай арендаванага ресурсу.
18–20 хвілін: Вылечыце код каштоўкі
Для стадіі калібравання за 18:20 неабяжна ўскладненне параметраў, вызначэнне адпаведальнага за крок і критэрыяў завершэння пры перадзмене коду. Аперацыйныя працавнікі должны магчымае запускаць крок з вядомай точкі контролю, не падозрываючы прыхованы стан. Запісваюць час выконання і кост токена або запыту праза функцыйнае рэзультат. Відкрытыя даннія пра косцы запобегаюць неспакоўным рахункам, калі процес пераходзіць з дэмаверсіі ў спяльныя среды. Автентыфікуецца пры входзе і паўторна автарызуецца на роўні дадзенняў. Толькі токен-носіцель не ёстся межай арэндаванага прыемку.
Заспакоенне, якое вам патрэбнае пры розгортанні
Для стадіі, яка дае неабяжна паверы, перш чым зменіць код, неабяжна задаць вхідныя даны, адпаведнага адпаведальнага за крок і критэрыі завершэння. Аперацыйныя працавнікі должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Конфігурацыю трэба знаходзіць за межамі коду прыемлі. Файлы сераўіса, хранільнікі секрэтных дадзеных і флагі функцый належаць у аднам месца, якое аперацыйныя працавнікі могу пераглядаць, не чытаючы весь ланцуг задач. Автентыфікуйцеся на воратах і паўторна автарызуйцеся на роўні дадзеных. Толькі токэн-носіцель не є межай адпаведальнасці. Для стадіі, якая дае неабяжна паверы, перш чым зменіць код, неабяжна задаць вхідныя даны, адпаведнага адпаведальнага за крок і критэрыі завершэння. Аперацыйныя працавнікі должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здагадвацца пра схованы стан. Валідзіце маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выйшоў, прычына нехарактэрыстыкі должна вказываць на адну адпаведальнасць, а не на заплутаны ланцуг задач.
Што дае вам новы протакол
Калі вы працуеце над этапам «Што дае новы протакол», спачатку запісайце умовы дагавору: неабяжлівыя данні, сигнал працэйскага успеху і тое, што выканаецца у разы ўзельнага нявыпалення. Такі чарт дапамагае заліцвачваць будучыя змены ў кодзе. Спрыймайце гэты этап як дагавор межаў між вхіднымі даннемі і перакананымі выходнымі рэзультатамі. Дайце назвы элементам, задаць критэрыя успеху і не падтрымайце тыхія частковыя завершэння. Запісвайце назву інструмента, хэш параметраў, час адпаведзі і рэзультат кожнага вызову. Без такога лёгкага следу дэбагаванне можа зайняць гады.
Якщо вам трэба застацца на MCP 1.x
Калі працуеце над этапам «Якщы трэба», спачатку запісайце угоду: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага нявыпання. Такі список перакладоў заходзіць пазнейшыя змены коду чыстымі. Запісвайце час выканання і кост токена або запыту пад функцыйнальнымі рэзултатамі. Відразы коста з самага пачатку запобегае неспакоўным рахункам, калі парадокс пераходзіць з дэмаверсіі ў спяльныя среды. Запішвайце назву інструмента, хэш аргументаў, затрымку і рэзултат кожнага вызову. Без такога следу дэбаггін агента губіць гады.
# Buys you time, keeps security patches coming
pip install "mcp>=1.28,<2"
Рызык тыхоўых занепадоў
Калі працуеце над стадзіяй «Рызык мовчання», спачатку запісайце умовы кантракту: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага абякання. Такі список контроля дапамагае залічыць пазнейшыя змены ў кодзе чыстымі. Зберагаюце настройкі за межамі коду прыемленае. Файлы сераўнавання, хранільнікі секрэтных дадзеных і флагі функцыйяў должны знаходзіцца ў аднам месцы, куды аператары можаюць адбавіць аудыт без неабяжлівага чытання всей структуры. Запісвайце назву інструмента, хэш аргументаў, час адклікання і рэзультат кожнага вызову. Без такога лёгкага следу дэбагаванне агента губіць гады часу. Калі працуеце над стадзіяй «Рызык мовчання», спачатку запісайце умовы кантракту: неабяжлівыя даны, сігнал успеху і тое, што выходзіць у разе частковага абякання. Такі список контроля дапамагае залічыць пазнейшыя змены ў кодзе чыстымі. Валіце маленькія, тэставаныя елементы замест большых скрыптаў. Калі якісь крок абякае, прычына абякання должна вказываць на адну адпаведную адпавядальнасць, а не на заплутаную лінію выконання.
Чыстак для эксплуатацыі
У стадії перагляду канцэларыя выконання неабходна ўзначыць вхідныя даны, адпаведальнага за крок і критэрыя завершэння пры зміне коду. Аператары должны магчымаць перзапуск кроку з вядомай точкі контролю, не спрабоўваючы здогадвацца пра схованы стан.
Неабходна задокументаваць як шлях успеху, так і шлях вярнення да нормальнага стану. Перапрыбуткі, людзкія контрольны пункты і обработка некоректных поведань ўскладнень є частью продукту, а не елементамі пазнейшай доработкі.
Аутентыфікуйцеся на воратах і паўтарна автарызуйцеся на роўні дадзеных. Сам токэн-носіцель не є межай адпаведальнасці.
Напішыце кароткую інструкцыю: як зміняць ключы, як спрачыслаць чергу, як анулюваць пярэдніе дадзеныя.
Валідзіруйце маленькія, тэставаныя елементы замест большых скрыптов. Калі крок не выконваецца, прычына нехарактэрыстыкі должна вказываць на адну конкрэтную адпаведальнасць, а не на заплутаны процес.
Аутентыфікуйцеся на воратах і паўтарна автарызуйцеся на роўні дадзеных. Сам токэн-носіцель не є межай адпаведальнасці.
Перш чым запускать даную структуру, заморозьце версіі, зафіксавце «золаты» транскрыпты для критичных етапаў і паказвце способы вярнення да пачатковага стану. У спільных средах неабходны ліміты швайна, пераконтроўкі прав на выкарыстоўвання ресурсаў і чысткі власнік для змены секретных даных. Валіце надзейнасць працы над красавімі разовымі дэманстрацыямі.
Прыметкі для ec249af4e537: не кладзіце ключы прадаўця ў репазітарый, задаце ліміт токена на кожную сесію і зберагачыце транскрыпты разам з фіксатрамі для ацэнкі, каб пазнейшыя замены моделяў заставаліся порównанневымі.