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-сервер:
-
Описания инструментов — главный механизм выбора LLM. Минимальные описания → ненадёжный выбор. Пиши подробно: назначение, форматы ввода/вывода, граничные случаи, примеры запросов.
-
Избегай дубликатов.
analyze_contentvsanalyze_documentс похожими описаниями → модель будет путаться. Разделяй чёткие границы. -
Структурированные ответы об ошибках:
{ "isError": true, "errorCategory": "validation", "isRetryable": false, "message": "Order ID must be 10 digits" }Не "Operation failed". Это мешает агенту решать что делать дальше.
-
Ограничивай набор инструментов каждому агенту. 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
- Создай personal access token на GitHub (с правами repo)
- Добавь в
.env:GITHUB_TOKEN=ghp_... - Создай
.mcp.jsonв проекте с github-сервером (пример выше) - Перезапусти Claude
- Попробуй:
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 в одном репо без конфликтов.