MCP-серверы — Подключение внешних инструментов — Практика
Прямая речь: “Всё на этой странице практики построено так, чтобы вы могли повторять за мной строка за строкой. Когда видите блок с командой или промптом, можете копировать его прямо в терминал или сессию Claude, если я явно не укажу, что это справочный материал. По ходу работы сравнивайте свой результат с моим на экране, чтобы ловить ошибки сразу, а не копить их.”
Продолжительность: ~25 минут Результат: Интеграция GitHub MCP для управления issues и PR, filesystem MCP для кросс-директорного доступа и управление разрешениями для MCP-инструментов. Предварительные требования: Пройдены Блоки 0-8, аккаунт GitHub, установлен и аутентифицирован
ghCLI, установлен Node.js
Шаг 1: Добавление GitHub MCP-сервера (~5 мин)
Предпочтительный способ настройки MCP-серверов – команда claude mcp add. Она записывает конфигурацию в .mcp.json (уровень проекта с --scope project) или ~/.claude.json (уровень пользователя с --scope user) автоматически – без ручного редактирования JSON.
Сначала вам нужен персональный токен доступа GitHub. Если у вас его нет:
- Перейдите на https://github.com/settings/tokens
- Нажмите Generate new token (classic)
- Назовите его
claude-code-mcp - Выберите scopes:
repo(полный контроль приватных репозиториев),read:org - Сгенерируйте и скопируйте токен
Установите переменную окружения (добавьте это в ~/.zshrc или ~/.bashrc, чтобы сделать постоянной):
export GITHUB_TOKEN="ghp_your_token_here"
Теперь добавьте GitHub MCP-сервер через CLI:
claude mcp add github --scope project -- npx -y @modelcontextprotocol/server-github
Это создаст .mcp.json в корне вашего проекта с конфигурацией сервера. Проверьте:
cat .mcp.json
Вы увидите что-то вроде:
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
}
}
}
Примечание по безопасности: Синтаксис
${GITHUB_TOKEN}ссылается на переменную окружения вашего shell в рантайме – сам токен никогда не хранится в файле. Если.mcp.jsonзакоммичен в git, это безопасно. Для дополнительной осторожности добавьте.mcp.jsonв.gitignore.Почему
claude mcp add, а не ручное редактирование? CLI-команда обрабатывает форматирование JSON, валидирует конфигурацию сервера и поддерживает--scope projectvs--scope userдля управления местом хранения конфигурации. Это официально рекомендуемый подход.
Шаг 2: Перезапуск Claude и проверка MCP (~2 мин)
MCP-серверы загружаются при старте сессии. Выйдите из текущей сессии Claude и начните новую:
cd ~/ai-coderrank
claude
При запуске Claude запустит GitHub MCP-сервер в фоне. Возможно, вы увидите краткое сообщение об инициализации.
Проверьте доступность MCP-инструментов:
What MCP tools do you have available? List them.
Claude должен перечислить инструменты вроде:
create_or_update_file– Создание или обновление файла в репозиторииcreate_issue– Создание нового issuecreate_pull_request– Создание нового pull requestget_issue– Получение деталей issuelist_issues– Перечисление issues в репозиторииadd_issue_comment– Комментирование issuesearch_repositories– Поиск репозиториевget_file_contents– Получение содержимого файла из репо- И другие…
Если Claude говорит, что у него нет MCP-инструментов, проверьте:
- Экспортирован ли
GITHUB_TOKENв текущем shell? - Валиден ли JSON в
.mcp.json? (попросите Claude проверить) - Попробуйте
npx -y @modelcontextprotocol/server-githubвручную, чтобы увидеть, запускается ли он
Шаг 3: Просмотр issues через MCP (~3 мин)
Теперь используем GitHub MCP-инструменты. Попросите Claude:
List all open issues on the ai-coderrank repository.
My GitHub username is <your-github-username>.
Claude использует инструмент list_issues от GitHub MCP-сервера. Он выполняет реальный вызов GitHub API и возвращает результаты.
Если issues пока нет (свежий репо), Claude об этом скажет. Это нормально – мы как раз собираемся создать несколько.
Попробуйте более широкий запрос:
Search for any repositories I own that have "coderrank" in the name.
Это использует инструмент search_repositories. Claude может исследовать всё ваше присутствие на GitHub через MCP.
Шаг 4: Создание GitHub Issue через MCP (~3 мин)
Вот тут становится интересно. Попросите Claude:
Create a new issue on the ai-coderrank repository:
- Title: "Add dark theme documentation"
- Body: "The dark theme was implemented in Block 4 but there's no user-facing
documentation. We need:
- A section in the README explaining the theme toggle
- Screenshot showing both light and dark modes
- Any relevant accessibility notes (contrast ratios, etc.)
Priority: low
Relates to: dark theme implementation"
- Labels: documentation, enhancement
Claude использует инструмент create_issue. Вы получите номер issue и URL.
Проверьте, что всё сработало:
Show me the issue you just created. Include the full body and any labels.
Claude прочитает его обратно через get_issue. Затем зайдите в свой GitHub-репозиторий в браузере, чтобы убедиться, что issue там.
Теперь создайте ещё один issue:
Create an issue titled "Add health check endpoints" with a body describing
the need for /health and /ready endpoints for Kubernetes liveness and
readiness probes. Label it with "enhancement" and "infrastructure".
Шаг 5: Комментирование issue или PR через MCP (~3 мин)
Давайте взаимодействовать с существующими issues. Попросите Claude:
Add a comment to issue #1 on ai-coderrank that says:
"Investigated this — the dark theme implementation is in src/app/providers.tsx
and uses next-themes. Documentation should cover:
1. How the ThemeProvider works
2. The useTheme() hook for components that need theme-aware styling
3. How to add new theme-sensitive components
Will pick this up in a future block."
Claude использует инструмент add_issue_comment. Комментарий появится на issue так, как если бы вы набрали его в GitHub UI.
Если у вас есть открытые PR, попробуйте:
List all open pull requests on ai-coderrank. For each one, show the title,
author, and number of changed files.
И затем:
Add a review comment to PR #<number> that says "Looks good! Just one note —
make sure the resource limits are set in the K8s deployment."
Что вы видите: Claude перемещается по вашему GitHub-воркфлоу целиком из терминала. Никаких вкладок браузера, никакого переключения контекста. Трекинг задач, ревью кода и разработка – всё в одном месте.
Шаг 6: Настройка Filesystem MCP (~3 мин)
Filesystem MCP-сервер позволяет Claude получать доступ к директориям за пределами текущего проекта. Это полезно, когда нужно, чтобы Claude обращался к конфигурациям, скриптам или данным в другом месте.
Используйте CLI для добавления:
claude mcp add filesystem --scope project -- npx -y @modelcontextprotocol/server-filesystem ~/.kube ~/scripts
Это добавит filesystem-сервер рядом с существующим GitHub-сервером в .mcp.json. Filesystem MCP-сервер принимает пути к директориям как аргументы – Claude может получить доступ к файлам только внутри этих директорий, не где-либо ещё.
Перезапустите Claude и протестируйте:
Using the filesystem MCP, read my kubeconfig at ~/.kube/config-do and tell me
what cluster it points to, what user credentials it uses, and whether the
certificate is Base64-encoded or a file reference.
Claude использует filesystem MCP для чтения файла за пределами директории проекта – то, что он обычно не может сделать.
Шаг 7: Управление разрешениями MCP (~3 мин)
Теперь, когда у вас есть MCP-инструменты, давайте контролировать, что Claude может с ними делать.
В сессии Claude выполните:
/permissions
Вы увидите стандартный список разрешений плюс MCP-инструменты. Они следуют шаблону именования mcp__<server>__<tool>:
mcp__github__create_issue
mcp__github__list_issues
mcp__github__create_pull_request
mcp__github__merge_pull_request
mcp__filesystem__read_file
mcp__filesystem__write_file
Вы можете разрешать или запрещать конкретные инструменты. Для безопасности заблокируем опасные:
Update permissions to deny these MCP tools:
- mcp__github__merge_pull_request (don't want accidental merges)
- mcp__github__delete_branch (protect branches)
- mcp__filesystem__write_file (read-only filesystem access)
Это запишется в ваш .claude/settings.json:
{
"permissions": {
"allow": [
"Read", "Glob", "Grep", "Write", "Edit", "Bash",
"mcp__github__list_issues",
"mcp__github__get_issue",
"mcp__github__create_issue",
"mcp__github__add_issue_comment",
"mcp__github__list_pull_requests",
"mcp__github__create_pull_request",
"mcp__filesystem__read_file",
"mcp__filesystem__list_directory"
],
"deny": [
"mcp__github__merge_pull_request",
"mcp__github__delete_branch",
"mcp__filesystem__write_file"
]
}
}
Теперь Claude может создавать issues и PR, но не может мержить или удалять. Он может читать ваш kubeconfig, но не может его изменять. Это принцип наименьших привилегий, применённый к ИИ-инструментам.
Проверка разрешений
Try to merge pull request #1 on ai-coderrank.
Claude должен сообщить, что у него нет разрешения на использование этого инструмента.
Шаг 8: Исследование экосистемы MCP (~3 мин)
GitHub и filesystem серверы – это только начало. Вот краткий обзор того, что ещё есть:
Где найти MCP-серверы
- Официальный реестр: https://github.com/modelcontextprotocol/servers
- Каталог MCP: https://mcp.so
- Список Anthropic: Смотрите документацию Claude Code для официально поддерживаемых серверов
Примечательные серверы, достойные изучения
| Сервер | Что делает | Установка |
|---|---|---|
| Slack | Отправка/чтение сообщений, управление каналами | @anthropic/mcp-slack |
| Linear | Issues, проекты, циклы | @linear/mcp-server |
| PostgreSQL | Запросы к базам данных, инспекция схем | @modelcontextprotocol/server-postgres |
| Docker | Управление контейнерами, образами, томами | @modelcontextprotocol/server-docker |
| Puppeteer | Автоматизация браузера, скриншоты | @modelcontextprotocol/server-puppeteer |
| Memory | Постоянный граф знаний | @modelcontextprotocol/server-memory |
Как оценивать MCP-сервер от сообщества
Прежде чем добавлять любой MCP-сервер в конфигурацию, проверьте:
- Исходный код – Открытый ли он? Можете ли вы прочитать, что он делает?
- Разрешения – Какие API-scopes ему нужны? (Чем меньше, тем лучше)
- Поддержка – Когда был последний коммит? Решаются ли issues?
- Звёзды/форки – Валидация сообщества (не окончательная, но сигнал)
- Обработка токенов – Безопасно ли он обрабатывает учётные данные?
Правило: Официальные серверы от Anthropic и организации MCP безопасны. Серверы от сообщества следует проверять как любую зависимость с открытым кодом – проверяйте код, мейнтейнера и запрашиваемые разрешения.
Контрольная точка
Ваша настройка MCP:
.mcp.json
├── github (MCP server)
│ ├── list_issues ✓ allowed
│ ├── create_issue ✓ allowed
│ ├── add_issue_comment ✓ allowed
│ ├── create_pull_request ✓ allowed
│ ├── merge_pull_request ✗ denied
│ └── delete_branch ✗ denied
└── filesystem (MCP server)
├── read_file ✓ allowed
├── list_directory ✓ allowed
└── write_file ✗ denied
Вы:
- Настроили два MCP-сервера (GitHub и filesystem)
- Создавали issues и комментарии прямо из Claude
- Настроили точные разрешения для MCP-инструментов
- Исследовали экосистему MCP
Claude больше не ограничен вашей локальной кодовой базой. Он может взаимодействовать с вашими GitHub-проектами, читать конфигурации из других директорий и – с дополнительными MCP-серверами – подключаться практически к любому инструменту в вашем рабочем процессе разработки.
Бонусные задания
Задание 1: Полный воркфлоу issue Создайте issue, внесите изменение в код для его исправления, закоммитьте фикс и попросите Claude открыть PR, ссылающийся на issue – всё в одной сессии, всё через MCP-инструменты. Это мечта: от issue до PR без выхода из терминала.
Create an issue titled "Add /health endpoint for K8s readiness probe". Then
implement the fix, commit it to a new branch, push it, and create a PR that
closes the issue. Do the whole workflow.
Задание 2: Добавление Slack MCP Если ваша команда использует Slack, настройте Slack MCP-сервер и попросите Claude отправлять сообщение, когда деплой завершён. Скомбинируйте это с хуком Stop из Блока 8 для автоматических уведомлений.
Задание 3: Database MCP Если ai-coderrank использует базу данных, настройте PostgreSQL MCP-сервер и попросите Claude исследовать схему, описать таблицы и предложить улучшения индексов.
Далее: В Блоке 10 мы выводим Claude за пределы вашего терминала и помещаем в CI/CD-пайплайн. GitHub Actions с Claude Code – автоматизированные ревью PR, реализация из issues и ИИ-воркфлоу, которые запускаются при каждом push.
Готовы проверить себя?
Пройти квиз →