MCP-сервери — підключення зовнішніх інструментів
Практичні кроки для Блоку 09.
Пряма мова: “Все на цій практичній сторінці побудовано так, щоб ви могли повторювати за мною рядок за рядком. Коли бачите блок з командою або промптом, можете копіювати його прямо у термінал або сесію Claude, якщо я явно не скажу, що це лише довідковий матеріал. По ходу порівнюйте свій результат з моїм на екрані, щоб відловлювати помилки одразу, а не накопичувати їх.”
Тривалість: ~25 хвилин Результат: Інтеграція GitHub MCP для управління issues та PR, filesystem MCP для крос-директорного доступу та управління дозволами MCP-інструментів. Передумови: Виконані блоки 0-8, акаунт GitHub, CLI
ghвстановлений та автентифікований, Node.js встановлений
Крок 1: Додавання GitHub MCP-сервера (~5 хв)
Рекомендований спосіб налаштування MCP-серверів — команда claude mcp add. Вона записує конфігурацію в .mcp.json (на рівні проєкту з --scope project) або ~/.claude.json (на рівні користувача з --scope user) автоматично — без ручного редагування JSON.
Спершу вам потрібен GitHub personal access token. Якщо у вас його немає:
- Перейдіть на https://github.com/settings/tokens
- Натисніть Generate new token (classic)
- Назвіть його
claude-code-mcp - Оберіть скоупи:
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 у runtime — фактичний токен ніколи не зберігається у файлі. Якщо.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? - Чи
.mcp.jsonє валідним 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 там є.
Тепер створіть ще один:
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-воркфлоу повністю з терміналу. Жодних вкладок браузера, жодного перемикання контексту. Управління issues, код-рев’ю та розробка — все в одному місці.
Крок 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, але не може його змінювати. Це принцип найменших привілеїв, застосований до AI-інструментів.
Тестування дозволів
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 | Управління контейнерами, образами, volumes | @modelcontextprotocol/server-docker |
| Puppeteer | Автоматизація браузера, скріншоти | @modelcontextprotocol/server-puppeteer |
| Memory | Персистентний граф знань | @modelcontextprotocol/server-memory |
Як оцінити community MCP-сервер
Перед додаванням будь-якого MCP-сервера у конфігурацію перевірте:
- Вихідний код — Він open source? Можете прочитати, що він робить?
- Дозволи — Які API-скоупи йому потрібні? (Менше = краще)
- Підтримка — Коли був останній коміт? Чи відповідають на issues?
- Зірки/форки — Валідація спільнотою (не остаточна, але сигнал)
- Обробка токенів — Чи безпечно обробляє облікові дані?
Правило: Офіційні сервери від Anthropic та організації MCP безпечні. Community-сервери слід переглядати як будь-яку open-source залежність — перевірте код, мейнтейнера та дозволи.
Контрольна точка
Ваше MCP-налаштування:
.mcp.json
├── github (MCP server)
│ ├── list_issues ✓ дозволено
│ ├── create_issue ✓ дозволено
│ ├── add_issue_comment ✓ дозволено
│ ├── create_pull_request ✓ дозволено
│ ├── merge_pull_request ✗ заборонено
│ └── delete_branch ✗ заборонено
└── filesystem (MCP server)
├── read_file ✓ дозволено
├── list_directory ✓ дозволено
└── write_file ✗ заборонено
Ви:
- Налаштували два 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 та AI-powered воркфлоу, що запускаються на кожному push.
Готові перевірити свої знання?
Пройти тест →