Обзор MCP: что мы построили
Курс закончился, и у вас есть работающий MCP-сервер с тремя примитивами и клиент, в котором Claude сам вызывает ваши инструменты. Этот урок — короткая сводка: что построено, что запомнить и что делать дальше.
Что у нас получилось
Сервер docs_server.py — около восьмидесяти строк:
| Примитив | Что | Кто использует |
|---|---|---|
| Инструменты | read_doc, edit_doc |
Модель, по ходу задачи |
| Ресурсы | docs://list, шаблон docs://{name} |
Пользователь, через @имя |
| Промпты | summarize, to_theses |
Пользователь, через /имя |
Клиент client.py — около ста строк: запускает сервер по stdio, переводит инструменты в формат Anthropic API, крутит цикл tool_use → call_tool → tool_result, прикладывает ресурсы по упоминанию и запускает разговор с промпта.
Тот же сервер без изменений подключается к Claude Code одной командой claude mcp add и к приложению Claude через файл конфигурации. Это и была обещанная идея протокола: сервер написан один раз, клиентов у него сколько угодно.
Что стоит унести с собой
Три роли и три примитива. Хост, клиент, сервер. Инструменты — модель, ресурсы — приложение, промпты — человек. Если вы помните, кто контролирует примитив, вы правильно спроектируете сервер.
Описания пишутся для модели. Имя, docstring, Field(description=...) — единственное, что модель знает об инструменте. ToolError с подсказкой — способ дать ей исправиться.
stdio-сервер молчит в stdout. Логи только через logging. Инспектор покажет, если вы забыли.
Цикл вызова инструментов — это не магия. Ответ модели в историю целиком, результаты всех инструментов одним сообщением с tool_use_id, повторять, пока stop_reason не перестанет быть tool_use.
Подтверждение человеком — ответственность хоста. Наш клиент выполнял всё подряд; настоящий спрашивает. Аннотации read_only_hint и честные описания помогают хосту решать.
Чего не хватает до настоящего
Учебный проект сознательно упрощён. Чтобы превратить его в сервер для команды, понадобится:
- Настоящее хранилище вместо словаря: папка, вики, база. Мы обращались к
DOCSчерез несколько функций, так что замена локальна. - Аутентификация и Streamable HTTP, если сервер должен жить не на ноутбуке, а на общем хосте.
- Уведомления: сообщать хосту, что список документов изменился, вместо того чтобы ждать перечитывания.
- Прогресс и логи в хост для долгих операций.
- Тесты — SDK подключает
Clientк серверу в том же процессе, и это идеальная основа дляpytest.
Куда дальше
Курс «MCP: продвинутые темы» продолжает ровно с этого места: устройство JSON-сообщений, транспорты stdio и Streamable HTTP в деталях, уведомления о логах и прогрессе, работа с состоянием и подготовка сервера к продакшену. Там же разбираются sampling и roots — клиентские примитивы, которые помечены устаревшими, но встречаются в существующих серверах.
Если хочется практики без нового курса — подключите project-docs к Claude Code и поработайте с ним день: @project-docs:docs://brief.md для ресурсов, /mcp__project-docs__summarize для промптов. Быстро станет видно, чего не хватает.
Документация протокола — modelcontextprotocol.io/docs, Python SDK — py.sdk.modelcontextprotocol.io, подключение к Claude Code — code.claude.com/docs/en/mcp.
Попробуйте сами
10–15 мин на рабочем месте- Замените словарь
DOCSна чтение папкиdocs/и подключите сервер к Claude Code с областьюproject. Закоммитьте.mcp.json, чтобы коллега мог подключиться той же командой. - Напишите один тест на
pytestсClient(mcp, raise_exceptions=True): у каждого инструмента есть описание, и у каждого параметра — тоже. - Возьмите сервис из своей работы, для которого вы проектировали примитивы в уроке про них, и напишите для него сервер по образцу
project-docs. Начните с одного инструмента и одного промпта.
Коротко
- Построен сервер с двумя инструментами, двумя ресурсами и двумя промптами и клиент с циклом вызова инструментов.
- Тот же сервер без изменений подключается к Claude Code и приложению Claude.
- Главное: кто контролирует примитив, описания для модели, тишина в stdout, устройство цикла, подтверждение человеком.
- До настоящего сервера не хватает хранилища, транспорта HTTP, уведомлений и тестов.
- Дальше — курс «MCP: продвинутые темы».
Видеоверсия
Сценарий озвучки · 280 слов, ≈ 2 мин
Курс закончился. У вас есть работающий MCP-сервер и клиент, в котором Claude сам вызывает ваши инструменты. Давайте коротко подведём итоги.
Что построено. Сервер «документы проекта» — около восьмидесяти строк. Два инструмента, прочитать и отредактировать документ, — их вызывает модель по ходу задачи. Два ресурса, список документов и содержимое по имени, — их прикладывает пользователь через упоминание. Два промпта, выжимка и тезисы, — их пользователь выбирает как команды. И клиент в сто строк: запускает сервер, переводит инструменты в формат API, крутит цикл вызовов, прикладывает ресурсы и запускает разговор с промпта. Тот же сервер без изменений подключается к Claude Code одной командой. Это и была обещанная идея протокола: сервер написан один раз, клиентов у него сколько угодно.
Что стоит унести с собой. Три роли и три примитива: хост, клиент, сервер; инструменты — модель, ресурсы — приложение, промпты — человек. Если помнить, кто контролирует примитив, сервер спроектируется правильно. Описания пишутся для модели — это единственное, что она знает об инструменте. Сервер на стандартном вводе-выводе молчит в стандартный вывод. Цикл вызова инструментов — не магия: ответ модели в историю целиком, результаты одним сообщением, повторять, пока модель просит инструменты. И подтверждение человеком — ответственность хоста, а не протокола.
Чего не хватает до настоящего сервера. Настоящего хранилища вместо словаря. Транспорта эйч-ти-ти-пи и аутентификации, если сервер должен жить не на ноутбуке. Уведомлений об изменениях. Прогресса для долгих операций. И тестов — SDK подключает клиент к серверу в том же процессе, это идеальная основа.
Куда дальше. Курс «MCP: продвинутые темы» продолжает ровно с этого места: устройство сообщений, транспорты в деталях, уведомления, состояние, подготовка к продакшену. А если хочется практики — подключите свой сервер к Claude Code и поработайте с ним день. Вы быстро увидите, каких инструментов не хватает, и это лучший источник задач для следующей версии.
Спасибо, что прошли курс.
