MCP Servers in Claude Code
Model Context Protocol in practice: connecting servers via claude mcp add, scopes, .mcp.json, and the security of external tools.
Lesson content is currently available in Russian.
What you will learn
- →Подключать MCP-серверы с правильной областью видимости: local, project, user.
- →Различать транспорты stdio и HTTP и отлаживать неподнявшийся сервер.
- →Управлять безопасностью: секреты через окружение, минимальные права, цена контекста.
Зачем агенту протокол
Model Context Protocol — открытый стандарт подключения внешних систем к LLM-приложениям. Без него каждая интеграция — самописный мост; с ним любой сервер, говорящий по MCP, работает в любом совместимом клиенте: Claude Code, IDE-плагинах, других агентах. Сервер объявляет три вида возможностей: tools — действия, которые агент может вызвать (создать issue, выполнить SQL-запрос), resources — данные для чтения (файлы, записи, схемы), prompts — готовые шаблоны запросов.
Для Claude Code это выход за пределы файловой системы и терминала. Типовые серверы: GitHub — issues и pull requests как инструменты агента; Sentry — стектрейсы продакшена прямо в контекст; Postgres — схема и запросы к базе; Playwright — живой браузер для end-to-end проверок. Инструменты сервера появляются в сессии с именами вида mcp__github__create_issue — по префиксу всегда видно, какой сервер выполняет действие, и на эти имена работают обычные правила permissions.
Практический сдвиг мышления: раньше вы руками копировали стектрейс из Sentry в чат, теперь агент сам достаёт его, находит подозрительный коммит и предлагает фикс. Каждый убранный акт ручного копирования контекста — ещё один замкнутый участок агентного цикла. Именно поэтому MCP считают вторым по значимости механизмом расширения после базовых инструментов.
Подключение и области видимости
Сервер подключается одной командой:
# локальный stdio-сервер
claude mcp add github -- npx -y @modelcontextprotocol/server-github
# удалённый HTTP-сервер
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
# управление
claude mcp list
claude mcp get github
claude mcp remove github
Область видимости решает, кто увидит сервер. local (по умолчанию) — только вы и только в этом проекте. user (--scope user) — вы во всех проектах на машине. project (--scope project) — сервер записывается в файл .mcp.json в корне репозитория, коммитится и автоматически доступен всей команде:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
}
}
}
Обратите внимание на ${GITHUB_TOKEN}: .mcp.json поддерживает подстановку переменных окружения, поэтому сам токен в репозиторий не попадает — каждый член команды держит его в своём окружении. Файл с сырым секретом в git — типовая утечка; подстановка закрывает её по построению. Правило выбора scope: инфраструктура проекта — project, личные интеграции — user, эксперименты — local.
Транспорты, статус и отладка
Два основных транспорта. stdio — Claude Code сам запускает процесс сервера и общается с ним через стандартные потоки; так работают локальные серверы: файловые, базы данных, обёртки над CLI. HTTP — сервер работает удалённо, клиент ходит к нему по URL; так подключаются облачные сервисы: Sentry, GitHub, корпоративные шлюзы. Для удалённых серверов с OAuth авторизация проходит через команду /mcp: она показывает статус каждого сервера и проводит вход через браузер.
Отладка по слоям. Первый слой — /mcp в сессии: поднялся ли сервер, какие инструменты экспортирует. Второй — claude mcp get имя: какая конфигурация реально применяется, тот ли scope. Третий — для stdio-серверов: запустите команду сервера руками в терминале и читайте stderr; в девяти случаях из десяти причина — отсутствующая переменная окружения или неустановленный пакет.
Разрешения на MCP-инструменты управляются теми же правилами permissions, что и встроенные. Правило mcp__github в allow снимет подтверждения со всех инструментов сервера, mcp__github__create_issue — только с одного. Практичный дефолт: читающие инструменты — в allow сразу, пишущие — под подтверждением хотя бы первую неделю. Созданный в чужом репозитории issue отзывается труднее, чем локальный дифф, — цена ошибки у внешних действий выше.
Безопасность и цена контекста
MCP расширяет и возможности, и поверхность атаки. Три правила, которые стоит принять до первого продакшен-инцидента, а не после.
Первое: считайте контекст. Описания всех инструментов каждого подключённого сервера загружаются в окно сессии — десяток серверов съест заметную долю контекста ещё до первого сообщения. Подключайте то, что нужно текущему проекту, а не всё интересное; /context покажет, во что обходится каждый сервер.
Второе: относитесь к серверам как к зависимостям. Сторонний MCP-сервер — это чужой код, работающий с вашими данными и токенами. Устанавливайте официальные или проверенные реализации, читайте, какие права запрашивает сервер, и выдавайте токены с минимальным скоупом: серверу для чтения issues не нужен доступ на запись в репозиторий.
Третье: помните о prompt injection. Данные, которые сервер приносит извне — тексты issues, веб-страницы, письма, — попадают в контекст и могут содержать инструкции, адресованные агенту. Архитектурная защита — минимальные права: агент, у которого нет инструмента удаления, не удалит ничего, что бы ни написали в тексте issue. Комбинация «внешние данные + широкие права + автоподтверждение» — худшая из возможных; разрывайте её хотя бы в одном звене.
Practice
Внешний инструмент в деле
Подключите реальный MCP-сервер (GitHub, Sentry или Postgres) в project-scope через .mcp.json с подстановкой токена из окружения. Выполните задачу, требующую его инструментов: например, найдите три давних issue и предложите план их закрытия.
Deliverable
.mcp.json без сырых секретов, вывод /mcp со статусом сервера и транскрипт с вызовом mcp__-инструмента.
Checkpoint
Объясните выбор scope и транспорта для вашего сервера и покажите, как защищён токен.
- ✓ Scope выбран осознанно: project для команды, local или user для личного.
- ✓ Секрет передан через переменную окружения, а не сырым значением в файле в git.
- ✓ Названы права токена и объяснено, почему их достаточно для задачи.
Check yourself
Sources