GitHub MCP Server
GitHub MCP Server
Проект, который позволяет ИИ-ассистенту общаться с GitHub с помощью безопасных структурированных инструментов.
Простыми словами: вместо того, чтобы ИИ угадывал, как устроен GitHub, этот проект даёт ему понятное меню действий — например, «показать мои репозитории», «показать открытые issues» или «прочитать файл». ИИ выбирает нужное действие, сервер обращается к GitHub, и ответ возвращается в аккуратном виде, который ИИ понимает.
Какую проблему это решает?
Чат-боты хорошо работают с языком, но у них нет автоматического живого доступа к вашему аккаунту GitHub.
Этот проект создаёт мост:
Вы задаёте запрос обычным языком («Покажи открытые issues в microsoft/vscode»).
Модель ИИ (через Groq) решает, какой инструмент GitHub использовать.
MCP-сервер выполняет этот инструмент через реальный API GitHub.
Результаты нормализуются и возвращаются ИИ.
ИИ объясняет результат вам простым языком.
MCP расшифровывается как Model Context Protocol. Представьте его как стандартный разъём: любой совместимый ИИ-клиент может подключиться к серверу и использовать его инструменты.
Related MCP server: GitHub MCP Server
Общая картина (архитектура)
You
↓
AI Agent (client/agent.py) ← talks to Groq LLM
↓
MCP Server (notebooks/server.py) ← menu of GitHub tools
↓
GitHub Client ← HTTP calls with your token
↓
GitHub REST API
↓
GitHubПравило проектирования (важно)
Инструменты остаются тонкими:
Проверить входные данные (корректно ли имя репозитория).
Вызвать GitHub-клиента.
Нормализовать ответ до стабильной формы.
Вернуть эти чистые данные агенту.
Все «грязные» детали GitHub остаются внутри клиентского слоя, а не разбросаны по инструментам.
Папки проекта (что где находится и зачем)
Путь | Что это |
| Основной MCP-сервер — рабочая точка входа, которую запускает агент |
| Стабильные структуры данных (Pydantic-модели) для агентов |
| Преобразует сырой GitHub JSON в стабильные структуры |
| Подтверждение / dry-run / белый список (allowlist) для опасных инструментов |
| Хелперы для страниц в списковых инструментах ( |
| JSON-логи в stderr (никогда не печатает секреты) |
| Старая/экспериментальная копия — предпочитайте |
| Обучающий ноутбук (как сервер строился по шагам) |
| Чат-агент, подключающийся к MCP-серверу через stdio |
| Проверяет, правильно ли ИИ выбирает инструмент для примеров запросов |
| Ваши приватные ключи (никогда не коммитьте) |
| Шаблон, показывающий, какие ключи нужны |
| Python-пакеты для установки |
| Пошаговая настройка для нетехнических пользователей |
Что можно делать с помощью инструментов
Сервер предоставляет множество действий с GitHub. Простая группировка:
Чтение (безопасно для explorации)
Список ваших репозиториев
Детали репозитория
Списки и получение issues и pull request
Диффы PR
Списки веток, коммитов, меток
Поиск кода в репозитории
Чтение содержимого файлов
Список прогонов GitHub Actions workflow
Запись (изменяет GitHub)
Создание issues, комментариев, PR, веток, меток
Обновление issues, добавление/удаление меток
Переоткрытие issues
Деструктивные (могут навредить — защищено)
По умолчанию требуют дополнительное подтверждение:
merge_pull_requestdelete_filecreate_repositorycreate_or_update_fileclose_issue
Для таких инструментов агенту обычно нужно:
Вызвать с
dry_run=true→ только просмотрВызвать снова с
confirm=true→ реально выполнить
Ужесточить или ослабить можно настройками окружения (см. ниже).
Нормализованные ответы (почему это нравится агентам)
Сырые ответы GitHub огромны и часто меняются. Проект возвращает стабильные форма.
Списковые инструменты всегда выглядят так:
{
"count": 20,
"items": [ ... ],
"page": 1,
"per_page": 20,
"has_next": true,
"has_prev": false,
"next_page": 2,
"prev_page": null,
"last_page": 5
}Чтобы получить следующую страницу, вызовите тот же инструмент снова с page=2 (или page=next_page).
Пример issue:
{
"number": 42,
"title": "Bug in login",
"state": "open",
"author": "some-user",
"labels": ["bug"],
"comments": 3,
"html_url": "https://github.com/...",
"is_pull_request": false
}Также get_issues отфильтровывает pull requests (API issues GitHub подмешивает их).
Функции безопасности
Функция | Значение |
| Требуется для запуска деструктивных инструментов (режим по умолчанию) |
| Показывает, что произойдёт, не изменяя GitHub |
| Аннотация MCP, чтобы клиенты знали, что инструмент рискованный |
Белый список (allowlist) | Опциональный список деструктивных инструментов, которые вообще разрешены |
Режим |
|
Опционально переменные окружения:
GITHUB_MCP_DESTRUCTIVE_MODE=confirm
GITHUB_MCP_DESTRUCTIVE_ALLOWLIST=merge_pull_request,delete_fileЛогирование (для отладки)
Сервер пишет JSON-логи только в stderr.
Почему stderr? Протокол MCP использует stdout. Если логи печатать потуда, соединение с ИИ сломается.
Логи могут включать:
метод и путь запроса
HTTP-статус
длительность
оставшийся лимит запросов
Они никогда не логируют:
ваш GitHub-токен
заголовки Authorization
секретные на вид поля (PAT, bearer-токены и т. п.)
Пример строки лога:
{"ts":"2026-08-23T12:00:00+00:00","level":"INFO","event":"github_request","method":"GET","path":"/repos/microsoft/vscode/issues","status_code":200,"duration_ms":120.5}ИИ-агент (client/agent.py)
Агент:
Запускает MCP-сервер как подпроцесс (
notebooks/server.py).Запрашивает у сервера список инструментов.
Отправляет ваш запрос и список инструментов в Groq.
Если Groq выбирает инструмент, агент вызывает его через MCP.
Отправляет результат обратно в Groq для финального ответа.
Полезные команды (из папки проекта, при активном виртуальном окружении):
# See all registered tools
python client/agent.py --list-tools
# Only show which tool the AI would pick (no GitHub write)
python client/agent.py --dry-run "list my github repos"
# One real question, then exit
python client/agent.py --once "show open issues for microsoft/vscode"
# Interactive chat
python client/agent.py
# Check tool-picking quality on many sample prompts
python client/test_tool_picking.pyОграничения циклов (опционально):
python client/agent.py --max-rounds 5 --once "..."Или в .env:
AGENT_MAX_TOOL_ROUNDS=8
AGENT_MAX_TOOL_CALLS=16
AGENT_MAX_CONSECUTIVE_ERRORS=3Переменные окружения
Требуется для MCP-сервера
Переменная | Назначение |
| Персональный токен доступа, чтобы сервер мог вызывать GitHub |
| Твой GitHub (используется при проверке на startup) |
| Токим репозиторий по умолчанию (используется при проверке на startup) |
Требуется для агента (чат / выбор инструментов)
Переменная | Назначение |
| API-ключ для Groq (LLM) |
Опциональные
Переменная | Назначение |
| По умолчанию: |
|
|
| Список деструктивных инструментов, через запятую |
| Максимум раундов инструментов на сообщение пользователя |
| Максимум вызовов инструментов на сообщение пользователя |
| Остановиться после N ошибок подряд |
Скопируйте .env.example → .env и заполните реальные значения. Полный пошаговыхаемся в SETUP.md.
Технологический стек (для интересующихся)
Python 3.13+ (проект разрабатывался на 3.13)
MCP (Python-пакет
mcp) — протокол сервера инструментовhttpx — HTTP-клиентстечение для GitHub
Pydantic — схемы / валидация
python-dotenv — загрузка
.envOpenAI-совместимый клиент → Groq для агента
Jupyter (опционально) — обучающий ноутбук
Как установить и запустить
Следуйте одному из пошаговой инструкции:
👉 SETUP.md — установите Python, создайте ключи, настройте .env и запустите первые команды.
Короткая инструкция (если вы уже знаете Python):
cd "path\to\Github-MCP-server"
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
copy .env.example .env
# edit .env with your tokens
python client/agent.py --list-tools
python client/agent.py --once "list my github repos"Путь обучения (рекомендуется)
Прочтите этот README (вы уже здесь).
Пройдите SETUP.md, пока не заработает
--list-tools.Изучите docs/ARCHITECTURE_HLD_LLD.md — сценарии HLD + LLD.
Попробуйте
--dry-runи--onceс простыми чтениюскими вопросами.Выполните ручный тест-план на 50 сценариев: tests/MANUAL_TESTING_50_SCENARIOS.md
Автовыбор:
python client/run_manual_scenarios.py
Откройте
notebooks/01_github_mcp_server.ipynb, чтобы увидеть, как построен за слой.И только потом пробуйте инструменты записи/удаление с
dry_run+confirm.
Решение проблем (быстро)
Проблема | Вероятное решение |
| Активируйте |
Модель Groq вызывает 404 | Укажите |
Не хватает переменных окружения | Заполните |
Деструктивный инструмент заблокирован | Это норма — используйте |
Агент зависает на выходе (Windows) | Известная особенность stdio; команды для однократного запуска принудительно завершаются после выполнения |
Напоминания о качестве
Никогда не коммитьте
.env.Никогда не вставляйте свои GitHub- или Groq-токены в чат, скриншоты или заявки.
Старайтесь брать GitHub-токен только с теми правами, которые нужны.
Оставляйте
GITHUB_MCP_DESTRUCTIVE_MODE=confirm(илиdeny), если не полностью доверяете окружению.Не делитесь отладочным выводом
server_1.py, если он печатал токены в старых экспериментах — используйтеserver.py.
Лицензия / владельца
Это личный/учебный Gen-AI проект: GitHub MCP-сервер и агент. Перед публикацией при необходимости измените owner’а и лицензию.
This server cannot be installed
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
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to manage GitHub repositories, branches, issues, pull requests, releases, and actions through natural language.1155MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to perform GitHub operations such as creating repositories, issues, pull requests, and more through natural language.
- FlicenseBqualityDmaintenanceEnables AI assistants to inspect local Git repositories and interact with the GitHub API for reading commits, diffs, files, issues, comments, pull requests, and project boards.10121
- FlicenseBqualityCmaintenanceEnables AI clients to interact with GitHub repositories, issues, pull requests, and code search through the GitHub REST API.12
Related MCP Connectors
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Git-backed platform for skills, tools, and context for AI agents
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/Arnab1999india/github-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server