Официальный MCP-сервер GitHub для поиска репозиториев, задач, запросов на включение изменений, контекста кода и рабочих процессов GitHub в MCP-совместимых AI-клиентах.
Исследование репозитория — Попросите вашего ассистента просматривать репозитории, искать файлы и понимать структуру проекта с помощью таких инструментов, как get_file_contents.
Управление issues и PR — Позвольте вашему ИИ создавать, обновлять и сортировать issues и pull request'ы, включая проверку изменений кода и ведение проектных досок.
Мониторинг CI/CD — Получайте информацию о запусках рабочих процессов GitHub Actions, анализируйте сбои сборки и управляйте релизами с помощью запросов на естественном языке.
Анализ безопасности кода — Изучайте результаты проверок безопасности, просматривайте оповещения Dependabot и понимайте паттерны кода в вашей кодовой базе.
Командное сотрудничество — Получайте доступ к обсуждениям, управляйте уведомлениями и анализируйте активность команды для оптимизации процессов разработки.
Документация
GitHub MCP Server
Сервер GitHub MCP подключает инструменты искусственного интеллекта напрямую к платформе GitHub. Это дает AI-агентам, ассистентам и чат-ботам возможность читать репозитории и файлы кода, управлять issues и PR, анализировать код и автоматизировать рабочие процессы. Все это через взаимодействие на естественном языке.
Варианты использования
Управление репозиториями: просмотр и поиск кода, поиск файлов, анализ коммитов и понимание структуры проекта в любом репозитории, к которому у вас есть доступ.
Автоматизация issues и PR: создание, обновление и управление issues и pull request'ами. Позвольте AI помогать с триажем багов, ревью изменений кода и поддержанием досок проекта.
Интеллект CI/CD и рабочих процессов: мониторинг запусков GitHub Actions, анализ ошибок сборки, управление релизами и получение информации о вашем конвейере разработки.
Анализ кода: изучение результатов проверки безопасности, просмотр предупреждений Dependabot, понимание паттернов кода и получение всесторонней информации о вашей кодовой базе.
Командное взаимодействие: доступ к обсуждениям, управление уведомлениями, анализ активности команды и оптимизация процессов для вашей команды.
Создан для разработчиков, которые хотят подключить свои AI-инструменты к контексту и возможностям GitHub — от простых запросов на естественном языке до сложных многошаговых агентских рабочих процессов.
Удаленный GitHub MCP Server
Удаленный GitHub MCP Server размещается на GitHub и предоставляет самый простой способ начать работу. Если ваш MCP-хост не поддерживает удаленные MCP-серверы, не переживайте! Вы можете использовать локальную версию GitHub MCP Server.
Предварительные требования
Совместимый MCP-хост с поддержкой удаленных серверов (VS Code 1.101+, Claude Desktop, Cursor, Windsurf и т.д.)
Для быстрой установки используйте одну из кнопок установки в один клик выше. После завершения этого процесса переключите режим Agent (расположен рядом с полем ввода текста Copilot Chat), и сервер запустится. Убедитесь, что вы используете VS Code 1.101 или более позднюю версию для поддержки удаленного MCP и OAuth.
В качестве альтернативы, для ручной настройки VS Code выберите подходящий JSON-блок из примеров ниже и добавьте его в конфигурацию вашего хоста:
Rovo Dev CLI — Руководство по установке для Rovo Dev CLI
Примечание: Каждому MCP-хосту необходимо настроить GitHub App или OAuth App для поддержки удаленного доступа через OAuth. Любой хост, поддерживающий удаленные MCP-серверы, должен поддерживать удаленный GitHub-сервер с аутентификацией PAT. Детали конфигурации и уровни поддержки различаются в зависимости от хоста. Обязательно обратитесь к документации хост-приложения для получения дополнительной информации.
Конфигурация
Конфигурация набора инструментов
См. Документацию удаленного сервера для получения полной информации о конфигурации удаленного сервера, наборах инструментов, заголовках и расширенном использовании. Этот файл содержит подробные инструкции и примеры для подключения, настройки и установки удаленного GitHub MCP Server в VS Code и других MCP-хостах.
Примечание: При использовании OAuth с GitHub Enterprise в VS Code и GitHub Copilot вам также необходимо настроить параметры VS Code для указания на ваш экземпляр GitHub Enterprise — см. Аутентификация из VS Code
Для запуска сервера в контейнере вам потребуется установить Docker.
После установки Docker убедитесь, что Docker запущен. Образ Docker доступен по адресу ghcr.io/github/github-mcp-server. Образ публичный; если при загрузке возникают ошибки, возможно, у вас истек срок действия токена, и вам необходимо docker logout ghcr.io.
Аутентификация. На github.com вам не нужно ничего создавать заранее — кнопки в один клик выше выполняют вход через OAuth при первом использовании (процесс через браузер; токен хранится только в памяти). Кнопки Docker публикуют фиксированный порт обратного вызова (127.0.0.1:8085), чтобы обратный вызов входа в контейнер был доступен. См. Локальный вход через OAuth для получения информации о том, как это работает, о резервном варианте headless/device-code, а также о возможности использовать собственный OAuth или GitHub App (требуется для GitHub Enterprise Server и ghe.com).
Предпочитаете токен? Вы все еще можете аутентифицироваться с помощью GitHub Personal Access Token, установив GITHUB_PERSONAL_ACCESS_TOKEN (он имеет приоритет над OAuth). MCP-сервер может использовать многие API GitHub, поэтому включите разрешения, которые вы готовы предоставить своим AI-инструментам (чтобы узнать больше о токенах доступа, ознакомьтесь с документацией).
Безопасная обработка PAT
Переменные окружения (рекомендуется)
Чтобы ваш GitHub PAT был безопасным и переиспользуемым в разных MCP-хостах:
Сохраните ваш PAT в переменных окружения
export GITHUB_PAT=your_token_here
Или создайте файл .env:
GITHUB_PAT=your_token_here
Защитите ваш файл .env
# Add to .gitignore to prevent accidental commits
echo ".env" >> .gitignore
Укажите токен в конфигурациях
# CLI usage
claude mcp add github -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PAT -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
# In config files (where supported)
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "$GITHUB_PAT"
}
Примечание: Поддержка переменных окружения различается в зависимости от хост-приложения и IDE. Некоторые приложения (например, Windsurf) требуют жестко заданных токенов в файлах конфигурации.
Рекомендации по безопасности токенов
Минимальные области действия: предоставляйте только необходимые разрешения
repo — операции с репозиториями
read:packages — доступ к образам Docker
read:org — доступ к командам организации
Отдельные токены: используйте разные PAT для разных проектов/окружений
Регулярная ротация: периодически обновляйте токены
Никогда не коммитьте: не храните токены в системе контроля версий
Права на файлы: ограничьте доступ к файлам конфигурации, содержащим токены
chmod 600 ~/.your-app/config.json
GitHub Enterprise Server и Enterprise Cloud с резиденцией данных (ghe.com)
Флаг --gh-host и переменная окружения GITHUB_HOST могут использоваться для установки
имени хоста для GitHub Enterprise Server или GitHub Enterprise Cloud с резиденцией данных.
Для GitHub Enterprise Server добавьте префикс https:// URI-схемы к имени хоста. HTTPS обязателен и принудительно применяется: хосты без HTTPS отклоняются, чтобы учетные данные никогда не передавались открытым текстом (единственное исключение — loopback-хост, такой как http://localhost, для локальной разработки).
Для GitHub Enterprise Cloud с резиденцией данных используйте https://YOURSUBDOMAIN.ghe.com в качестве имени хоста.
Для быстрой установки используйте одну из кнопок установки в один клик выше. После завершения этого процесса переключите режим Agent (расположен рядом с полем ввода текста Copilot Chat), и сервер запустится.
Установка в GitHub Copilot в других IDE (JetBrains, Visual Studio, Eclipse и т.д.)
Добавьте один из следующих JSON-блоков в настройки MCP вашей IDE.
Вход через OAuth (не нужно создавать или хранить токен). На github.com официальный образ уже включает учетные данные приложения, поэтому вам не нужно предоставлять свои: при первом использовании запускается вход через браузер, а полученный токен хранится только в памяти. В Docker для этого необходимо опубликовать фиксированный порт обратного вызова на loopback, чтобы обратный вызов входа в контейнер был доступен:
См. Локальный вход через OAuth для получения информации о процессе с нативным бинарным файлом (фиксированный порт не требуется), резервном варианте headless/device-code, GitHub Enterprise Server / ghe.com, а также о возможности использовать собственный OAuth или GitHub App.
При желании вы можете добавить аналогичный пример (т.е. без ключа mcp) в файл с именем .vscode/mcp.json в вашем рабочем пространстве. Это позволит вам поделиться конфигурацией с другими хост-приложениями, которые принимают тот же формат.
Примечание: Любое хост-приложение, поддерживающее локальные MCP-серверы, должно иметь возможность доступа к локальному GitHub MCP серверу. Однако конкретный процесс настройки, синтаксис и стабильность интеграции будут различаться в зависимости от хост-приложения. Хотя многие могут следовать формату, аналогичному приведенным выше примерам, это не гарантируется. Пожалуйста, обратитесь к документации вашего хост-приложения для получения правильного синтаксиса конфигурации MCP и процесса настройки.
Сборка из исходного кода
Если у вас нет Docker, вы можете использовать go build для сборки бинарного файла в каталоге
cmd/github-mcp-server, и использовать команду github-mcp-server stdio с переменной окружения GITHUB_PERSONAL_ACCESS_TOKEN, установленной на ваш токен. Чтобы указать место вывода сборки, используйте флаг -o. Вам следует настроить ваш сервер на использование собранного исполняемого файла в качестве его command. Например:
GitHub MCP Server поддерживает включение или отключение конкретных групп функциональности через флаг --toolsets. Это позволяет вам контролировать, какие возможности GitHub API доступны вашим AI-инструментам. Включение только тех наборов инструментов, которые вам нужны, может помочь LLM с выбором инструментов и уменьшить размер контекста.
Наборы инструментов не ограничиваются только инструментами. Соответствующие MCP-ресурсы и подсказки также включены, где это применимо.
Ищете примеры? См. Руководство по конфигурации сервера для распространенных рецептов, таких как минимальные настройки, режим только для чтения и комбинирование инструментов с наборами инструментов.
Указание наборов инструментов
Чтобы указать наборы инструментов, которые вы хотите сделать доступными для LLM, вы можете передать список разрешений двумя способами:
Переменная окружения GITHUB_TOOLSETS имеет приоритет над аргументом командной строки, если указаны оба.
Указание отдельных инструментов
Вы также можете настроить конкретные инструменты с помощью флага --tools. Инструменты можно использовать независимо или комбинировать с наборами инструментов для точного контроля.
Это регистрирует все инструменты из наборов инструментов repos и issues, плюс get_gist.
Важные примечания:
Инструменты и наборы инструментов можно использовать вместе
Режим только для чтения имеет приоритет: инструменты записи пропускаются, если установлен --read-only, даже если они явно запрошены через --tools
Имена инструментов должны точно совпадать (например, get_file_contents, а не getFileContents). Неверные имена инструментов приведут к сбою сервера при запуске с сообщением об ошибке
Когда инструменты переименовываются, старые имена сохраняются как псевдонимы для обратной совместимости. См. Переименование инструментов для подробностей.
Использование наборов инструментов с Docker
При использовании Docker вы можете передать наборы инструментов как переменные окружения:
При использовании Docker вы можете передать конкретные инструменты как переменные окружения. Вы также можете комбинировать инструменты с наборами инструментов:
# Tools only
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
-e GITHUB_TOOLS="get_file_contents,issue_read,create_pull_request" \
ghcr.io/github/github-mcp-server
# Tools combined with toolsets (additive)
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
-e GITHUB_TOOLSETS="repos,issues" \
-e GITHUB_TOOLS="get_gist" \
ghcr.io/github/github-mcp-server
Специальные наборы инструментов
Набор инструментов "all"
Специальный набор инструментов all может быть предоставлен для включения всех доступных наборов инструментов независимо от любой другой конфигурации:
./github-mcp-server --toolsets all
Или с использованием переменной окружения:
GITHUB_TOOLSETS="all" ./github-mcp-server
Набор инструментов "default"
Набор инструментов по умолчанию default — это конфигурация, которая передается серверу, если наборы инструментов не указаны.
Конфигурация по умолчанию:
context
repos
issues
pull_requests
users
Чтобы сохранить конфигурацию по умолчанию и добавить дополнительные наборы инструментов:
Настоятельно рекомендуется: Инструменты, предоставляющие контекст о текущем пользователе и контексте GitHub, в котором вы работаете
actions
Рабочие процессы GitHub Actions и операции CI/CD
code_quality
Инструменты, связанные с качеством кода GitHub
code_security
Инструменты, связанные с безопасностью кода, такие как GitHub Code Scanning
copilot
Инструменты, связанные с Copilot
copilot_issue_intents
Опциональные инструменты назначения задач Copilot, которые несут метаданные намерения (обоснование, уверенность, предложение)
dependabot
Инструменты Dependabot
discussions
Инструменты, связанные с обсуждениями GitHub
gists
Инструменты, связанные с GitHub Gist
git
Инструменты, связанные с GitHub Git API для низкоуровневых операций Git
issues
Инструменты, связанные с проблемами GitHub
labels
Инструменты, связанные с метками GitHub
notifications
Инструменты, связанные с уведомлениями GitHub
orgs
Инструменты, связанные с организациями GitHub
projects
Инструменты, связанные с проектами GitHub
pull_requests
Инструменты, связанные с pull request'ами GitHub
repos
Инструменты, связанные с репозиториями GitHub
secret_protection
Инструменты, связанные с защитой секретов, такие как GitHub Secret Scanning
security_advisories
Инструменты, связанные с консультациями по безопасности
stargazers
Инструменты, связанные с GitHub Stargazers
users
Инструменты, связанные с пользователями GitHub
Дополнительные наборы инструментов в удаленном GitHub MCP Server
Набор инструментов
Описание
copilot
Инструменты, связанные с Copilot (например, Copilot Coding Agent)
copilot_spaces
Инструменты, связанные с Copilot Spaces
github_support_docs_search
Поиск документации для ответов на вопросы о продуктах и поддержке GitHub
Инструменты
Actions
actions_get - Получить детали ресурсов GitHub Actions (рабочие процессы, запуски рабочих процессов, задания и артефакты)
OAuth Challenge Scopes: repo
method: Метод для выполнения (строка, обязательно)
owner: Владелец репозитория (строка, обязательно)
repo: Имя репозитория (строка, обязательно)
resource_id: Уникальный идентификатор ресурса. Он будет различаться в зависимости от предоставленного "метода", поэтому убедитесь, что вы предоставили правильный ID:
Укажите ID рабочего процесса или имя файла рабочего процесса (например, ci.yaml) для метода 'get_workflow'.
Укажите ID запуска рабочего процесса для методов 'get_workflow_run', 'get_workflow_run_usage' и 'get_workflow_run_logs_url'.
Укажите ID артефакта для метода 'download_workflow_run_artifact'.
Укажите ID задания для метода 'get_workflow_job'.
(строка, обязательно)
actions_list - Список рабочих процессов GitHub Actions в репозитории
OAuth Challenge Scopes: repo
method: Действие для выполнения (строка, обязательно)
owner: Владелец репозитория (строка, обязательно)
page: Номер страницы для пагинации (по умолчанию: 1) (число, необязательно)
per_page: Результатов на страницу для пагинации (по умолчанию: 30, максимум: 100) (число, необязательно)
repo: Имя репозитория (строка, обязательно)
resource_id: Уникальный идентификатор ресурса. Он будет различаться в зависимости от предоставленного "метода", поэтому убедитесь, что вы предоставили правильный ID:
Не предоставляйте идентификатор ресурса для метода 'list_workflows'.
Укажите ID рабочего процесса или имя файла рабочего процесса (например, ci.yaml) для метода 'list_workflow_runs', или опустите, чтобы перечислить все запуски рабочих процессов в репозитории.
Укажите ID запуска рабочего процесса для методов 'list_workflow_jobs' и 'list_workflow_run_artifacts'.
(строка, необязательно)
workflow_jobs_filter: Фильтры для заданий рабочего процесса. ТОЛЬКО используется, когда метод — 'list_workflow_jobs' (объект, необязательно)
workflow_runs_filter: Фильтры для запусков рабочего процесса. ТОЛЬКО используется, когда метод — 'list_workflow_runs' (объект, необязательно)
actions_run_trigger - Запуск действий рабочих процессов GitHub Actions
OAuth Challenge Scopes: repo
inputs: Входные данные, которые принимает рабочий процесс. Используется только для метода 'run_workflow'. (объект, необязательно)
method: Метод для выполнения (строка, обязательно)
owner: Владелец репозитория (строка, обязательно)
ref: Git-ссылка для рабочего процесса. Ссылка может быть именем ветки или тега. Требуется для метода 'run_workflow'. (строка, необязательно)
repo: Имя репозитория (строка, обязательно)
run_id: ID запуска рабочего процесса. Требуется для всех методов, кроме 'run_workflow'. (число, необязательно)
workflow_id: ID рабочего процесса (числовой) или имя файла рабочего процесса (например, main.yml, ci.yaml). Требуется для метода 'run_workflow'. (строка, необязательно)
get_job_logs - Получить журналы заданий рабочего процесса GitHub Actions
OAuth Challenge Scopes: repo
failed_only: Если true, получает журналы для всех неудачных заданий в запуске рабочего процесса, указанном run_id. Требуется предоставление run_id. (логическое значение, необязательно)
job_id: Уникальный идентификатор задания рабочего процесса. Требуется при получении журналов для одного задания. (число, необязательно)
owner: Владелец репозитория (строка, обязательно)
repo: Имя репозитория (строка, обязательно)
return_content: Возвращает фактическое содержимое журнала вместо URL-адресов (логическое значение, необязательно)
run_id: Уникальный идентификатор запуска рабочего процесса. Требуется, когда failed_only равно true, чтобы получить журналы для всех неудачных заданий в запуске. (число, необязательно)
tail_lines: Количество строк для возврата с конца журнала (число, необязательно)
Качество кода
get_code_quality_finding — Получить результат проверки качества кода
OAuth Challenge Scopes: repo
findingNumber: Номер результата. (number, required)
owner: Владелец репозитория. (string, required)
repo: Название репозитория. (string, required)
Безопасность кода
get_code_scanning_alert — Получить оповещение сканирования кода
OAuth Challenge Scopes: security_events
alertNumber: Номер оповещения. (number, required)
owner: Владелец репозитория. (string, required)
repo: Название репозитория. (string, required)
list_code_scanning_alerts — Список оповещений сканирования кода
OAuth Challenge Scopes: security_events
owner: Владелец репозитория. (string, required)
page: Номер страницы для пагинации (мин. 1) (number, optional)
perPage: Результатов на страницу для пагинации (мин. 1, макс. 100) (number, optional)
ref: Git-ссылка для результатов, которые вы хотите получить. (string, optional)
repo: Название репозитория. (string, required)
severity: Фильтр оповещений сканирования кода по серьезности (string, optional)
state: Фильтр оповещений сканирования кода по состоянию. По умолчанию — open (string, optional)
tool_name: Название инструмента, использованного для сканирования кода. (string, optional)
Контекст
get_me — Получить мой профиль пользователя
Параметры не требуются
get_team_members — Получить участников команды
OAuth Challenge Scopes: read:org
org: Логин организации (владелец), содержащей команду. (string, required)
team_slug: Slug команды (string, required)
get_teams — Получить команды
OAuth Challenge Scopes: read:org
user: Имя пользователя, для которого получить команды. Если не указано, используется аутентифицированный пользователь. (string, optional)
Copilot
assign_copilot_to_issue — Назначить Copilot на задачу
OAuth Challenge Scopes: repo
base_ref: Git-ссылка (например, ветка), с которой агент начнет работу. Если не указано, по умолчанию используется основная ветка репозитория (string, optional)
custom_instructions: Необязательные пользовательские инструкции для управления агентом помимо текста задачи. Используйте для предоставления дополнительного контекста, ограничений или указаний, не описанных в задаче (string, optional)
assign_copilot_to_issue_with_intent — Назначить Copilot на задачу с намерением
OAuth Challenge Scopes: repo
base_ref: Git-ссылка (например, ветка), с которой агент начнет работу. Если не указано, по умолчанию используется основная ветка репозитория. Игнорируется, если is_suggestion равно true (string, optional)
confidence: Насколько вы уверены в этом выборе. 'HIGH' — явный сигнал или явный запрос пользователя, 'MEDIUM' — разумное предположение с некоторой неоднозначностью, 'LOW' — предположение при ограниченных данных. (string, required)
custom_instructions: Необязательные пользовательские инструкции для управления агентом помимо текста задачи. Игнорируются, если is_suggestion равно true (string, optional)
is_suggestion: Если true, записывает ожидающее намерение назначения Copilot, а не запускает агента. Одобрение позже предоставляет контекст запуска; base_ref и custom_instructions в этом случае игнорируются. (boolean, required)
issue_number: Номер задачи (number, required)
owner: Владелец репозитория (string, required)
rationale: Одно краткое предложение, объясняющее, что именно в задаче привело к выбору Copilot. Укажите конкретный сигнал (например, 'Хорошо ограниченная задача с четкими критериями приемки'). (string, required)
repo: Название репозитория (string, required)
Dependabot
get_dependabot_alert — Получить оповещение Dependabot
OAuth Challenge Scopes: security_events
alertNumber: Номер оповещения. (number, required)
owner: Владелец репозитория. (string, required)
repo: Название репозитория. (string, required)
list_dependabot_alerts — Список оповещений Dependabot
OAuth Challenge Scopes: security_events
after: Курсор для пагинации. Используйте курсор из предыдущего ответа. (string, optional)
owner: Владелец репозитория. (string, required)
perPage: Результатов на страницу для пагинации (мин. 1, макс. 100) (number, optional)
repo: Название репозитория. (string, required)
severity: Фильтр оповещений Dependabot по серьезности (string, optional)
state: Фильтр оповещений Dependabot по состоянию. По умолчанию — open (string, optional)
Обсуждения
discussion_comment_write — Управление комментариями в обсуждениях
OAuth Challenge Scopes: repo
body: Содержимое комментария (обязательно для методов 'add', 'reply' и 'update') (string, optional)
commentNodeID: Node ID комментария в обсуждении (обязательно для методов 'reply', 'update', 'delete', 'mark_answer' и 'unmark_answer'). Для 'reply' это комментарий верхнего уровня, на который нужно ответить; GitHub Discussions поддерживает только один уровень вложенности. (string, optional)
discussionNumber: Номер обсуждения (обязательно для методов 'add' и 'reply') (number, optional)
method: Операция записи для выполнения над комментарием в обсуждении.
Варианты:
'add' — добавляет новый комментарий верхнего уровня в обсуждение.
'reply' — отвечает на комментарий верхнего уровня в обсуждении (GitHub Discussions поддерживает только один уровень вложенности).
'update' — обновляет существующий комментарий в обсуждении.
'delete' — удаляет комментарий в обсуждении.
'mark_answer' — помечает комментарий в обсуждении как ответ (только для Q&A).
'unmark_answer' — снимает пометку комментария в обсуждении как ответа (только для Q&A).
(string, required)
owner: Владелец репозитория (обязательно для методов 'add' и 'reply') (string, optional)
repo: Название репозитория (обязательно для методов 'add' и 'reply') (string, optional)
get_discussion — Получить обсуждение
OAuth Challenge Scopes: repo
discussionNumber: Номер обсуждения (number, required)
owner: Владелец репозитория (string, required)
repo: Название репозитория (string, required)
get_discussion_comments — Получить комментарии в обсуждении
OAuth Challenge Scopes: repo
after: Курсор для пагинации. Используйте курсор из предыдущего ответа. (string, optional)
discussionNumber: Номер обсуждения (number, required)
includeReplies: Если true, каждый комментарий верхнего уровня будет включать вложенные ответы (до 100 ответов на комментарий, что является максимумом для GitHub API). По умолчанию — false. (boolean, optional)
owner: Владелец репозитория (string, required)
perPage: Результатов на страницу для пагинации (мин. 1, макс. 100) (number, optional)
repo: Название репозитория (string, required)
list_discussion_categories — Список категорий обсуждений
OAuth Challenge Scopes: repo
owner: Владелец репозитория (string, required)
repo: Название репозитория. Если не указано, категории обсуждений будут запрошены на уровне организации. (string, optional)
list_discussions — Список обсуждений
OAuth Challenge Scopes: repo
after: Курсор для пагинации. Используйте курсор из предыдущего ответа. (string, optional)
category: Необязательный фильтр по ID категории обсуждения. Если указан, будут перечислены только обсуждения этой категории. (string, optional)
direction: Направление сортировки. (string, optional)
orderBy: Сортировка обсуждений по полю. Если указано, также необходимо указать 'direction'. (string, optional)
owner: Владелец репозитория (string, required)
perPage: Результатов на страницу для пагинации (мин. 1, макс. 100) (number, optional)
repo: Название репозитория. Если не указано, обсуждения будут запрошены на уровне организации. (string, optional)
Gists
create_gist — Создать Gist
OAuth Challenge Scopes: gist
content: Содержимое для простого создания однофайлового gist (string, required)
description: Описание gist (string, optional)
filename: Имя файла для простого создания однофайлового gist (string, required)
public: Является ли gist публичным (boolean, optional)
get_gist — Получить содержимое Gist
gist_id: ID gist (string, required)
list_gists — Список Gists
page: Номер страницы для пагинации (мин. 1) (number, optional)
perPage: Результатов на страницу для пагинации (мин. 1, макс. 100) (number, optional)
since: Только gist, обновленные после этого времени (метка времени ISO 8601) (string, optional)
username: Имя пользователя GitHub (опустите для gist аутентифицированного пользователя) (string, optional)
update_gist — Обновить Gist
OAuth Challenge Scopes: gist
content: Содержимое файла (string, required)
description: Обновленное описание gist (string, optional)
filename: Имя файла для обновления или создания (string, required)
gist_id: ID gist для обновления (string, required)
Git
- **get_repository_tree** - Получить дерево репозитория
- **OAuth Challenge Scopes**: `repo`
- `owner`: Владелец репозитория (имя пользователя или организация) (строка, обязательно)
- `path_filter`: Необязательный префикс пути для фильтрации результатов дерева (например, 'src/' для отображения только файлов в каталоге src) (строка, необязательно)
- `recursive`: Установка этого параметра в true возвращает объекты или поддеревья, на которые ссылается дерево. По умолчанию false (логическое значение, необязательно)
- `repo`: Имя репозитория (строка, обязательно)
- `tree_sha`: Значение SHA1 или имя ссылки (ветки или тега) дерева. По умолчанию используется ветка репозитория по умолчанию (строка, необязательно)
Проблемы
add_issue_comment - Добавить комментарий к проблеме или запросу на включение
OAuth Challenge Scopes: repo
body: Содержимое комментария. Обязательно, если не указана реакция. (строка, необязательно)
comment_id: Числовой идентификатор комментария к проблеме или запросу на включение, на который нужно отреагировать. Используйте это для реакций на комментарии; опустите, чтобы отреагировать на саму проблему или запрос на включение. Нельзя комбинировать с body. (целое число, необязательно)
issue_number: Номер проблемы или запроса на включение для комментирования или реакции. (число, обязательно)
owner: Владелец репозитория (строка, обязательно)
reaction: Эмодзи-реакция для добавления. Обязательно, если не указан body. (строка, необязательно)
repo: Имя репозитория (строка, обязательно)
get_label - Получить конкретную метку из репозитория
OAuth Challenge Scopes: repo
name: Имя метки. (строка, обязательно)
owner: Владелец репозитория (имя пользователя или название организации) (строка, обязательно)
repo: Имя репозитория (строка, обязательно)
issue_read - Получить детали проблемы
OAuth Challenge Scopes: repo
issue_number: Номер проблемы (число, обязательно)
method: Операция чтения для выполнения над одной проблемой.
Варианты:
get - Получить детали проблемы. Также возвращает флаги иерархии с наилучшим усилием (has_parent, has_children); parent и sub_issues_summary являются необязательными сводками связей, а closed_by_pull_requests суммирует запросы на включение, настроенные для закрытия проблемы как total_count плюс до 5 references.
get_comments - Получить комментарии к проблеме.
get_sub_issues - Получить подпроблемы (дочерние) проблемы.
get_parent - Получить родительскую проблему, если эта проблема является подпроблемой другой.
get_labels - Получить метки, назначенные проблеме.
(строка, обязательно)
owner: Владелец репозитория (строка, обязательно)
page: Номер страницы для пагинации (мин 1) (число, необязательно)
perPage: Результатов на страницу для пагинации (мин 1, макс 100) (число, необязательно)
repo: Имя репозитория (строка, обязательно)
issue_write - Создать или обновить проблему/запрос на включение
OAuth Challenge Scopes: repo
assignees: Имена пользователей для назначения на эту проблему (string[], необязательно)
body: Содержимое тела проблемы (строка, необязательно)
duplicate_of: Номер проблемы, дубликатом которой является эта проблема. Обязательно, когда state_reason равен 'duplicate'. (число, необязательно)
issue_fields: Значения полей проблемы для установки или очистки. Каждый элемент требует 'field_name' и ровно одно из 'value', 'field_option_name' или 'delete: true'. (object[], необязательно)
issue_number: Номер проблемы для обновления (число, необязательно)
labels: Метки для применения к этой проблеме (string[], необязательно)
method: Операция записи для выполнения над одной проблемой.
Варианты:
parent_issue_number: Номер родительской проблемы. Используется только когда method равен 'create' и не может комбинироваться с issue_fields. Новая проблема создается и прикрепляется к этому родителю в той же операции. (число, необязательно)
parent_owner: Владелец репозитория родительской проблемы. Должен быть указан вместе с parent_repo. Опустите оба, чтобы использовать owner и repo. Используется только когда method равен 'create' и указан parent_issue_number. (строка, необязательно)
parent_repo: Имя репозитория родительской проблемы. Должно быть указано вместе с parent_owner. Опустите оба, чтобы использовать owner и repo. Используется только когда method равен 'create' и указан parent_issue_number. (строка, необязательно)
repo: Имя репозитория (строка, обязательно)
state: Новое состояние (строка, необязательно)
state_reason: Причина изменения состояния. Игнорируется, если состояние не изменено. (строка, необязательно)
title: Заголовок проблемы (строка, необязательно)
type: Тип этой проблемы. Для обновлений передайте null, чтобы удалить текущий тип. Используйте только если типы проблем включены для этого репозитория. Используйте list_issue_types для получения допустимых значений типов для этого репозитория или его организации-владельца. Если репозиторий не поддерживает типы проблем, опустите этот параметр. (строка | null, необязательно)
list_issue_fields - Список полей проблем
OAuth Challenge Scopes: repo, read:org
owner: Владелец учетной записи репозитория или организации. Имя не чувствительно к регистру. (строка, обязательно)
repo: Имя репозитория. При указании возвращает поля для этого конкретного репозитория (унаследованные от его организации). При опускании возвращает поля уровня организации напрямую. (строка, необязательно)
list_issue_types - Список доступных типов проблем
OAuth Challenge Scopes: repo, read:org
owner: Владелец учетной записи репозитория или организации. (строка, обязательно)
repo: Имя репозитория. При указании возвращает типы проблем для этого конкретного репозитория. При опускании возвращает типы проблем уровня организации напрямую. (строка, необязательно)
list_issues - Список проблем
OAuth Challenge Scopes: repo
after: Курсор для пагинации. Используйте курсор из предыдущего ответа. (строка, необязательно)
direction: Направление сортировки. Если указано, также необходимо указать 'orderBy'. (строка, необязательно)
field_filters: Фильтр по значениям пользовательских полей проблем. Каждая запись принимает field_name и value; сервер находит поле и приводит значение к его типу (имя опции одиночного выбора, текст, число или дата ГГГГ-ММ-ДД). (object[], необязательно)
fields: Подмножество полей для возврата для каждой проблемы. Если опущено, возвращаются все поля. Используйте это для уменьшения размера ответа, когда нужны только определенные поля; особенно опускание 'body' и 'field_values' уменьшает самые большие данные на результат. (string[], необязательно)
labels: Фильтр по меткам (string[], необязательно)
orderBy: Сортировка проблем по полю. Если указано, также необходимо указать 'direction'. (строка, необязательно)
owner: Владелец репозитория (строка, обязательно)
perPage: Результатов на страницу для пагинации (мин 1, макс 100) (число, необязательно)
repo: Имя репозитория (строка, обязательно)
since: Фильтр по дате (метка времени ISO 8601) (строка, необязательно)
state: Фильтр по состоянию, по умолчанию возвращаются как открытые, так и закрытые проблемы, если не указано (строка, необязательно)
search_issues - Поиск проблем
OAuth Challenge Scopes: repo
fields: Подмножество полей для возврата для каждого результата проблемы. Если опущено, возвращаются все поля. Используйте это для уменьшения размера ответа, когда нужны только определенные поля; особенно опускание 'body', 'reactions' и 'labels' уменьшает самые большие данные на результат. (string[], необязательно)
order: Порядок сортировки (строка, необязательно)
owner: Необязательный владелец репозитория. Если указан вместе с repo, перечисляются только проблемы этого репозитория. (строка, необязательно)
page: Номер страницы для пагинации (мин 1) (число, необязательно)
perPage: Результатов на страницу для пагинации (мин 1, макс 100) (число, необязательно)
query: Поисковый запрос в виде естественного языка. Когда пользователь дает альтернативные формулировки, включайте их как обычные слова, а не объединяйте с OR. (строка, обязательно)
repo: Необязательное имя репозитория. Если указано вместе с owner, перечисляются только проблемы этого репозитория. (строка, необязательно)
sort: Поле сортировки по количеству совпадений категорий, по умолчанию лучшее совпадение (строка, необязательно)
sub_issue_write - Изменить подпроблему
OAuth Challenge Scopes: repo
after_id: Идентификатор подпроблемы, которая должна быть приоритетнее после (должен быть указан either after_id OR before_id) (число, необязательно)
before_id: Идентификатор подпроблемы, которая должна быть приоритетнее перед (должен быть указан either after_id OR before_id) (число, необязательно)
issue_number: Номер родительской проблемы (число, обязательно)
method: Действие для выполнения над одной подпроблемой
Варианты:
'add' - добавить подпроблему к родительской проблеме в репозитории GitHub.
'remove' - удалить подпроблему из родительской проблемы в репозитории GitHub.
'reprioritize' - изменить порядок подпроблем внутри родительской проблемы в репозитории GitHub. Используйте either 'after_id' или 'before_id' для указания новой позиции.
Записывает иерархию проблем. Чтобы переместить подпроблему к новому родителю, используйте add с replace_parent=true; нет доступного для записи поля родителя.
(строка, обязательно)
owner: Владелец репозитория (строка, обязательно)
replace_parent: Когда true, заменяет текущую родительскую проблему подпроблемы. Используйте только с методом 'add'. (логическое значение, необязательно)
repo: Имя репозитория (строка, обязательно)
sub_issue_id: Идентификатор подпроблемы для добавления. Идентификатор не совпадает с номером проблемы (число, обязательно)
Метки
get_label - Получить конкретную метку из репозитория
OAuth Challenge Scopes: repo
name: Имя метки. (строка, обязательно)
owner: Владелец репозитория (имя пользователя или название организации) (строка, обязательно)
repo: Имя репозитория (строка, обязательно)
label_write - Операции записи над метками репозитория
OAuth Challenge Scopes: repo
color: Цвет метки как 6-значный шестнадцатеричный код без префикса '#' (например, 'f29513'). Обязательно для 'create', необязательно для 'update'. (строка, необязательно)
description: Текст описания метки. Необязательно для 'create' и 'update'. (строка, необязательно)
method: Операция для выполнения: 'create', 'update' или 'delete' (строка, обязательно)
name: Имя метки - обязательно для всех операций (строка, обязательно)
new_name: Новое имя для метки (используется только с методом 'update' для переименования) (строка, необязательно)
owner: Владелец репозитория (имя пользователя или название организации) (строка, обязательно)
repo: Имя репозитория (строка, обязательно)
list_label - Список меток из репозитория
OAuth Challenge Scopes: repo
owner: Владелец репозитория (имя пользователя или название организации) - обязательно для всех операций (строка, обязательно)
repo: Имя репозитория - обязательно для всех операций (строка, обязательно)
before: Показывать только уведомления, обновлённые до указанного времени (формат ISO 8601) (строка, необязательно)
filter: Фильтр уведомлений; используйте значение по умолчанию, если не указано иное. Прочитанные уведомления — это те, которые уже подтверждены пользователем. Уведомления с участием — это те, в которых пользователь непосредственно вовлечён, например, проблемы или запросы на включение, которые он комментировал или создал. (строка, необязательно)
owner: Необязательный владелец репозитория. Если указан вместе с repo, перечисляются только уведомления для этого репозитория. (строка, необязательно)
page: Номер страницы для постраничного вывода (мин. 1) (число, необязательно)
perPage: Результатов на страницу для постраничного вывода (мин. 1, макс. 100) (число, необязательно)
repo: Необязательное имя репозитория. Если указано вместе с owner, перечисляются только уведомления для этого репозитория. (строка, необязательно)
since: Показывать только уведомления, обновлённые после указанного времени (формат ISO 8601) (строка, необязательно)
manage_notification_subscription — Управление подпиской на уведомления
OAuth Challenge Scopes: notifications
action: Действие для выполнения: ignore, watch или delete для подписки на уведомления. (строка, обязательно)
manage_repository_notification_subscription — Управление подпиской на уведомления репозитория
OAuth Challenge Scopes: notifications
action: Действие для выполнения: ignore, watch или delete для подписки на уведомления репозитория. (строка, обязательно)
owner: Владелец учётной записи репозитория. (строка, обязательно)
repo: Имя репозитория. (строка, обязательно)
mark_all_notifications_read — Отметить все уведомления как прочитанные
OAuth Challenge Scopes: notifications
lastReadAt: Описывает последний момент, когда уведомления были проверены (необязательно). По умолчанию: сейчас (строка, необязательно)
owner: Необязательный владелец репозитория. Если указан вместе с repo, только уведомления для этого репозитория будут отмечены как прочитанные. (строка, необязательно)
repo: Необязательное имя репозитория. Если указано вместе с owner, только уведомления для этого репозитория будут отмечены как прочитанные. (строка, необязательно)
Организации
search_orgs — Поиск организаций
OAuth Challenge Scopes: read:org
order: Порядок сортировки (строка, необязательно)
page: Номер страницы для постраничного вывода (мин. 1) (число, необязательно)
perPage: Результатов на страницу для постраничного вывода (мин. 1, макс. 100) (число, необязательно)
sort: Поле сортировки по категории (строка, необязательно)
Проекты
projects_get — Получить сведения о ресурсах GitHub Projects
OAuth Challenge Scopes: read:project
field_id: Идентификатор поля. Требуется для метода 'get_project_field'. (число, необязательно)
field_names: Конкретный список имён полей для включения в ответ при получении элемента проекта (например, ["Status", "Priority"]). Разрешается на стороне сервера в идентификаторы полей — передавайте это вместо 'fields', если известны только человекочитаемые имена. Взаимоисключающе с 'fields' — укажите одно, не оба. Используется только для метода 'get_project_item'. (string[], необязательно)
fields: Конкретный список идентификаторов полей для включения в ответ при получении элемента проекта (например, ["102589", "985201", "169875"]). Если не указаны ни 'fields', ни 'field_names', включается только поле заголовка. Взаимоисключающе с 'field_names' — укажите одно, не оба. Используется только для метода 'get_project_item'. (string[], необязательно)
item_id: Идентификатор элемента. Требуется для метода 'get_project_item'. (число, необязательно)
method: Метод для выполнения (строка, обязательно)
owner: Владелец (логин пользователя или организации). Имя не чувствительно к регистру. (строка, необязательно)
owner_type: Тип владельца (user или org). Если не указано, будет определено автоматически. (строка, необязательно)
project_number: Номер проекта. (число, необязательно)
status_update_id: Идентификатор узла обновления статуса проекта. Требуется для метода 'get_project_status_update'. (строка, необязательно)
view_id: Идентификатор узла представления проекта. Требуется для метода 'get_project_view'. (строка, необязательно)
projects_list — Список ресурсов GitHub Projects
OAuth Challenge Scopes: read:project
after: Курсор прямой пагинации из предыдущего pageInfo.nextCursor. (строка, необязательно)
before: Курсор обратной пагинации из предыдущего pageInfo.prevCursor (редко). (строка, необязательно)
field_names: Имена полей для включения при перечислении элементов проекта (например, ["Status", "Priority"]). Разрешаются на стороне сервера в идентификаторы полей — передавайте это вместо 'fields', если известны только человекочитаемые имена. Имена, которые не удаётся разрешить, возвращают структурированную ошибку. Взаимоисключающе с 'fields' — укажите одно, не оба. Используется только для метода 'list_project_items'. (string[], необязательно)
fields: Идентификаторы полей для включения при перечислении элементов проекта (например, ["102589", "985201"]). КРИТИЧЕСКИ ВАЖНО: всегда указывайте для получения значений полей. Без этого (и без 'field_names') возвращаются только заголовки. Взаимоисключающе с 'field_names' — укажите одно, не оба. Используется только для метода 'list_project_items'. (string[], необязательно)
method: Действие для выполнения (строка, обязательно)
owner: Владелец (логин пользователя или организации). Имя не чувствительно к регистру. (строка, обязательно)
owner_type: Тип владельца (user или org). Если не указано, будет автоматически проверено оба. (строка, необязательно)
per_page: Результатов на страницу (макс. 50) (число, необязательно)
project_number: Номер проекта. Требуется для методов 'list_project_fields', 'list_project_items', 'list_project_views' и 'list_project_status_updates'. (число, необязательно)
query: Строка фильтра/запроса. Для list_projects: фильтр по тексту заголовка и состоянию (например, "roadmap is:open"). Для list_project_items: расширенная фильтрация с использованием синтаксиса фильтрации проектов GitHub. (строка, необязательно)
projects_write — Управление GitHub Projects
OAuth Challenge Scopes: project
body: Текст обновления статуса (markdown). Используется для метода 'create_project_status_update'. (строка, необязательно)
field_name: Имя поля итерации (например, 'Sprint'). Требуется для метода 'create_iteration_field'. (строка, необязательно)
filter: Сохранённый фильтр представления; опустите при обновлении, чтобы сохранить его, или передайте null, чтобы очистить. (строка | null, необязательно)
issue_number: Номер проблемы. Требуется для 'add_project_item', когда item_type — 'issue'. Также принимается 'update_project_item' для разрешения элемента по номеру проблемы (в сочетании с item_owner и item_repo). (число, необязательно)
item_id: Идентификатор элемента проекта. Требуется для 'delete_project_item'. Для 'update_project_item' укажите либо item_id, либо (item_owner + item_repo + issue_number) для разрешения элемента по проблеме. (число, необязательно)
item_owner: Владелец (пользователь или организация) репозитория, содержащего проблему или запрос на включение. Требуется для метода 'add_project_item'. Также принимается 'update_project_item' при разрешении элемента по номеру проблемы. (строка, необязательно)
item_repo: Имя репозитория, содержащего проблему или запрос на включение. Требуется для метода 'add_project_item'. Также принимается 'update_project_item' при разрешении элемента по номеру проблемы. (строка, необязательно)
item_type: Тип элемента: issue или pull_request. Требуется для метода 'add_project_item'. (строка, необязательно)
items: Элементы для обновления с помощью верхнеуровневого 'updated_field'. Требуется для 'update_project_items'; предпочтительнее вызывать его, а не 'update_project_item' в цикле. Каждая запись должна соответствовать ровно одному варианту ссылки: 'node_id', числовой 'item_id' или 'item_owner' + 'item_repo' + 'issue_number'. Лимит: 50 элементов за вызов. (object[], необязательно)
iteration_duration: Продолжительность итераций поля в днях (например, 7 для еженедельных, 14 для двухнедельных). Требуется для метода 'create_iteration_field'. (число, необязательно)
iterations: Пользовательские итерации для метода 'create_iteration_field'. Устанавливайте только тогда, когда нужны итерации с разной продолжительностью, перерывами между ними или конкретными заголовками. В противном случае опустите: GitHub автоматически создаёт три итерации по 'iteration_duration' дней, начиная с 'start_date', что подходит для большинства случаев. (object[], необязательно)
layout: Макет представления; требуется при создании представления. (строка, необязательно)
method: Метод для выполнения (строка, обязательно)
name: Имя представления; требуется при создании представления. (строка, необязательно)
owner: Владелец проекта (логин пользователя или организации). Имя не чувствительно к регистру. (строка, обязательно)
owner_type: Тип владельца (user или org). Требуется для метода 'create_project'. Если не указано для других методов, будет определено автоматически. (строка, необязательно)
project_number: Номер проекта. Требуется для всех методов, кроме 'create_project'. (число, необязательно)
pull_request_number: Номер запроса на включение (используйте, когда item_type — 'pull_request' для метода 'add_project_item'). Укажите либо issue_number, либо pull_request_number. (число, необязательно)
start_date: Дата начала в формате ГГГГ-ММ-ДД. Используется для методов 'create_project_status_update' и 'create_iteration_field'. (строка, необязательно)
status: Статус проекта. Используется для метода 'create_project_status_update'. (строка, необязательно)
target_date: Целевая дата обновления статуса в формате ГГГГ-ММ-ДД. Используется для метода 'create_project_status_update'. (строка, необязательно)
title: Заголовок проекта. Требуется для метода 'create_project'. (строка, необязательно)
updated_field: Поле/значение для применения, используя {"id": 123, "value": ...} или {"name": "Status", "value": ...}; null очищает поле. Требуется для 'update_project_item' и 'update_project_items', где одно верхнеуровневое поле/значение применяется к каждому элементу в пакете. Для полей SINGLE_SELECT в 'update_project_item' форма с именем принимает имена опций; форма с идентификатором ожидает идентификатор опции. (object, необязательно)
view_id: Идентификатор узла представления проекта для обновления или удаления; должен принадлежать owner/project_number. (строка, необязательно)
visible_field_names: Упорядоченные имена полей проекта для отображения при создании или замене при обновлении; опустите при обновлении, чтобы сохранить, или передайте [], чтобы сбросить. Взаимоисключающе с visible_fields. Roadmap принимает только []. (string[], необязательно)
visible_fields: Упорядоченные идентификаторы базы данных полей проекта для отображения при создании или замене при обновлении; опустите при обновлении, чтобы сохранить, или передайте [], чтобы сбросить. Взаимоисключающе с visible_field_names. Roadmap принимает только []. (string[], необязательно)
Pull Requests
add_comment_to_pending_review - Добавить комментарий к рецензии к последнему ожидающему рецензированию pull request
OAuth Challenge Scopes: repo
body: Текст комментария к рецензии (строка, обязательный)
line: Строка в diff pull request, к которой применяется комментарий. Для многострочных комментариев — последняя строка диапазона (число, необязательный)
path: Относительный путь к файлу, к которому относится комментарий (строка, обязательный)
pullNumber: Номер pull request (число, обязательный)
repo: Имя репозитория (строка, обязательный)
side: Сторона diff, к которой применяется комментарий. LEFT означает предыдущее состояние, RIGHT — новое состояние (строка, необязательный)
startLine: Для многострочных комментариев — первая строка диапазона, к которому применяется комментарий (число, необязательный)
startSide: Для многострочных комментариев — начальная сторона diff, к которой применяется комментарий. LEFT означает предыдущее состояние, RIGHT — новое состояние (строка, необязательный)
subjectType: Уровень, на который нацелен комментарий (строка, обязательный)
add_reply_to_pull_request_comment - Добавить ответ на комментарий к pull request
OAuth Challenge Scopes: repo
body: Текст ответа. Обязателен, если не указана реакция. (строка, необязательный)
commentId: Числовой идентификатор комментария к рецензии pull request, на который нужно ответить или отреагировать. Используйте номер из якоря #discussion_r..., а не идентификатор узла GraphQL (PRRT_...). (число, обязательный)
reviewers: Имена пользователей GitHub или рецензенты из команды ORG/team-slug для запроса рецензий (string[], необязательный)
title: Заголовок PR (строка, обязательный)
list_pull_requests - Список pull request
OAuth Challenge Scopes: repo
base: Фильтр по базовой ветке (строка, необязательный)
direction: Направление сортировки (строка, необязательный)
fields: Подмножество полей для возврата по каждому pull request. Если опущено, возвращаются все поля. Используйте для уменьшения размера ответа, когда нужны только определенные поля; исключение 'body' особенно уменьшает наибольший объем данных на результат. (string[], необязательный)
head: Фильтр по пользователю/организации и ветке (строка, необязательный)
pullNumber: Номер pull request (число, обязательный)
repo: Имя репозитория (строка, обязательный)
pull_request_read - Получить детали для одного pull request
OAuth Challenge Scopes: repo
after: Курсор для пагинации, используется только методом get_review_comments. Передайте endCursor из PageInfo предыдущей страницы для получения следующей страницы. (строка, необязательный)
method: Действие для указания, какие данные pull request нужно получить из GitHub.
Возможные варианты:
get - Получить детали конкретного pull request.
get_diff - Получить diff pull request.
get_status - Получить объединенный статус коммита головной ветки в pull request.
get_files - Получить список файлов, измененных в pull request. Используйте с параметрами пагинации для контроля количества возвращаемых результатов.
get_commits - Получить список коммитов в pull request. Используйте с параметрами пагинации для контроля количества возвращаемых результатов.
get_review_comments - Получить ветки рецензий на pull request. Каждая ветка содержит логически сгруппированные комментарии к рецензии, сделанные в одном месте кода во время рецензирования pull request. Возвращает ветки с метаданными (isResolved, isOutdated, isCollapsed) и связанными комментариями. Используйте курсорную пагинацию (perPage, after) для контроля результатов.
get_reviews - Получить рецензии на pull request. При запросе комментариев к рецензии используйте метод get_review_comments. Используйте с параметрами пагинации для контроля количества возвращаемых результатов.
get_comments - Получить комментарии к pull request. Используйте, если пользователь не запрашивает конкретно комментарии к рецензии. Используйте с параметрами пагинации для контроля количества возвращаемых результатов.
get_check_runs - Получить запуски проверок для головного коммита pull request. Запуски проверок — это отдельные задания CI/CD и проверки, выполняемые на PR.
(строка, обязательный)
pullNumber: Номер pull request (число, обязательный)
repo: Имя репозитория (строка, обязательный)
threadId: Идентификатор узла ветки рецензии (например, PRRT_kwDOxxx). Обязателен для методов resolve_thread и unresolve_thread. Получите идентификаторы веток из pull_request_read с методом get_review_comments. (строка, необязательный)
search_pull_requests - Поиск pull request
OAuth Challenge Scopes: repo
fields: Подмножество полей для возврата по каждому результату pull request. Если опущено, возвращаются все поля. Используйте для уменьшения размера ответа, когда нужны только определенные поля; исключение 'body', 'reactions' и 'labels' особенно уменьшает наибольший объем данных на результат. (string[], необязательный)
order: Порядок сортировки (строка, необязательный)
owner: Необязательный владелец репозитория. Если указан вместе с repo, перечисляются только pull request для этого репозитория. (строка, необязательный)
page: Номер страницы для пагинации (мин 1) (число, необязательный)
perPage: Результатов на страницу для пагинации (мин 1, макс 100) (число, необязательный)
query: Поисковый запрос с использованием синтаксиса поиска pull request GitHub (строка, обязательный)
repo: Необязательное имя репозитория. Если указано вместе с owner, перечисляются только pull request для этого репозитория. (строка, необязательный)
sort: Поле сортировки по количеству совпадений категорий, по умолчанию — наилучшее совпадение (строка, необязательный)
update_pull_request - Редактировать pull request
OAuth Challenge Scopes: repo
base: Новое имя базовой ветки (строка, необязательный)
body: Новое описание (строка, необязательный)
draft: Отметить pull request как черновик (true) или готовый к рецензированию (false) (логический, необязательный)
maintainer_can_modify: Разрешить правки от сопровождающего (логический, необязательный)
allow_symlink_write: Установите true для обновления самой символической ссылки; содержимое должно быть ее новым целевым путем. (логический, необязательный)
branch: Ветка для создания/обновления файла (строка, обязательный)
content: Содержимое файла, точно как оно должно появиться после записи. Не кодируйте в base64; этот сервер делает это перед вызовом REST API. (строка, обязательный)
message: Сообщение коммита (строка, обязательный)
owner: Владелец репозитория (имя пользователя или организация) (строка, обязательный)
path: Путь для создания/обновления файла (строка, обязательный)
repo: Имя репозитория (строка, обязательный)
sha: SHA blob заменяемого файла. Обязателен, если файл уже существует. (строка, необязательный)
create_repository - Создать репозиторий
OAuth Challenge Scopes: repo
autoInit: Инициализировать с README (логический, необязательный)
description: Описание репозитория (строка, необязательный)
name: Имя репозитория (строка, обязательный)
organization: Организация для создания репозитория (опустите для создания в личном аккаунте) (строка, необязательный)
private: Должен ли репозиторий быть приватным. По умолчанию true (приватный), если опущено. (логический, необязательный)
delete_file - Удалить файл
OAuth Challenge Scopes: repo, workflow
branch: Ветка, из которой удалить файл (строка, обязательный)
message: Сообщение коммита (строка, обязательный)
owner: Владелец репозитория (имя пользователя или организация) (строка, обязательный)
path: Путь к файлу для удаления (строка, обязательный)
repo: Имя репозитория (строка, обязательный)
delete_repository - Удалить репозиторий
OAuth Challenge Scopes: delete_repo, repo
owner: Владелец репозитория (имя пользователя или организация) (строка, обязательно)
repo: Имя репозитория (строка, обязательно)
fork_repository - Создать форк репозитория
OAuth Challenge Scopes: repo
organization: Организация, в которую сделать форк (строка, необязательно)
owner: Владелец репозитория (строка, обязательно)
repo: Имя репозитория (строка, обязательно)
get_commit - Получить информацию о коммите
OAuth Challenge Scopes: repo
detail: Уровень детализации для изменённых файлов. "none" полностью исключает статистику и файлы. "stats" (по умолчанию) включает метаданные по каждому файлу: имя файла, статус и количество строк кода (добавлено, удалено, изменено), без содержимого патча. "full_patch" дополнительно включает содержимое unified diff для каждого файла и может быть очень большим. (строка, необязательно)
owner: Владелец репозитория (строка, обязательно)
page: Номер страницы для пагинации (мин 1) (число, необязательно)
perPage: Результатов на страницу для пагинации (мин 1, макс 100) (число, необязательно)
repo: Имя репозитория (строка, обязательно)
sha: SHA коммита, имя ветки или имя тега (строка, обязательно)
get_file_contents - Получить содержимое файла или каталога
OAuth Challenge Scopes: repo
fields: Подмножество полей для возврата по каждой записи, когда путь является каталогом. Если опущено, возвращаются все поля. Игнорируется, когда путь указывает на один файл. Используйте для уменьшения размера ответа при перечислении каталогов, если нужны только определённые поля, например только 'name' и 'type'. (string[], необязательно)
owner: Владелец репозитория (имя пользователя или организация) (строка, обязательно)
path: Путь к файлу/каталогу (строка, необязательно)
ref: Принимает необязательные git-ссылки, такие как refs/tags/{tag}, refs/heads/{branch} или refs/pull/{pr_number}/head (строка, необязательно)
repo: Имя репозитория (строка, обязательно)
sha: Принимает необязательный SHA коммита. Если указан, будет использован вместо ссылки (строка, необязательно)
get_latest_release - Получить последний релиз
OAuth Challenge Scopes: repo
owner: Владелец репозитория (строка, обязательно)
repo: Имя репозитория (строка, обязательно)
get_release_by_tag - Получить релиз по имени тега
OAuth Challenge Scopes: repo
owner: Владелец репозитория (строка, обязательно)
repo: Имя репозитория (строка, обязательно)
tag: Имя тега (например, 'v1.0.0') (строка, обязательно)
get_tag - Получить информацию о теге
OAuth Challenge Scopes: repo
owner: Владелец репозитория (строка, обязательно)
repo: Имя репозитория (строка, обязательно)
tag: Имя тега (строка, обязательно)
list_branches - Список веток
OAuth Challenge Scopes: repo
owner: Владелец репозитория (строка, обязательно)
page: Номер страницы для пагинации (мин 1) (число, необязательно)
perPage: Результатов на страницу для пагинации (мин 1, макс 100) (число, необязательно)
repo: Имя репозитория (строка, обязательно)
list_commits - Список коммитов
OAuth Challenge Scopes: repo
author: Имя пользователя или адрес электронной почты автора для фильтрации коммитов (строка, необязательно)
fields: Подмножество полей для возврата по каждому коммиту. Если опущено, возвращаются все поля. Используйте для уменьшения размера ответа, когда нужны только определённые поля, например только 'sha' и 'html_url'. (string[], необязательно)
owner: Владелец репозитория (строка, обязательно)
page: Номер страницы для пагинации (мин 1) (число, необязательно)
path: Будут возвращены только коммиты, содержащие этот путь к файлу (строка, необязательно)
perPage: Результатов на страницу для пагинации (мин 1, макс 100) (число, необязательно)
repo: Имя репозитория (строка, обязательно)
sha: SHA коммита, имя ветки или тега для перечисления коммитов. Если не указано, используется ветка по умолчанию репозитория. Если указан SHA коммита, будут перечислены коммиты вплоть до этого SHA. (строка, необязательно)
since: Будут возвращены только коммиты после этой даты (формат ISO 8601: YYYY-MM-DDTHH:MM:SSZ или YYYY-MM-DD) (строка, необязательно)
until: Будут возвращены только коммиты до этой даты (формат ISO 8601: YYYY-MM-DDTHH:MM:SSZ или YYYY-MM-DD) (строка, необязательно)
list_releases - Список релизов
OAuth Challenge Scopes: repo
fields: Подмножество полей для возврата по каждому релизу. Если опущено, возвращаются все поля. Используйте для уменьшения размера ответа, когда нужны только определённые поля; исключение 'body' в частности убирает самые большие данные по каждому релизу. (string[], необязательно)
owner: Владелец репозитория (строка, обязательно)
page: Номер страницы для пагинации (мин 1) (число, необязательно)
perPage: Результатов на страницу для пагинации (мин 1, макс 100) (число, необязательно)
repo: Имя репозитория (строка, обязательно)
list_repository_collaborators - Список участников репозитория
OAuth Challenge Scopes: repo
affiliation: Фильтр по принадлежности. Может быть одним из: 'outside' (внешние участники), 'direct' (все с правами независимо от членства в организации), 'all' (все участники). По умолчанию: 'all' (строка, необязательно)
owner: Владелец репозитория (строка, обязательно)
page: Номер страницы для пагинации (по умолчанию 1, мин 1) (число, необязательно)
perPage: Результатов на страницу для пагинации (по умолчанию 30, мин 1, макс 100) (число, необязательно)
repo: Имя репозитория (строка, обязательно)
list_tags - Список тегов
OAuth Challenge Scopes: repo
owner: Владелец репозитория (строка, обязательно)
page: Номер страницы для пагинации (мин 1) (число, необязательно)
perPage: Результатов на страницу для пагинации (мин 1, макс 100) (число, необязательно)
repo: Имя репозитория (строка, обязательно)
push_files - Отправить файлы в репозиторий
OAuth Challenge Scopes: repo, workflow
branch: Ветка для отправки (строка, обязательно)
files: Массив объектов файлов для отправки, каждый объект с путём (path) (строка) и содержимым (content) (строка) (object[], обязательно)
message: Сообщение коммита (строка, обязательно)
owner: Владелец репозитория (строка, обязательно)
repo: Имя репозитория (строка, обязательно)
search_code - Поиск кода
OAuth Challenge Scopes: repo
fields: Подмножество полей для возврата по каждому результату поиска кода. Если опущено, возвращаются все поля. Используйте для уменьшения размера ответа, когда нужны только определённые поля; исключение 'repository' и 'text_matches' в частности убирает самые большие данные по каждому результату. (string[], необязательно)
order: Порядок сортировки результатов (строка, необязательно)
page: Номер страницы для пагинации (мин 1) (число, необязательно)
perPage: Результатов на страницу для пагинации (мин 1, макс 100) (число, необязательно)
query: Поисковый запрос (REST API поиска кода GitHub). Неявное И (AND) между терминами; поддерживает OR, NOT и "quoted phrase" для точного совпадения. Квалификаторы: repo:owner/repo, org:, user:, language:, path:dir (совпадение по префиксу), filename:exact.ext, extension:, in:file, in:path, size:, is:archived, is:fork. Максимум 256 символов. Примеры: WithContext language:go org:github; "package main" repo:o/r; func extension:go path:cmd repo:o/r; NOT TODO language:go repo:o/r. (строка, обязательно)
sort: Поле сортировки (только 'indexed') (строка, необязательно)
search_commits - Поиск коммитов
OAuth Challenge Scopes: repo
order: Порядок сортировки (строка, необязательно)
page: Номер страницы для пагинации (мин 1) (число, необязательно)
perPage: Результатов на страницу для пагинации (мин 1, макс 100) (число, необязательно)
query: Поисковый запрос коммитов (REST API поиска коммитов GitHub). Ищет по сообщениям коммитов только в ветке по умолчанию. Ограничьте поиск с помощью repo:owner/repo, org: или user: (запросы без квалификатора области поиска выполняются по всему GitHub и обычно не то, что вам нужно). Другие квалификаторы: author:, committer:, author-name:, committer-name:, author-email:, committer-email:, author-date:, committer-date: (поддерживает диапазоны >, <, >=, <= и YYYY-MM-DD..YYYY-MM-DD), merge:true|false, hash:, tree:, parent:, is:public. Примеры: repo:owner/repo fix panic; org:github author:defunkt committer-date:>=2024-01-01; "refactor cache" repo:o/r; hash:abc1234 repo:o/r. (строка, обязательно)
sort: Сортировка по дате автора или коммиттера (по умолчанию — наилучшее совпадение) (строка, необязательно)
search_repositories - Поиск репозиториев
OAuth Challenge Scopes: repo
minimal_output: Возвращать минимальную информацию о репозитории (по умолчанию: true). При false возвращаются полные объекты репозитория API GitHub. (boolean, необязательно)
order: Порядок сортировки (строка, необязательно)
page: Номер страницы для пагинации (мин 1) (число, необязательно)
perPage: Результатов на страницу для пагинации (мин 1, макс 100) (число, необязательно)
page: Номер страницы для пагинации (мин 1) (число, необязательно)
perPage: Результатов на страницу для пагинации (мин 1, макс 100) (число, необязательно)
repo: Имя репозитория. (строка, обязательно)
resolution: Фильтр по способу устранения (строка, необязательно)
secret_type: Список типов секретов через запятую для возврата. Возвращаются все стандартные шаблоны секретов. Для возврата общих шаблонов передайте имя(ена) токена в параметре. (строка, необязательно)
state: Фильтр по состоянию (строка, необязательно)
Уведомления о безопасности
get_global_security_advisory - Получить глобальное уведомление о безопасности
OAuth Challenge Scopes: security_events
ghsaId: Идентификатор уведомления о безопасности GitHub (формат: GHSA-xxxx-xxxx-xxxx). (строка, обязательно)
list_global_security_advisories - Список глобальных рекомендаций по безопасности
OAuth Challenge Scopes: security_events
affects: Фильтрация рекомендаций по затронутому пакету или версии (например, "package1,package2@1.0.0"). (строка, необязательно)
cveId: Фильтрация по идентификатору CVE. (строка, необязательно)
cwes: Фильтрация по идентификаторам Common Weakness Enumeration (например, ["79", "284", "22"]). (строка[], необязательно)
ecosystem: Фильтрация по экосистеме пакета. (строка, необязательно)
state: Фильтрация по состоянию рекомендации. (строка, необязательно)
Stargazers
list_starred_repositories - Список отмеченных звездой репозиториев
OAuth Challenge Scopes: repo
direction: Направление сортировки результатов. (строка, необязательно)
page: Номер страницы для пагинации (мин. 1) (число, необязательно)
perPage: Результатов на страницу для пагинации (мин. 1, макс. 100) (число, необязательно)
sort: Как сортировать результаты. Может быть 'created' (когда репозиторий был отмечен звездой) или 'updated' (когда в репозиторий был последний раз отправлен push). (строка, необязательно)
username: Имя пользователя для списка отмеченных звездой репозиториев. По умолчанию — аутентифицированный пользователь. (строка, необязательно)
star_repository - Отметить репозиторий звездой
OAuth Challenge Scopes: repo
owner: Владелец репозитория (строка, обязательно)
repo: Название репозитория (строка, обязательно)
unstar_repository - Снять отметку звездой с репозитория
OAuth Challenge Scopes: repo
owner: Владелец репозитория (строка, обязательно)
repo: Название репозитория (строка, обязательно)
Users
search_users - Поиск пользователей
OAuth Challenge Scopes: repo
order: Порядок сортировки (строка, необязательно)
page: Номер страницы для пагинации (мин. 1) (число, необязательно)
perPage: Результатов на страницу для пагинации (мин. 1, макс. 100) (число, необязательно)
sort: Сортировка пользователей по количеству подписчиков или репозиториев, или по времени регистрации на GitHub. (строка, необязательно)
Дополнительные инструменты в удаленном GitHub MCP Server
Copilot
create_pull_request_with_copilot - Выполнить задачу с помощью агента кодирования GitHub Copilot
owner: Владелец репозитория. Вы можете предположить владельца, но подтвердите его с пользователем перед продолжением. (строка, обязательно)
repo: Название репозитория. Вы можете предположить название репозитория, но подтвердите его с пользователем перед продолжением. (строка, обязательно)
problem_statement: Подробное описание задачи, которую необходимо выполнить (например, 'Реализовать функцию, которая делает X', 'Исправить ошибку Y' и т. д.) (строка, обязательно)
title: Заголовок для pull request, который будет создан (строка, обязательно)
base_ref: Git-ссылка (например, ветка), с которой агент начнет свою работу. Если не указано, по умолчанию используется ветка репозитория по умолчанию (строка, необязательно)
Copilot Spaces
Примечание по аутентификации
Тонкозернистые PAT не скрываются фильтрацией областей классических PAT, поэтому эти инструменты могут отображаться, даже если токен не может их использовать.
Для пространств, принадлежащих организации, тонкозернистые PAT должны быть установлены на владеющей организации и включать organization_copilot_spaces: read.
Если пространство, принадлежащее организации, содержит ресурсы на основе репозитория, токен также должен иметь доступ к каждому указанному репозиторию, иначе пространство может считаться не найденным.
name: Название пространства. (строка, обязательно)
list_copilot_spaces - Список Copilot Spaces
Поиск документации GitHub Support
github_support_docs_search - Получение документации, релевантной для ответа на вопросы о продуктах и поддержке GitHub. Темы поддержки включают: GitHub Actions Workflows, Authentication, GitHub Support Inquiries, Pull Request Practices, Repository Maintenance, GitHub Pages, GitHub Packages, GitHub Discussions, Copilot Spaces
query: Ввод от пользователя о вопросе, на который нужно ответить. Это последнее необработанное неотредактированное сообщение пользователя. Вы ВСЕГДА должны оставлять сообщение пользователя как есть, никогда не изменяйте его. (строка, обязательно)
Режим только для чтения
Чтобы запустить сервер в режиме только для чтения, вы можете использовать флаг --read-only. Это предложит только инструменты для чтения, предотвращая любые изменения репозиториев, issues, pull request и т. д.
./github-mcp-server --read-only
При использовании Docker вы можете передать режим только для чтения как переменную окружения:
Режим блокировки ограничивает содержимое, которое сервер будет отображать из публичных репозиториев. При включении сервер проверяет, имеет ли автор каждого элемента доступ на push к репозиторию. Частные репозитории не затрагиваются, а соавторы сохраняют полный доступ к своему собственному содержимому.
Режим блокировки — это фильтр содержимого с максимальными усилиями, предназначенный для снижения риска внедрения промптов из ненадежного содержимого репозитория (issues, pull request, комментарии, коммиты и т. д.). Это не граница авторизации: он не изменяет то, что базовые учетные данные GitHub могут читать или записывать, и содержимое, скрытое из отфильтрованного ответа инструмента, может быть доступно через другие инструменты или прямой доступ к GitHub API с теми же учетными данными.
Как намеренное исключение, содержимое, созданное небольшим набором доверенных бот-аккаунтов (в настоящее время github-actions[bot] и copilot), всегда считается безопасным, независимо от доступа на push. Это позволяет избежать фильтрации рутинного вывода автоматизации (например, коммитов или комментариев, созданных CI), которые в противном случае были бы скрыты в режиме блокировки.
./github-mcp-server --lockdown-mode
При запуске с Docker установите соответствующую переменную окружения:
В режиме HTTP этот флаг (или GITHUB_LOCKDOWN_MODE) является верхней границей: заголовок запроса X-MCP-Lockdown может включить режим блокировки, когда оператор его не включил, но не может отключить режим блокировки, который оператор уже включил. См. Руководство по конфигурации сервера для деталей.
Поведение режима блокировки зависит от вызываемого инструмента.
Следующие инструменты вернут ошибку, если у автора нет доступа на push:
issue_read:get
pull_request_read:get
pull_request_read:get_diff
pull_request_read:get_files
pull_request_read:get_commits
Следующие инструменты отфильтруют содержимое от пользователей без доступа на push:
issue_read:get_comments
issue_read:get_sub_issues
pull_request_read:get_comments
pull_request_read:get_review_comments
pull_request_read:get_reviews
i18n / Переопределение описаний
Описания инструментов можно переопределить, создав файл
github-mcp-server-config.json в том же каталоге, что и бинарный файл.
Файл должен содержать JSON-объект с именами инструментов в качестве ключей и новыми
описаниями в качестве значений. Например:
{
"TOOL_ADD_ISSUE_COMMENT_DESCRIPTION": "an alternative description",
"TOOL_CREATE_BRANCH_DESCRIPTION": "Create a new branch in a GitHub repository"
}
Вы можете создать экспорт текущих переводов, запустив бинарный файл с
флагом --export-translations.
Этот флаг сохранит любые переводы/переопределения, которые вы сделали, добавляя
любые новые переводы, которые были добавлены в бинарный файл с момента последнего
экспорта.
Вы также можете использовать переменные окружения для переопределения описаний. Имена
переменных окружения такие же, как ключи в JSON-файле, с префиксом
GITHUB_MCP_ и все в верхнем регистре.
Например, чтобы переопределить инструмент TOOL_ADD_ISSUE_COMMENT_DESCRIPTION, вы можете
установить следующую переменную окружения:
export GITHUB_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION="an alternative description"
Переопределение имени и заголовка сервера
Тот же механизм переопределения можно использовать для настройки полей name и
title MCP-сервера в ответе инициализации. Это полезно при запуске
нескольких экземпляров GitHub MCP Server (например, один для github.com и один для
GitHub Enterprise Server), чтобы агенты могли различать их.
Ключ
Переменная окружения
По умолчанию
SERVER_NAME
GITHUB_MCP_SERVER_NAME
github-mcp-server
SERVER_TITLE
GITHUB_MCP_SERVER_TITLE
GitHub MCP Server
Например, чтобы настроить экземпляр сервера для GitHub Enterprise Server:
Экспортированный Go API этого модуля в настоящее время следует считать нестабильным и подверженным критическим изменениям. В будущем мы можем предложить стабильность; пожалуйста, создайте issue, если есть случай использования, где это было бы ценно.
Вклад
Вклад приветствуется. Перед открытием pull request, пожалуйста, прочитайте руководство по вкладу для инструкций по настройке, тестированию, линтингу и генерации документации.
Поддержка
Для помощи в использовании GitHub MCP Server см. руководство по поддержке. Если вы нашли ошибку или хотите запросить функцию, пожалуйста, поищите существующие issues перед созданием нового.
Безопасность
Пожалуйста, не сообщайте об уязвимостях безопасности через публичные issues. Следуйте инструкциям в политике безопасности, чтобы ответственно сообщать об уязвимостях.
Лицензия
Этот проект лицензирован на условиях лицензии MIT с открытым исходным кодом. Пожалуйста, обратитесь к MIT для полных условий.