← Модуль 3: Power User
3.3

MCP: оркестратор всего рабочего процесса

Цель: превратить Claude Code из помощника по коду в одного агента ко всем твоим системам — GitHub, Slack, Postgres, Sentry, Jira, Figma.

Что такое MCP

MCP (Model Context Protocol) — стандарт от Anthropic для подключения Claude к внешним инструментам и сервисам. Одним протоколом.

Без MCP ты переключаешься между вкладками: открыл GitHub найти issue, скопировал в Claude, он написал патч, ты скопировал обратно, открыл Slack написать коллеге...

С MCP один Claude читает GitHub, пишет в Slack, делает запросы к Postgres, проверяет Sentry — без твоего переключения.

Популярные MCP-серверы

СерверЧто умеет
GitHubПоиск по репо, чтение issues, управление PR, ревью кода
SlackЧтение каналов, отправка сообщений, ответы в тредах
PostgreSQL / MySQLЗапросы к БД напрямую
Jira / LinearОбновление тикетов, смена статусов
FigmaЧтение дизайнов (да, серьёзно)
Puppeteer / PlaywrightАвтоматизация браузера
SentryМониторинг ошибок
NotionЧтение и редактирование документов
n8n-MCPПодключение к n8n-автоматизациям

Конфигурация — .mcp.json в корне проекта

{
  "mcpServers": {
    "github": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
      }
    },
    "postgres": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "POSTGRES_URL": "${DATABASE_URL}"
      }
    }
  }
}

Подстановка ${VAR} из окружения — ключи не коммитятся.

Scoping — проектный vs пользовательский

ScopeГдеДля чего
Проектный<project>/.mcp.jsonСерверы нужные команде (GitHub, БД проекта)
Пользовательский~/.claude.jsonТвои личные/экспериментальные (Notion, Figma)

Оба активны одновременно.

Что можно делать

Один инструмент ко всему

claude "find all open bugs in our github repo tagged 'critical' and summarize them"
claude "query the database for users who signed up this week and post the count to #metrics on slack"
claude "check sentry for the top 5 errors this week and create github issues for each one"

Пайплайны

claude "read the figma file at [link], implement the new CheckoutButton component in React, and create a PR with screenshots"

Figma → понял дизайн → React-код → GitHub PR. Один запрос.

Дебаг прод-инцидентов

claude "a customer reports checkout fails. Check Sentry for their email, correlate with our DB, find the broken endpoint, post a status to the #incidents slack channel"

Проектирование хороших MCP-инструментов (из Architect Foundations)

Когда пишешь свой MCP-сервер:

  1. Описания инструментов — главный механизм выбора LLM. Минимальные описания → ненадёжный выбор. Пиши подробно: назначение, форматы ввода/вывода, граничные случаи, примеры запросов.

  2. Избегай дубликатов. analyze_content vs analyze_document с похожими описаниями → модель будет путаться. Разделяй чёткие границы.

  3. Структурированные ответы об ошибках:

    {
      "isError": true,
      "errorCategory": "validation",
      "isRetryable": false,
      "message": "Order ID must be 10 digits"
    }

    Не "Operation failed". Это мешает агенту решать что делать дальше.

  4. Ограничивай набор инструментов каждому агенту. 18 инструментов → надёжность падает. 4-5 релевантных → работает.

tool_choice — принуждение

В Agent SDK можно заставить модель обязательно вызвать инструмент:

  • "auto" — модель решает (дефолт)
  • "any" — обязана вызвать хоть какой-то инструмент, а не отвечать текстом
  • {"type": "tool", "name": "extract_metadata"} — конкретный принудительно

Полезно для структурированного извлечения данных (Модуль 4).

Community vs кастомные MCP

Если существует community MCP под твою задачу — бери его. GitHub/Slack/Postgres — уже есть отличные.

Кастомные пиши когда:

  • Уникальный бэкенд компании
  • Специфические политики доступа
  • Встраивание в существующие пайплайны

Не пиши свой GitHub MCP. Это время в мусор.

Практика (30 минут)

Задача 1. Подключи GitHub

  1. Создай personal access token на GitHub (с правами repo)
  2. Добавь в .env: GITHUB_TOKEN=ghp_...
  3. Создай .mcp.json в проекте с github-сервером (пример выше)
  4. Перезапусти Claude
  5. Попробуй: claude "list 5 most recent PRs in this repo"

Задача 2. (Если есть Slack) Подключи Slack

Аналогично. Тест: claude "get last 5 messages from #general".

Задача 3. Сложный пайплайн

Если есть и GitHub, и что-то ещё (Sentry/Notion/БД):

claude "find open issues tagged 'bug' in github, check if any match recent Sentry errors, create correlation report"

Что дальше

Следующий урок: git worktrees. Как запускать 3-5 параллельных сессий Claude в одном репо без конфликтов.