GitHub MCP服务器

GitHub MCP Server 是通过 Model Context Protocol(MCP)提供 45 多种工具,用于全面管理和控制 GitHub 仓库、文件、分支、Issue、Pull Request、Actions、Gist 等资源的服务器,适用于需要将 GitHub 操作集成到 AI 助手或自动化开发流程中的开发者。

  • by Octavian-Labs
  • Python
  • 混合部署
  • 更新于
在 GitHub 查看 Ospray-creator/GitHubMCP

使用说明

GitHub MCP Server

Полноценный MCP сервер для полного контроля GitHub через Model Context Protocol. Предоставляет 45+ инструментов для работы с репозиториями, issues, PR, GitHub Actions и многим другим.

[!IMPORTANT] Параметр owner (владелец репозитория) больше не требуется для большинства инструментов. Сервер автоматически использует владельца, указанного в настройках (GH_DEFAULT_OWNER), что упрощает работу и предотвращает ошибки.

✨ Возможности

📁 Репозитории

  • Получение информации о репозитории
  • Создание и удаление репозиториев
  • Форки и клонирование
  • Список контрибьюторов и языков

📄 Файлы

  • Чтение содержимого файлов и директорий
  • Создание, обновление и удаление файлов

🌿 Ветки и коммиты

  • Управление ветками (создание, удаление)
  • Просмотр истории коммитов
  • Сравнение веток

🐛 Issues

  • Создание, редактирование и закрытие issues
  • Управление метками и назначениями
  • Комментарии к issues

🔀 Pull Requests

  • Создание и редактирование PR
  • Мерж и ревью
  • Просмотр изменённых файлов и коммитов

⚡ GitHub Actions

  • Просмотр workflows
  • Запуск и отмена workflows
  • Получение логов и статусов jobs

👤 Пользователи

  • Информация о текущем пользователе
  • Подписчики и подписки
  • Организации

📝 Gists

  • Создание, чтение, обновление и удаление Gists

🔍 Поиск

  • Поиск по коду
  • Поиск репозиториев
  • Поиск issues и PR

🚀 Установка

1. Клонирование репозитория

git clone https://github.com/yourusername/github-mcp.git
cd github-mcp

2. Создание виртуального окружения

python -m venv .venv
.venv\Scripts\activate  # Windows
# или
source .venv/bin/activate  # Linux/macOS

3. Установка зависимостей

pip install -e .

4. Настройка переменных окружения

Создайте файл .env:

# GitHub Configuration
GH_TOKEN=ghp_your_token_here
GH_DEFAULT_OWNER=your-username
GH_DEFAULT_REPO=your-repo
GH_ALLOWED_REPOS=your-username/*

# Server Security
MCP_API_KEY=your_secret_key_here

# Logging
LOG_LEVEL=INFO

📋 Конфигурация

Переменная Описание Обязательно
GH_TOKEN GitHub Personal Access Token Да
GH_DEFAULT_OWNER Владелец репозитория по умолчанию Да
GH_DEFAULT_REPO Репозиторий по умолчанию Нет
GH_ALLOWED_REPOS Разрешённые репозитории (через запятую) Нет
MCP_API_KEY API Key для удалённого доступа Нет
LOG_LEVEL Уровень логирования (DEBUG, INFO, WARNING, ERROR) Нет

Формат GH_ALLOWED_REPOS

  • owner/* — все репозитории владельца
  • owner/repo — конкретный репозиторий
  • owner1/*,owner2/repo — комбинация

🎮 Использование

Запуск сервера

В режиме stdio (локальный запуск)

python -m github_mcp.server

В режиме HTTP (для удалённого доступа)

python -m github_mcp.http_server

По умолчанию HTTP-сервер запускается на http://0.0.0.0:8080, эндпоинт MCP доступен по адресу http://0.0.0.0:8080/mcp.

Для запуска на другом хосте и порту:

python -m github_mcp.http_server --host 127.0.0.1 --port 8080

Конфигурация для MCP клиентов

Claude Desktop / Cursor / Windsurf (stdio вариант)

{
  "mcpServers": {
    "github": {
      "command": "python",
      "args": ["-m", "github_mcp.server"],
      "cwd": "C:\\Users\\lebed\\Desktop\\GitHubMCP",
      "env": {
        "GH_TOKEN": "ghp_your_token_here",
        "GH_DEFAULT_OWNER": "your-username"
      }
    }
  }
}

Claude Desktop / Cursor / Windsurf (HTTP вариант)

{
  "mcpServers": {
    "github": {
      "uri": "http://localhost:8080/mcp",
      "headers": {
        "X-API-Key": "your_secret_key_here"
      }
    }
  }
}

[!NOTE] При использовании HTTP-сервера рекомендуется настроить MCP_API_KEY в файле .env для обеспечения безопасности.

🛠️ Доступные инструменты (45+)

Репозитории

Инструмент Описание
set_default_repo Установить репозиторий по умолчанию (owner вводится один раз)
get_repository Получить информацию о репозитории
list_user_repos Список репозиториев текущего пользователя
create_repository Создать репозиторий у текущего пользователя
delete_repository Удалить репозиторий
fork_repository Форкнуть репозиторий (source_owner, source_repo)
list_forks Список форков
list_contributors Список контрибьюторов
list_languages Языки репозитория

Файлы

Инструменты для работы с файлами больше не требуют owner.

Инструмент Описание
get_file_content Получить содержимое файла
get_directory_content Получить содержимое директории
create_file Создать файл
update_file Обновить файл
delete_file Удалить файл

Ветки

Инструмент Описание
list_branches Список веток
get_branch Информация о ветке
create_branch Создать ветку
delete_branch Удалить ветку
list_commits История коммитов
get_commit Информация о коммите
compare_branches Сравнить ветки

Issues & Pull Requests

Все инструменты для Issues и PR теперь работают с фиксированным владельцем.

📚 Примеры использования

Установка репозитория по умолчанию

Использую set_default_repo с repo="my-repo"
# (Сервер сам подставит владельца из .env)

Создание issue

Использую create_issue с title="Bug: приложение падает" и body="При нажатии кнопки..."

Создание PR

1. create_branch с branch_name="feature/new-feature"
2. create_file с path="src/feature.py"
3. create_pull_request с title="Добавлена новая функция"

🔒 Безопасность

Сервер поддерживает авторизацию через X-API-Key или Authorization: Bearer при использовании удалённого доступа. Настройте MCP_API_KEY в .env для защиты вашего сервера.

📄 Лицензия

MIT