GitHub MCP Server
OfficialGitHub MCP-сервер
Уведомление об устаревании: разработка этого проекта была перенесена на GitHub в репозиторий http://github.com/github/github-mcp-server .
Сервер MCP для API GitHub, обеспечивающий файловые операции, управление репозиториями, функции поиска и многое другое.
Функции
Автоматическое создание веток : при создании/обновлении файлов или отправке изменений автоматически создаются ветки, если они не существуют.
Комплексная обработка ошибок : понятные сообщения об ошибках для распространенных проблем
Сохранение истории Git : операции поддерживают правильную историю Git без принудительной отправки
Пакетные операции : поддержка как однофайловых, так и многофайловых операций.
Расширенный поиск : поддержка поиска по коду, проблемам/PR и пользователям.
Инструменты
create_or_update_fileСоздать или обновить отдельный файл в репозитории
Входные данные:
owner(строка): Владелец репозитория (имя пользователя или организация)repo(строка): Имя репозиторияpath(строка): Путь, по которому необходимо создать/обновить файл.content(строка): Содержимое файлаmessage(строка): сообщение о фиксацииbranch(строка): ветвь для создания/обновления файлаsha(необязательная строка): SHA заменяемого файла (для обновлений)
Возвращает: содержимое файла и сведения о фиксации
push_filesОтправка нескольких файлов в один коммит
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияbranch(строка): ветвь, в которую нужно отправитьfiles(массив): файлы для отправки, каждый сpathиcontentmessage(строка): сообщение о фиксации
Возврат: обновленная ссылка на ветку
search_repositoriesПоиск репозиториев GitHub
Входные данные:
query(строка): Поисковый запросpage(необязательное число): Номер страницы для нумерации страницperPage(необязательное число): Результаты на страницу (макс. 100)
Возвращает: Результаты поиска в репозитории
create_repositoryСоздать новый репозиторий GitHub
Входные данные:
name(строка): Имя репозиторияdescription(необязательная строка): Описание репозиторияprivate(необязательно логическое значение): должен ли репозиторий быть частнымautoInit(необязательно логическое значение): инициализация с помощью README
Возвращает: Созданные данные репозитория
get_file_contentsПолучить содержимое файла или каталога
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияpath(строка): Путь к файлу/каталогуbranch(необязательная строка): ветвь, из которой нужно получить содержимое
Возвращает: содержимое файла/каталога
create_issueСоздать новый выпуск
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияtitle(строка): Название выпускаbody(необязательная строка): Описание проблемыassignees(необязательная строка[]): Имена пользователей для назначенияlabels(необязательно string[]): Метки для добавленияmilestone(необязательное число): Номер вехи
Возвраты: Созданные детали проблемы
create_pull_requestСоздать новый запрос на извлечение
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияtitle(строка): заголовок PRbody(необязательная строка): описание PRhead(строка): Ветка, содержащая измененияbase(строка): Ветка для слиянияdraft(необязательно логическое значение): создать как черновик PRmaintainer_can_modify(необязательное логическое значение): Разрешить редактирование сопровождающим
Возвращает: Созданные данные запроса на вытягивание
fork_repositoryФорк репозитория
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияorganization(необязательная строка): Организация, в которую будет произведен форк
Возвращает: сведения о разветвленном репозитории
create_branchСоздать новую ветку
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияbranch(строка): Имя новой ветвиfrom_branch(необязательная строка): Исходная ветка (по умолчанию — репозиторий по умолчанию)
Возвращает: Созданная ссылка на ветку
list_issues
Список и фильтрация проблем репозитория
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияstate(необязательная строка): Фильтр по состоянию («открыто», «закрыто», «все»)labels(необязательная строка[]): Фильтр по меткамsort(необязательная строка): Сортировать по («создано», «обновлено», «комментарии»)direction(необязательная строка): Направление сортировки ('asc', 'desc')since(необязательная строка): Фильтр по дате (временная метка ISO 8601)page(необязательное число): Номер страницыper_page(необязательное число): Результаты на страницу
Возвраты: Массив деталей выпуска
update_issue
Обновить существующую проблему
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияissue_number(номер): Номер выпуска для обновленияtitle(необязательная строка): Новый заголовокbody(необязательная строка): Новое описаниеstate(необязательная строка): Новое состояние («открыто» или «закрыто»)labels(необязательная строка[]): Новые меткиassignees(необязательная строка[]): Новые получателиmilestone(необязательный номер): Новый номер вехи
Возврат: обновленные сведения о проблеме
add_issue_comment
Добавить комментарий к проблеме
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияissue_number(число): Номер вопроса для комментарияbody(строка): Текст комментария
Возвращает: Созданные детали комментария
search_code
Поиск кода в репозиториях GitHub
Входные данные:
q(строка): Поисковый запрос с использованием синтаксиса поиска кода GitHubsort(необязательная строка): поле сортировки (только «индексированное»)order(необязательная строка): порядок сортировки ('asc' или 'desc')per_page(необязательное число): Результаты на страницу (макс. 100)page(необязательное число): Номер страницы
Возвращает: результаты поиска кода с контекстом репозитория.
search_issues
Поиск проблем и запросов на извлечение
Входные данные:
q(строка): Поисковый запрос с использованием GitHub вызывает проблемы с синтаксисом поискаsort(необязательная строка): поле сортировки (комментарии, реакции, создано и т. д.)order(необязательная строка): порядок сортировки («по возрастанию» или «по убыванию»)per_page(необязательное число): Результаты на страницу (макс. 100)page(необязательное число): Номер страницы
Возвращает: результаты поиска по проблемам и запросам на извлечение
search_users
Поиск пользователей GitHub
Входные данные:
q(строка): Поисковый запрос с использованием синтаксиса поиска пользователей GitHubsort(необязательная строка): поле сортировки (подписчики, репозитории, присоединившиеся)order(необязательная строка): порядок сортировки ('asc' или 'desc')per_page(необязательное число): Результаты на страницу (макс. 100)page(необязательное число): Номер страницы
Возвращает: Результаты поиска пользователя
list_commits
Получает коммиты ветки в репозитории
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияpage(необязательная строка): номер страницыper_page(необязательная строка): количество записей на страницеsha(необязательная строка): имя ветки
Возвращает: Список коммитов
get_issue
Получает содержимое проблемы в репозитории
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияissue_number(число): Номер выпуска для извлечения
Возвращает: объект и подробности проблемы Github
get_pull_request
Получите подробную информацию о конкретном запросе на извлечение
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияpull_number(число): Номер запроса на извлечение
Возвращает: сведения о запросе на извлечение, включая различия и статус проверки.
list_pull_requests
Список и фильтрация запросов на извлечение из репозитория
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияstate(необязательная строка): Фильтр по состоянию («открыто», «закрыто», «все»)head(необязательная строка): Фильтр по пользователю/организации head и веткеbase(необязательная строка): Фильтр по базовой веткеsort(необязательная строка): Сортировать по («создано», «обновлено», «популярность», «длительно работает»)direction(необязательная строка): Направление сортировки ('asc', 'desc')per_page(необязательное число): Результаты на страницу (макс. 100)page(необязательное число): Номер страницы
Возвращает: Массив данных запроса на вытягивание
create_pull_request_review
Создайте обзор на запрос на извлечение
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияpull_number(число): Номер запроса на извлечениеbody(строка): Текст комментария к отзывуevent(строка): Действие обзора ('APPROVE', 'REQUEST_CHANGES', 'COMMENT')commit_id(необязательная строка): SHA коммита для проверкиcomments(необязательный массив): комментарии к конкретным строкам, каждый из которых содержит:path(строка): Путь к файлуposition(номер): Позиция строки в разницеbody(строка): Текст комментария
Возврат: Созданные детали обзора
merge_pull_request
Объединить запрос на извлечение
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияpull_number(число): Номер запроса на извлечениеcommit_title(необязательная строка): заголовок для слияния коммитаcommit_message(необязательная строка): Дополнительные сведения о слиянии.merge_method(необязательная строка): Метод слияния ('merge', 'squash', 'rebase')
Возвраты: сведения о результатах слияния
get_pull_request_files
Получить список файлов, измененных в запросе на извлечение
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияpull_number(число): Номер запроса на извлечение
Возвращает: Массив измененных файлов с подробностями исправления и статуса.
get_pull_request_status
Получите объединенный статус всех проверок статуса для запроса на извлечение
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияpull_number(число): Номер запроса на извлечение
Возвраты: объединенные результаты проверки статуса и данные индивидуальной проверки
update_pull_request_branch
Обновите ветку запроса на извлечение, добавив последние изменения из базовой ветки (аналогично кнопке «Обновить ветку» на GitHub)
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияpull_number(число): Номер запроса на извлечениеexpected_head_sha(необязательная строка): ожидаемый SHA HEAD-ссылки запроса на извлечение
Возвращает: сообщение об успешном завершении обновления ветки.
get_pull_request_comments
Получите комментарии по запросу на включение изменений
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияpull_number(число): Номер запроса на извлечение
Возвращает: Массив комментариев к отзывам о запросе на включение внесенных изменений с подробностями, такими как текст комментария, автор и местоположение в списке изменений.
get_pull_request_reviews
Получите отзывы о запросе на включение внесенных изменений
Входные данные:
owner(строка): Владелец репозиторияrepo(строка): Имя репозиторияpull_number(число): Номер запроса на извлечение
Возвращает: Массив отзывов о запросах на включение внесенных изменений с подробностями, такими как состояние отзыва (АППРОВЕДЕНО, ЗАПРОС_ИЗМЕНЕНО и т. д.), рецензент и текст отзыва.
Related MCP server: GitHub MCP Server Plus
Синтаксис поискового запроса
Поиск кода
language:javascript: Поиск по языку программированияrepo:owner/name: Поиск в определенном репозиторииpath:app/src: Поиск по указанному путиextension:js: Поиск по расширению файлаПример:
q: "import express" language:typescript path:src/
Поиск проблем
is:issueилиis:pr: Фильтр по типуis:openилиis:closed: Фильтр по штатуlabel:bug: Поиск по меткеauthor:username: Поиск по авторуПример:
q: "memory leak" is:issue is:open label:bug
Поиск пользователей
type:userилиtype:org: Фильтр по типу учетной записиfollowers:>1000: Фильтр по подписчикамlocation:London: Поиск по местоположениюПример:
q: "fullstack developer" location:London followers:>100
Подробный синтаксис поиска см. в документации по поиску GitHub .
Настраивать
Персональный токен доступа
Создайте токен персонального доступа GitHub с соответствующими разрешениями:
Перейдите в раздел Персональные токены доступа (в настройках GitHub > Настройки разработчика)
Выберите, к каким репозиториям вы хотите предоставить доступ этому токену (Public, All или Select).
Создать токен с областью действия
repo(«Полный контроль над приватными репозиториями»)В качестве альтернативы, если вы работаете только с публичными репозиториями, выберите только область
public_repo
Скопируйте сгенерированный токен
Использование с Claude Desktop
Чтобы использовать это с Claude Desktop, добавьте следующее в ваш claude_desktop_config.json :
Докер
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"mcp/github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}НПХ
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}Использование с VS Code
Для быстрой установки воспользуйтесь одной из кнопок установки ниже:
Для ручной установки добавьте следующий блок JSON в файл настроек пользователя (JSON) в VS Code. Это можно сделать, нажав Ctrl + Shift + P и введя Preferences: Open User Settings (JSON) .
При желании вы можете добавить его в файл .vscode/mcp.json в вашем рабочем пространстве. Это позволит вам поделиться конфигурацией с другими.
Обратите внимание, что ключ
mcpне нужен в файле.vscode/mcp.json.
Докер
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "github_token",
"description": "GitHub Personal Access Token",
"password": true
}
],
"servers": {
"github": {
"command": "docker",
"args": ["run", "-i", "--rm", "mcp/github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
}
}
}
}
}НПХ
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "github_token",
"description": "GitHub Personal Access Token",
"password": true
}
],
"servers": {
"github": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
}
}
}
}
}Строить
Сборка Docker:
docker build -t mcp/github -f src/github/Dockerfile .Лицензия
Этот сервер MCP лицензирован по лицензии MIT. Это означает, что вы можете свободно использовать, изменять и распространять программное обеспечение в соответствии с условиями лицензии MIT. Для получения более подробной информации см. файл LICENSE в репозитории проекта.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- -licenseAqualityBmaintenanceMCP Server for the GitLab API, enabling project management, file operations, and more.Last updated95,71689,088MIT
- AlicenseBqualityDmaintenanceMCP Server for the GitHub API, providing features for file operations, repository management, and advanced search, with automatic branch creation and comprehensive error handling.Last updated18308MIT
- AlicenseBqualityDmaintenanceProvides tools for interacting with GitHub's API through the MCP protocol, allowing users to create repositories, push content, and retrieve user information.Last updated3174MIT
- AlicenseBqualityDmaintenanceA MCP server that provides access to GitHub trending repositories and developers data through a simple API interface.Last updated253MIT
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
An MCP server that gives your AI access to the source code and docs of all public github repos
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/modelcontextprotocol/github'
If you have feedback or need assistance with the MCP directory API, please join our Discord server