Course
В этом учебнике я покажу, как подключить Claude Code к GitHub с помощью коннектора Claude (построенного на Model Context Protocol) и использовать его для полного разбора задач в open-source репозитории от начала до конца.
В процессе работы ничего не клонируется, не требуется векторное хранилище и не изменяется ни одной строки в целевом репозитории. Вместо этого Claude Code читает обсуждения через коннектор и записывает артефакты в вашу локальную файловую систему, чтобы вы могли их просмотреть, прежде чем решать, что (и нужно ли вообще) публиковать.
К концу этого учебника у вас будет:
- Рабочая связка Claude Code и GitHub MCP с токеном только для чтения,
- Несколько многоразовых подсказок, которые можно направить на любой публичный репозиторий,
- Полный артефакт triage для
langchain-ai/langchain, с которым можно свериться.
Что такое GitHub-коннектор Claude Code (MCP)?
Claude Code — это терминальный агент для кодирования от Anthropic.
Из коробки он уже имеет доступ к вашей файловой системе, оболочке и git. Коннекторы Claude Code расширяют его, позволяя получать внешний контекст, такой как обсуждения GitHub, задания Linear, сообщения Slack, запросы к Postgres и так далее, к которым терминал сам по себе доступа не имеет.
Протокол коннектора называется MCP (Model Context Protocol) — это открытый стандарт для предоставления инструментов и данных агентам LLM.
Anthropic поддерживает каталог готовых к использованию коннекторов; вы также можете написать свой собственный или подключиться к сторонним MCP-серверам.
В этом учебнике мы используем официальный GitHub MCP сервер, который запускается локально через Docker. Основные идеи настройки:
- Запускается как локальный контейнер Docker без облачного посредника, поэтому учетные данные остаются на вашей машине.
- Аутентифицируется стандартным персональным токеном доступа GitHub (PAT), поэтому не нужно регистрировать OAuth‑приложение.
- Поддерживает ограниченные разрешения, например PAT без областей (unscoped), который дает доступ только для чтения к публичным репозиториям, так что запись невозможна на уровне GitHub API.
- Экспортируется в Claude Code через команду
claude mcp add, после чего инструменты доступны в каждой сессии.
Разбор задач в open-source — это в основном чтение, суждения и невысокая цена ошибки.
Прочитать 50 обсуждений и сгруппировать их — скучная работа для человека, но она хорошо подходит модели, которая может держать все в контексте сразу.
Кроме того, мы сначала записываем результаты в локальные файлы: неудачный кластер или неуклюжий черновик ничего не стоит, и вы поймаете это при проверке.
Учебник по GitHub-коннектору Claude Code: строим triage для langchain-ai/langchain
В этом разделе мы настроим коннектор GitHub в Claude Code и запустим четыре подсказки для triage в langchain-ai/langchain. Это крупный ML‑репозиторий с по‑настоящему запутанным трекером задач. В общих чертах мы сделаем следующее:
- Подключим Claude Code к GitHub через официальный MCP‑сервер, работающий в Docker,
- Используем PAT без областей, чтобы коннектор был по своей сути только для чтения,
- Запустим подсказки triage, сохраняющие результаты в локальные файлы,
- Проверим результаты, включая случаи, когда Claude отказался объединять задачи как дубликаты.
Сделаем это шаг за шагом.
Шаг 1. Установите необходимые компоненты для Claude Code и Docker
Перед настройкой коннектора вам понадобятся три вещи:
- Claude Code: можно установить по официальной инструкции от Anthropic,
- Docker Desktop: официальный сервер GitHub MCP работает в контейнере, поэтому Docker должен быть установлен и запущен,
- Аккаунт GitHub: понадобится для генерации PAT на следующем шаге.
Когда все установлено, проверьте, что Docker запущен:
docker info | head -5
Если Docker не установлен или демон не запущен, вы увидите ошибку «Cannot connect to the Docker daemon». На macOS запустите Docker Desktop командой:
open -a Docker
Docker Desktop требуется 15–60 секунд, чтобы полностью приготовиться к работе, и docker info будет выдавать ошибку в это время. Вместо ручной проверки используйте небольшой однострочник ожидания, который опрашивает демон до готовности:
until
docker info >/dev/null 2>&1; do sleep 2; echo "waiting..."; done && echo "Docker ready"
Когда появится Docker ready, можно двигаться дальше.
Шаг 2. Создайте токен GitHub только для чтения
После настройки Docker перейдите на github.com/settings/tokens и сгенерируйте новый классический токен.
Важно: оставьте все области (scopes) невыбранными. Токен без областей по‑прежнему может читать публичные репозитории через GitHub API — этого нашему агенту достаточно. Без выбранных областей токен не сможет ничего записывать, изменять или удалять на GitHub, независимо от того, что мы попросим Claude сделать. Это жесткая гарантия на стороне GitHub, а не обещание о поведении агента.
Сразу после генерации скопируйте и сохраните токен, затем экспортируйте его в вашей оболочке:
export GITHUB_PERSONAL_ACCESS_TOKEN="ghp_your_token_here"
Если вы уже находитесь внутри сессии Claude Code, может возникнуть соблазн использовать префикс !, чтобы выполнить команду экспорта прямо в оболочке (например, ! export GITHUB_PERSONAL_ACCESS_TOKEN="...").
Однако из‑за того, что ! порождает временную подпроцессовую оболочку, переменная исчезнет сразу после завершения команды, и Claude ее не увидит.
Чтобы безопасно задать токен, не вставляя его в подсказку модели, есть два варианта:
- Введите
/exit, чтобы выйти из Claude, выполните команду экспорта в обычном терминале и перезапустите claude. - Либо сохраните токен в локальном файле
.envв рабочем каталоге — Claude Code автоматически читает его при запуске.
Убедитесь, что оба предварительных условия выполнены, не выводя сам токен:
docker info | head -3
echo "Token set: ${GITHUB_PERSONAL_ACCESS_TOKEN:+yes}"
Вторая команда выведет Token set: yes, если переменная существует, и Token set: (ничего после двоеточия), если она пустая.
Это безопаснее, чем эхо самого токена, так как нет риска, что он окажется в истории вашей оболочки в открытом виде.
Шаг 3. Зарегистрируйте GitHub‑коннектор в Claude Code
Официальный сервер GitHub MCP поставляется как Docker‑образ.
Зарегистрируем его в Claude Code с помощью claude mcp add:
claude mcp add github \
-e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PERSONAL_ACCESS_TOKEN \
-- docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN \
ghcr.io/github/github-mcp-server
Два флага -e здесь не опечатка:
- Первый
-e(до --) задает переменную окружения для процесса MCP, который запускает Claude Code, - Второй
-e(в аргументахdocker run) говорит Docker пробросить эту переменную внутрь контейнера.
Если пропустить любой из них и контейнер запустится с пустым токеном, аутентификация в GitHub API провалится.
Чтобы проверить, что коннектор успешно зарегистрирован:
claude mcp list
Вы должны увидеть:
github — docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server — Connected
Если видите Failed to connect, чаще всего причина в том, что не запущен Docker или переменная GITHUB_PERSONAL_ACCESS_TOKEN не экспортирована в той же оболочке, где вы выполняли claude mcp add.
Шаг 4. Базовая проверка соединения
Токен GitHub установлен. Создадим рабочий каталог и откроем CLI Claude Code:
mkdir demo && cd demo
claude
Команда claude запускает интерактивную сессию в текущем каталоге.
Все файлы, которые Claude создаст в процессе triage, окажутся здесь.
Далее задайте простой запрос только для чтения, чтобы подтвердить использование коннектора:
Using the GitHub MCP connector, fetch the 5 most recently updated open issues in langchain-ai/langchain. Just list titles and numbers.
При первом использовании инструмента GitHub Claude Code запросит подтверждение.
Одобрите инструменты только для чтения, такие как list_issues, get_issue, search_issues и т. д.
Если Claude вместо инструментов MCP переходит к curl против публичного GitHub API, значит, коннектор не загружен. В этом случае выйдите из сессии и запустите ее заново.
Успешный запуск вернет что-то вроде:

Как только вы увидите реальные номера обсуждений, приходящие через MCP, можно переходить к настоящему triage.
Шаг 5. Сгенерируйте сводку бэклога
Разминка — это чистое чтение. Сначала нам нужна «карта» трекера задач, прежде чем делать что-либо еще.
Prompt:
Using the GitHub MCP connector, pull the 50 most recently updated open issues from langchain-ai/langchain.
Read their titles, bodies, and labels. Group them by likely area — bugs, feature requests, documentation, questions, and "needs more info."
For each group, give me a count and 3-5 representative issue numbers with a one-line reason. Save as backlog-summary.md in the current directory.

Claude Code извлекает обсуждения через коннектор, читает их и записывает markdown‑файл, группируя их по областям с представительными номерами задач. Один этот файл уже полезен: мейнтейнер может пробежать его за 60 секунд и понять, какая неделя его ждет.
Шаг 6. Пометьте кандидатов на дубликаты
Поиск дубликатов — то, где агент действительно окупается.
Прочитать 50 обсуждений целиком и сгруппировать по корневой проблеме — утомительно для человека, но модель может держать их все в контексте и заметить пересечения, которые пропустит поиск по ключевым словам.
Prompt:
From the same 50 issues you already pulled, identify clusters of likely duplicates: issues describing the same underlying problem, even if titles differ. For each cluster, output issue numbers, a one-sentence shared-problem description, and confidence (high/medium/low). Save as duplicate-candidates.md.
Вот что Claude фактически выдал у меня при запуске:

Самая интересная часть этого результата — кластеры 2–4.
Наивный детектор дубликатов на базе ключевых слов закрыл бы все четыре кластера как дубликаты.
Claude явно отказался называть их дубликатами.
Он пометил их как кластеры компонентов с одной подсистемой, разными корневыми причинами и указал, какие действительно стоит закрыть (только кластер 1), а какие разбирать вместе, но оставить открытыми.
Именно такого поведения вы ждете от внимательного человека, занимающегося triage, и это как раз причина, почему схема «сначала локальные файлы, потом ревью» стоит лишнего шага.
Если бы мы напрямую подключили это к GitHub API и автоматически закрывали всё, что пометил Claude, мы бы закрыли три реальных бага.
Шаг 7. Проверьте и решите, что публиковать
В этом и состоит весь смысл схемы с локальными файлами.
Прежде чем что‑то попадет на GitHub, проверьте каждый сохраненный Claude файл .md и оцените, соответствует ли группировка вашей интуиции.
Похожи ли кластеры с высокой уверенностью на настоящие дубликаты? Прочитайте 2–3 черновых ответа и проверьте, звучат ли они «как вы».
Если вы хотите действительно опубликовать комментарии или применить метки, есть два варианта:
- Вручную: вы можете вставить черновики в GitHub сами. Для разового triage в чужом репозитории это нормально и часто лучший выбор.
- Разрешить запись в вашем репозитории: сгенерируйте отдельный PAT с областью repo, добавьте его как отдельную запись коннектора (например, github-write) и перезапустите подсказки, попросив Claude применить метки и опубликовать комментарии. Claude Code запросит одобрение для каждого инструмента записи при первом использовании.
Ключевой элемент безопасности для пути записи — держать токены чтения и записи раздельно.
Заключение
В этом учебнике я показал, как подключить Claude Code к GitHub через MCP и использовать его, чтобы полностью провести triage реального open-source репозитория.
Вместо того чтобы создавать собственного бота GitHub или настраивать webhooks, рабочий процесс читает обсуждения через официальный сервер GitHub MCP, записывает четыре артефакта triage в локальные файлы и позволяет вам всё просмотреть, прежде чем решать, что публиковать.
Главный вывод шире: коннекторы превращают Claude Code из агента для кодирования в инструмент, который умеет читать ваши инструменты и готовить работу к вашему ревью.
Правильный дефолт — держать эту работу локально, пока вы ее не увидите; а когда вы доверитесь схеме, можно выборочно позволить агенту действовать там, где цена ошибки низка.
Далее можно расширить проект несколькими способами:
- Добавить коннекторы с правами записи в ваши репозитории, чтобы метки и комментарии применялись автоматически после ревью,
- Подключить коннекторы Linear или Slack, чтобы синхронизировать решения triage с рабочим процессом команды,
- Превратить подсказки в запланированную CI‑задачу, создающую еженедельный PR с triage,
- Или обобщить подсказки в настраиваемую slash‑команду Claude Code, работающую с любым URL репозитория.
FAQs
Нужна ли подписка GitHub Copilot для использования сервера GitHub MCP?
Нет. Хотя GitHub предлагает удаленную HTTP‑конечную точку (api.githubcopilot.com/mcp), к которой можно аутентифицироваться стандартным Personal Access Token, запуск локального Docker‑образа (как в этом учебнике) сохраняет соединение локальным на вашей машине. Ни один из методов не требует подписки на Copilot, но подход с Docker гарантирует, что ваш токен никогда не покинет локальную среду.
Почему оставлять все области PAT невыбранными?
Классический PAT без областей (unscoped) может читать публичные репозитории через GitHub API, но не может ничего записывать, изменять или удалять где бы то ни было. Это делает весь учебник по своей конструкции только для чтения: даже если Claude попробует опубликовать комментарий, GitHub отклонит запрос с 403. Для triage в чужих репозиториях это максимально безопасная настройка.
Что делать, если коннектор показывает «Failed to connect»?
Две частые причины: Docker не запущен (docker info должен возвращать информацию о сервере, а не ошибку) или переменная GITHUB_PERSONAL_ACCESS_TOKEN не экспортирована в оболочке, где вы выполняли claude mcp add. Исправьте соответствующее, удалите и заново добавьте коннектор, затем перезапустите сессию Claude Code.
Публикует ли Claude Code что‑нибудь в GitHub в ходе этого учебника?
Нет. Все подсказки — только для чтения, все выходные данные записываются в локальные файлы, а PAT без областей физически не может писать в GitHub. Вы контролируете, будет ли вообще что‑то опубликовано.
Можно ли запускать это по расписанию?
Да. Оберните подсказки в shell‑скрипт, который запускает Claude Code в неинтерактивном режиме (см. флаги --print и -p CLI claude в официальной документации), затем запускайте его через cron или GitHub Actions. Коммитите артефакты в ветку и открывайте PR на ревью.
Можно ли настроить это через меню коннекторов «+» в веб‑приложении Claude?
Нет, такой сценарий предназначен для чатов Claude.ai / Desktop / мобильных. Claude Code использует CLI. Но после настройки обе поверхности могут использовать одни и те же MCP‑серверы под капотом.