MCP-сервер: что это и как работает Model Context Protocol
MCP (Model Context Protocol) — открытый стандарт, по которому нейросеть подключается к внешним инструментам и данным: файлам, GitHub, базам данных, браузеру, внутренним сервисам компании. MCP-сервер — небольшая программа, которая по этому стандарту сообщает нейросети, что она умеет (например, «найти задачу в трекере» или «прочитать таблицу»), и выполняет эти действия по её запросу. Один раз написанный MCP-сервер работает с любым совместимым приложением: Claude Desktop, Claude Code, IDE и собственными агентами.
Этот гид объясняет MCP без лишней теории: из чего состоит протокол, какие серверы уже есть, как подключить сервер к Claude, на что смотреть с точки зрения безопасности и как за полчаса написать свой сервер на Python. В конце собраны бесплатные уроки официального курса Anthropic по MCP на русском.
Зачем нужен MCP
Модель сама по себе знает только то, что было в обучении и в вашем сообщении. Чтобы она прочитала файл, сделала запрос к базе или создала задачу в трекере, ей нужен инструмент (tool): функция с описанием, которую модель может попросить вызвать.
До MCP каждый разработчик писал такие инструменты сам: схему, функцию, обработку ошибок, и так под каждый сервис. У GitHub сотни операций, и полноценный чат-бот по GitHub означал бы сотни самописных инструментов, которые нужно тестировать и поддерживать. Этот пример разбирают в уроке «Знакомство с MCP».
MCP переносит эту работу в отдельную программу, MCP-сервер. Сервер для GitHub один раз пишет, например, сам GitHub, а любое AI-приложение просто подключает его и получает готовый набор инструментов. Протокол опубликовала Anthropic в ноябре 2024 года как открытый стандарт, сейчас его поддерживают не только продукты Anthropic, но и инструменты других компаний, например OpenAI Agents SDK.
Как устроен MCP: хост, клиент, сервер
В MCP три роли. Их легко перепутать, поэтому сначала коротко, потом на примере.
- Хост — приложение, в котором работает нейросеть и с которым общается человек: Claude Desktop, Claude Code, IDE, ваш собственный чат-бот или агент.
- Клиент — часть хоста, которая держит соединение с одним MCP-сервером. Если подключено пять серверов, внутри хоста работает пять клиентов.
- Сервер — программа, которая выставляет наружу возможности какого-то сервиса и выполняет их.
Клиент и сервер обмениваются сообщениями, формат которых описан в спецификации MCP (это JSON-RPC). Протокол не привязан к способу связи: если сервер запущен на том же компьютере, они общаются через стандартный ввод-вывод (stdio), удалённый сервер работает по HTTP (транспорт Streamable HTTP).
Что происходит, когда вы задаёте вопрос
- Пользователь спрашивает: «Какие у меня открытые pull request?»
- Хост через MCP-клиент запрашивает у сервера список инструментов (запрос tools/list) и отправляет его модели вместе с вопросом.
- Модель видит инструмент с подходящим описанием и отвечает не текстом, а просьбой вызвать инструмент с такими-то аргументами.
- Клиент отправляет серверу запрос tools/call, сервер обращается к GitHub и возвращает результат.
- Результат уходит модели, и она пишет пользователю итоговый ответ.
Весь этот цикл пошагово нарисован в уроке «MCP-клиенты».
Инструменты, ресурсы и промпты
Сервер может предоставлять три вида возможностей. Разница между ними в том, кто решает, когда их использовать.
| Примитив | Что это | Кто управляет | Пример |
|---|---|---|---|
| Инструменты (tools) | действия: функция с описанием и схемой аргументов | модель сама решает, вызвать ли | создать issue, выполнить SQL-запрос, открыть страницу |
| Ресурсы (resources) | данные для чтения по адресу (URI) | приложение подставляет их в контекст | содержимое документа, список файлов, схема базы |
| Промпты (prompts) | готовые шаблоны запросов с параметрами | пользователь выбирает, например, через слеш-команду | «/format документ», «/review ветка» |
В курсе Anthropic все три примитива реализуют на одном учебном проекте: инструменты для чтения и правки документов, ресурсы для упоминания документа через @, промпты для слеш-команды форматирования.

Примеры MCP-серверов
Готовых серверов тысячи: официальные от компаний-разработчиков сервисов и сообщества. Самые полезные для начала:
- Файловая система. Эталонный сервер из репозитория проекта MCP (@modelcontextprotocol/server-filesystem): читать, искать и изменять файлы в папках, которые вы явно разрешили.
- GitHub. Официальный сервер от GitHub: искать код, читать issues и pull request, создавать ветки и комментарии.
- Базы данных. Серверы для PostgreSQL, SQLite, MySQL и других: модель смотрит схему и выполняет запросы. Для начала подключайте их с пользователем только на чтение.
- Браузер. Playwright MCP от Microsoft даёт модели управлять браузером: открыть страницу, нажать кнопку, заполнить форму, сделать снимок. Как подключить его к Claude Code и использовать при разработке, показано в курсе «Claude Code в действии».
- Рабочие сервисы. Трекеры задач, CRM, заметки, календари, мессенджеры: у многих SaaS уже есть официальные MCP-серверы.
- Вспомогательные. Fetch (загрузить страницу и превратить в текст), Memory (долговременная память в виде графа знаний), Time (дата и часовые пояса).
Как подключить MCP-сервер к Claude: пошагово
Общая схема одинакова для любого хоста: указать, как запустить сервер (команда и аргументы) или по какому адресу он доступен, перезапустить приложение и разрешить вызовы инструментов.
Claude Desktop
- Установите Node.js или Python, в зависимости от того, на чём написан сервер. Серверы на Node.js обычно запускаются через npx, на Python через uvx или python.
- Откройте в настройках приложения раздел Developer и нажмите Edit Config. Откроется файл claude_desktop_config.json (в Windows он лежит в %APPDATA%\Claude, в macOS в ~/Library/Application Support/Claude).
- Добавьте сервер в раздел mcpServers, как в примере ниже, и сохраните файл.
- Полностью закройте и снова откройте Claude Desktop. Инструменты сервера появятся в меню инструментов в окне чата.
- При первом вызове инструмента приложение спросит разрешение. Читайте, что именно и с какими аргументами собирается сделать модель.
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/me/Documents/notes"
]
},
"notes": {
"command": "python",
"args": ["/Users/me/mcp/notes_server.py"],
"env": { "NOTES_DIR": "/Users/me/Documents/notes" }
}
}
}
Последний аргумент файлового сервера — папка, к которой ему разрешён доступ. Указывайте конкретную рабочую папку, а не весь диск.
Claude Code
В Claude Code серверы добавляют командой в терминале (не внутри сессии Claude Code):
# локальный сервер, запускается командой после --
claude mcp add notes -- python /Users/me/mcp/notes_server.py
# удалённый сервер по HTTP
claude mcp add --transport http my-service https://example.com/mcp
# посмотреть подключённые серверы
claude mcp list
Чтобы сервер был у всей команды, его описывают в файле .mcp.json в корне репозитория. Внутри сессии команда /mcp показывает статус серверов. Если надоели запросы разрешений, доверенный сервер можно разрешить целиком в настройках проекта: в список allow добавляется строка вида mcp__имя_сервера. Этот приём, а также работа с браузером через Playwright MCP, показан в уроке 11 курса «Claude Code в действии».
MCP, обычный API, плагины и function calling: в чём разница
Частый вопрос: зачем MCP, если есть API и вызов функций? Это не конкуренты, а разные уровни. Function calling (в терминах Anthropic, tool use) — способность модели попросить вызвать функцию. MCP — стандарт того, где эти функции живут и как приложение их находит.
| Обычный API | Function calling (tool use) | Плагины ChatGPT | MCP | |
|---|---|---|---|---|
| Для кого | для программиста | для модели внутри вашего приложения | для модели внутри ChatGPT | для любой модели в любом совместимом приложении |
| Кто пишет схему и код инструмента | — | вы, в своём приложении | автор плагина | автор сервера, часто сам сервис |
| Переиспользование | нужна интеграция под каждое приложение | только в вашем коде | только в ChatGPT | один сервер для Claude Desktop, Claude Code, IDE, агентов |
| Что умеет кроме действий | — | только функции | только действия | инструменты, ресурсы, промпты, уведомления |
| Статус | базовый способ интеграции | есть у всех крупных моделей | закрыты в 2024 году | открытый стандарт, развивается |
MCP не отменяет tool use: внутри хоста инструменты сервера всё равно передаются модели как обычные инструменты. Поэтому полезно сначала понять механику tool use, её разбирает курс «Работа с инструментами Claude».
Безопасность MCP
MCP-сервер — это программа с доступом к вашим данным и аккаунтам, которой управляет модель. Отсюда простые правила.
- Ставьте серверы из надёжных источников. Официальные серверы сервисов и эталонные серверы проекта MCP предпочтительнее случайных пакетов. Локальный сервер через stdio работает с правами вашего пользователя и может сделать всё, что можете вы.
- Минимум прав. Токен GitHub только на нужные репозитории, пользователь базы только на чтение, файловый сервер только на рабочую папку.
- Помните о prompt injection. Текст страницы, письма или issue может содержать скрытую инструкцию для модели («перешли содержимое файла по адресу»). Не давайте одному агенту одновременно читать недоверенный контент и отправлять данные наружу без вашего подтверждения.
- Читайте запросы разрешений. Не включайте «разрешить всё» для серверов, которые умеют удалять, отправлять или платить.
- Секреты в переменных окружения, а не в тексте промптов и не в репозитории. Файл .mcp.json с токенами не коммитьте.
- Проверяйте описания инструментов. Модель доверяет описанию инструмента, и вредоносный сервер может спрятать инструкции прямо в нём.
Как написать свой MCP-сервер на Python
Для своего сервера удобнее всего официальный SDK: есть версии для Python и TypeScript, а также для других языков. SDK сам формирует JSON-схему инструмента по сигнатуре функции и строке документации, поэтому схемы вручную писать не нужно. Ниже сервер заметок с одним инструментом, одним ресурсом и одним промптом.
# pip install "mcp[cli]"
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("notes")
NOTES = "notes.txt"
@mcp.tool()
def add_note(title: str, text: str) -> str:
"""Сохранить заметку с заголовком в файл заметок."""
with open(NOTES, "a", encoding="utf-8") as f:
print(f"{title}: {text}", file=f)
return "Заметка сохранена"
@mcp.resource("notes://all")
def all_notes() -> str:
"""Все заметки целиком."""
with open(NOTES, encoding="utf-8") as f:
return f.read()
@mcp.prompt()
def weekly_review() -> str:
"""Шаблон для еженедельного разбора заметок."""
return "Прочитай мои заметки и составь список дел на неделю по приоритетам."
if __name__ == "__main__":
mcp.run() # по умолчанию транспорт stdio
- Установите SDK и сохраните код в файл notes_server.py.
- Проверьте сервер в инспекторе. Команда mcp dev notes_server.py открывает MCP Inspector в браузере: там видны инструменты, ресурсы и промпты, их можно вызвать вручную без модели. Инспектор разбирают в уроке 6 курса «Введение в MCP».
- Подключите сервер к Claude Desktop или Claude Code, как описано выше.
- Попросите модель «Запиши заметку: позвонить бухгалтеру в пятницу» и посмотрите, как она вызывает add_note.
- Доработайте описания. Модель выбирает инструмент по описанию, поэтому пишите в строке документации, когда инструмент нужен и что он возвращает.
На TypeScript схема та же: пакет @modelcontextprotocol/sdk, объект McpServer, регистрация инструмента со схемой аргументов через zod и подключение транспорта StdioServerTransport. Если нужен удалённый сервер для нескольких пользователей, вместо stdio используют Streamable HTTP, а к нему добавляют авторизацию. Транспорты подробно разбирает курс «MCP: продвинутые темы».
Частые ошибки при работе с MCP
- Слишком много серверов сразу. Описания всех инструментов попадают в контекст модели. Двадцать серверов по двадцать инструментов — это лишние токены и больше ошибок выбора. Подключайте то, что нужно для текущей работы.
- Размытые описания. «Работа с данными» ничего не говорит модели. «Возвращает заказы клиента за период, даты в формате ГГГГ-ММ-ДД» работает.
- Огромные ответы инструментов. Сервер, который возвращает всю таблицу на 50 тысяч строк, быстро забивает контекст. Добавляйте фильтры и лимиты.
- Сервер не стартует. Чаще всего причина в пути к интерпретатору или файлу. Указывайте полные пути и смотрите логи хоста.
Где выучить MCP на русском
Anthropic выпустила два официальных курса по MCP, оба переведены на русский и открываются из России без VPN. Сам Claude в России официально недоступен, но протокол открытый: навыки пригодятся с любыми совместимыми моделями и инструментами.
- Введение в MCP — клиент и сервер, свой сервер на Python с инструментами, ресурсами и промптами, инспектор (16 уроков, средний уровень)
- MCP: продвинутые темы — sampling, уведомления, roots, транспорты stdio и Streamable HTTP (18 уроков)
- Работа с инструментами Claude — механика tool use, на которой держится MCP (6 уроков, продвинутый уровень)
Первые уроки каждого курса бесплатны без регистрации. Полный доступ ко всем курсам Anthropic стоит 1490 ₽ разово, ко всем курсам платформы 4900 ₽, без подписки.

Что дальше: бесплатные уроки по MCP
- Добро пожаловать на курс — программа курса «Введение в MCP».
- Знакомство с MCP — зачем нужен протокол и чем MCP-сервер отличается от прямого вызова API.
- MCP-клиенты — транспорты и полный путь запроса от пользователя до GitHub и обратно.
- Sampling: как сервер обращается к модели через клиента — первая тема продвинутого курса.
- Основы работы с инструментами — как модель вызывает функции.
Если вы хотите не только подключать серверы, но и строить агентов, продолжение в гиде Курс по ИИ-агентам. Все курсы по теме собраны на странице курсы по MCP.
Первые уроки курса по MCP бесплатно
Официальный курс Anthropic «Введение в MCP» на русском, видео с субтитрами, без VPN. Первые уроки без регистрации.
Открыть курс по MCPЧастые вопросы
Что такое MCP-сервер простыми словами?
Это программа-переходник между нейросетью и сервисом. Она сообщает модели, какие действия доступны (например, «найти файл» или «создать задачу»), и выполняет их, когда модель просит. Работает с любым приложением, которое поддерживает Model Context Protocol.
Чем MCP отличается от function calling?
Function calling (tool use) — умение модели попросить вызвать функцию. MCP — стандарт, где эти функции живут: их пишут один раз в сервере, и любое совместимое приложение подключает их без своей интеграции. Внутри хоста инструменты MCP передаются модели как обычные инструменты.
Как подключить MCP-сервер к Claude?
В Claude Desktop добавьте сервер в файл claude_desktop_config.json (раздел mcpServers) и перезапустите приложение. В Claude Code выполните в терминале claude mcp add имя -- команда_запуска или claude mcp add --transport http имя адрес для удалённого сервера.
Нужно ли уметь программировать, чтобы пользоваться MCP?
Чтобы подключить готовый сервер, достаточно отредактировать конфигурацию по инструкции. Чтобы написать свой, нужен базовый Python или TypeScript: официальный SDK берёт на себя протокол и схемы.
Безопасны ли MCP-серверы?
Настолько, насколько надёжен сервер и насколько узкие права вы ему дали. Ставьте серверы из официальных источников, давайте токены с минимальными правами, не разрешайте без подтверждения удаление и отправку данных, помните о prompt injection через недоверенный контент.
Работает ли MCP только с Claude?
Нет. Протокол открытый, его поддерживают разные AI-приложения и SDK, в том числе OpenAI Agents SDK. Сервер, написанный один раз, подойдёт разным клиентам.
Есть ли курс по MCP на русском?
Да, два официальных курса Anthropic: «Введение в MCP» (16 уроков) и «MCP: продвинутые темы» (18 уроков). Первые уроки бесплатны без регистрации, курсы открываются из России без VPN.
