github-project-management
GitHub Project Management MCP Server
Пользовательский MCP-сервер (Model Context Protocol), который позволяет ИИ-ассистентам программно управлять досками GitHub Project V2 через Model Context Protocol. Создан на Python 3.12 и FastMCP, общается через stdio-транспорт и работает внутри автономного Docker-контейнера.
Расположение
project/
├── mcp/ ← This directory (root-level, independent of the app)
│ ├── Dockerfile
│ ├── requirements.txt
│ ├── server.py # FastMCP entry point
│ ├── config.py
│ ├── auth.py
│ ├── capabilities.py # Tool → permission mapping
│ ├── profiles.py # Multi-target profile system
│ ├── tools/ # MCP tool definitions
│ ├── services/ # Business logic
│ ├── clients/ # GraphQL + gh CLI clients
│ ├── models/ # Pydantic models
│ ├── graphql/ # Query/mutation strings
│ ├── tests/ # Unit + contract tests
│ ├── scripts/ # Validation, preflight, secret scanning
│ │ ├── validate.sh # ← Run before every push
│ │ ├── preflight.sh # Environment prerequisites
│ │ ├── scan_secrets.sh # Token pattern detection
│ │ └── smoke_build.sh # Minimal build verification
│ ├── profiles/ # Target config (.env files, no secrets)
│ ├── docs/ # Detailed documentation
│ ├── LICENSE # MIT
│ ├── CONTRIBUTING.md
│ └── SECURITY.mdПримечание: Этот MCP-сервер является автономным компонентом со своим собственным Dockerfile, зависимостями и жизненным циклом.
Related MCP server: my_pm_tools
Как это работает
MCP Client → docker run --rm -i github-project-mcp:latest → stdin/stdout JSON-RPC → GitHub APIКлиент MCP вызывает инструмент (например:
create_project_item)Выполняется
docker run --rm -i github-project-mcp:latest python server.pyСервер проверяет аутентификацию и ожидает команды через stdin
Клиент отправляет JSON-RPC через stdin и получает ответы через stdout
По завершении контейнер автоматически уничтожается (
--rm)
Docker — Сборка и управление
Сборка образа
# Desde la raíz del proyecto
docker build -t github-project-mcp:latest ./mcpDocker Compose (локальная разработка)
Самый простой способ настроить и запустить MCP локально:
# 1. Crear tu configuración local (una sola vez)
cp mcp/.env.example mcp/.env
# Editar mcp/.env con tu GITHUB_TOKEN y target (org/repo/project)
# 2. Construir y verificar
cd mcp/
make build
make verifyЦели Makefile
Все цели выполняются внутри Docker — без зависимостей на хосте.
cd mcp/
make help # Mostrar todos los targets disponibles
make build # Construir imagen Docker
make verify # Validar auth + scopes + config
make test # Ejecutar unit tests
make validate # CI completo (build + syntax + tests + tools + secrets)
make tools # Contar herramientas registradas (>= 100)
make syntax # Verificar sintaxis Python
make secrets # Escanear credenciales en código
make shell # Shell interactivo dentro del contenedor
make clean # Eliminar imágenesПримечание: Если
makeнедоступен на хосте, цели можно вызывать напрямую через Docker. Пример:docker run --rm --env-file .env github-project-mcp:latest python3 scripts/verify_setup.py
Каждый участник клонирует репозиторий, создаёт свой .env, и MCP работает без установки чего-либо, кроме Docker.
Проверка наличия образа
docker images | grep github-project-mcpРучное тестирование (smoke test)
docker run --rm -i \
-e GITHUB_TOKEN="<your_token>" \
github-project-mcp:latest \
python server.pyСервер выведет в stderr: github-project-management MCP server ready. Authentication validated successfully. Затем будет ожидать JSON-RPC через stdin. Нажмите Ctrl+C для выхода.
Пересборка после изменений
docker build -t github-project-mcp:latest ./mcp --no-cacheСкрипт управления
Скрипт ./scripts/dev/start.sh поддерживает аргумент mcp для управления образом:
./scripts/dev/start.sh mcp build # Construir/reconstruir la imagen
./scripts/dev/start.sh mcp test # Ejecutar smoke test
./scripts/dev/start.sh mcp status # Verificar si la imagen existeПримечание: MCP не является постоянным сервисом. Ему не нужны
up/down/restart. Он запускается по требованию каждый раз, когда клиент использует инструмент.
Интеграция с IDE
MCP совместим с любым клиентом, поддерживающим протокол MCP через stdio. Конфигурация зависит от IDE — общий паттерн:
{
"mcpServers": {
"github-project-management": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "GITHUB_TOKEN",
"--env-file", "mcp/.env",
"github-project-mcp:latest",
"python", "server.py"
]
}
}
}Для конфигурации, специфичной для конкретной IDE, см. docs/SETUP.md.
Зарегистрированные инструменты (100)
Основные операции
Tool | Description |
| Обнаружение ID проектов/полей |
| Список элементов с фильтрами |
| Создание issue + добавление в проект |
| Обновление статуса, приоритета, срока |
| Установка оценки в story points |
| Архивирование элемента с доски |
Управление issues
Tool | Description |
| Закрыть issue |
| Переоткрыть закрытый issue |
| Добавить комментарий к issue |
| Редактировать заголовок, описание, метки, веху, исполнителей |
| Привязать как под-issue |
| Отвязать под-issue |
| Полная информация об issue |
| Поиск по запросу |
Операции с доской
Tool | Description |
| Переместить элемент в любую колонку статуса |
| Отметить как Done |
| Переместить в корзину |
| Пакетное обновление нескольких элементов |
| Закрыть несколько issues |
| Назначить несколько issues |
Планирование и рабочие процессы
Tool | Description |
| Сформировать план спринта |
| Автоматическая генерация release notes |
| Полный процесс завершения |
| Сформировать отчёт для стендапа |
| Итоги обзора спринта |
| Автоматическое триажирование предложений |
| Пометить просроченные элементы |
| Создать родительскую задачу + дочерние |
| Закрыть спринт и переместить элементы |
Метаданные
Tool | Description |
| Создать веху GitHub |
| Закрыть веху |
| Список вех |
| Создать метку |
| Список меток |
| Статистика доски |
| Метрики текущего спринта |
Архитектура
Tool Layer (FastMCP tool definitions)
↓
Service Layer (business logic, orchestration)
↓
Client Layer (GraphQL + gh CLI + caching)
↓
GitHub APIs (GraphQL v4 + REST v3)Стратегия делегирования
Метод | Когда используется |
gh CLI | CRUD для issues, комментарии, добавление элементов в проект, закрытие |
Custom GraphQL | Обновление полей, архивирование, обнаружение, под-issues |
Переменные окружения
Variable | Required | Description |
| Да | GitHub PAT (fine-grained или классический) |
| Да | Владелец GitHub (организация или логин пользователя) |
| Да | Имя репозитория |
| Да | Номер доски Project V2 (1–100000) |
Устранение неполадок
MCP не подключается
# Verificar que la imagen existe
docker images | grep github-project-mcp
# Si no existe, construir
docker build -t github-project-mcp:latest ./mcp
# Verificar token
echo $GITHUB_TOKEN | head -c 20Переподключение MCP
Если MCP отключается от IDE, используйте опцию переподключения соответствующего MCP-клиента.
Ошибка аутентификации
Убедитесь, что
GITHUB_TOKENдоступен в окружении контейнераТокены
github_pat_*(fine-grained) требуют разрешения: Issues (RW), Projects (RW), Metadata (R)Классические токены требуют scopes:
repo,project,read:org
Связанная документация
Документ | Назначение |
Настройка токена и разрешения | |
Примеры ввода/вывода инструментов | |
Справочник параметров | |
Частые ошибки |
Расположение исходников и синхронизация
Этот каталог (mcp/) является каноническим источником истины для MCP-пакета.
Репозиторий содержит синхронизированную копию по адресу:
app/backend/app/mcp/github_project/— встроена в бэкенд для Docker-сборок
Процесс синхронизации
Вносите все изменения здесь — сначала в
mcp/.Скопируйте изменённые файлы во встроенный путь:
cp mcp/<file> app/backend/app/mcp/github_project/<file>Проверьте с помощью автоматической проверки:
./mcp/scripts/check_sync.sh
Скрипт синхронизации сравнивает все общие .py-файлы (исключая __init__.py, который намеренно отличается в копии бэкенда, и файлы только для инфраструктуры, такие как Dockerfile и requirements.txt). CI запускает эту проверку при каждом push — расхождение приводит к сбою сборки.
Файлы, намеренно отличающиеся в копии бэкенда
Файл | Причина |
| Импорты, специфичные для бэкенда + документация источника синхронизации |
| Указывает сюда; описывает политику копирования |
Тестовый набор бэкенда проверяет встроенную копию; проверка синтаксиса должна компилировать оба дерева.
Усиленное поведение во время выполнения
Все настройки используют префикс GH_PROJECT_ и проверяются при запуске:
Настройка | По умолчанию | Границы / поведение |
|
| 1–120 секунд |
|
| 0–5; только чтение, мутации не повторяются |
|
| 0–60 секунд, экспоненциальная задержка |
|
| 1–720 часов |
|
| Настраиваемый локальный путь |
|
| 1–100 |
|
| 1–1 000 |
|
| 10 000–10 000 000 |
Кэш метаданных записывается атомарно, использует права только для владельца (0600), отклоняет будущие временные метки и не переиспользуется при изменении организации или номера проекта. Диагностика CLI и GraphQL скрывает значения, похожие на токены, и ограничивается перед возвратом MCP-клиенту.
Проверка только через Docker
Запустите проверку без Python-инструментов на хосте:
# Compile both source copies through a Python container
tar -C . -cf - mcp app/backend/app/mcp \
| docker run --rm -i python:3.12-slim sh -c \
'mkdir -p /tmp/factib && tar -xf - -C /tmp/factib && \
python -m compileall -q /tmp/factib/mcp /tmp/factib/app/backend/app/mcp'
# Run the backend MCP tests using the existing backend image
tar -C . -cf - app/backend/app app/backend/tests/mcp \
| docker run --rm -i -e PYTHONPATH=/tmp/factib/app/backend backend:latest sh -c \
'mkdir -p /tmp/factib && tar -xf - -C /tmp/factib && cd /tmp/factib/app/backend && \
pytest -q --confcutdir=/tmp/factib/app/backend/tests/mcp tests/mcp'Локальная проверка (перед push)
Всегда запускайте перед созданием PR или push изменений. Это зеркалирует конвейер CI локально и выявляет проблемы до того, как они попадут в GitHub Actions.
Быстрый старт
# Full validation (builds image + runs all checks):
./mcp/scripts/validate.sh
# Quick mode (reuses cached image, skips rebuild):
./mcp/scripts/validate.sh --quick
# Auto-fix known issues (e.g., BOM characters):
./mcp/scripts/validate.sh --fixЧто проверяется
Шаг | Что | Соответствует шагу CI |
1. BOM | Обнаруживает байты UTF-8 BOM в Python-файлах | Н/Д (предотвращает ошибки синтаксиса) |
2. Сборка |
| "Сборка образа MCP" |
3. Синтаксис |
| "Проверка синтаксиса" |
4. Тесты | Запускает тестовые модули в | "Запуск модульных тестов" |
5. Инструменты | Подсчитывает зарегистрированные инструменты (должно быть >= 100) | "Проверка количества инструментов" |
6. Секреты | Сканирует на наличие паттернов токенов в отслеживаемых файлах | Н/Д (перед публикацией) |
Доступные скрипты
Скрипт | Назначение | Когда использовать |
| Полное зеркало CI | Перед каждым push/PR |
| Проверка предварительных условий (Docker, токен, конфигурация) | При первой настройке или изменении окружения |
| Обнаружение паттернов секретов | Перед публикацией репозитория |
| Минимальная сборка + количество инструментов | Быстрая проверка работоспособности |
| Многоцелевой набор контрактных тестов | После структурных изменений |
Частые проблемы и их решения
Проблема | Симптом | Исправление |
BOM-символы |
|
|
Образ не собран | «Образ не найден» в командах Docker |
|
Токен не задан | «Токен GitHub не найден» при предварительной проверке |
|
Инструментов < 100 | Новый инструмент не зарегистрирован в server.py | Добавьте |
Полный реестр из 200 пунктов, включая реализованные и запланированные работы, находится в docs/HARDENING_200.md.
Расширенный набор возможностей: 60 дополнительных инструментов
Сервер предоставляет 100+ инструментов в общей сложности: исходные 40 операционных инструментов плюс 60 узконаправленных возможностей из tools/capability_suite.py.
Группа | Назначение | Примеры |
Качество issues и Markdown | Проверка, нормализация, суммаризация, шаблоны, группировка и рецензирование issues |
|
Система комментариев | Создание комментариев о прогрессе, планах, блокерах и решениях; поиск/список/редактирование комментариев |
|
Отчётность по проекту | Отчёты о состоянии, статусе, приоритетах, исполнителях, сроках и полях |
|
Планирование проекта | Экспорт/импорт Markdown, планы синхронизации метаданных и фильтрованные массовые планы |
|
Стратегическая автоматизация | Планы спринтов, ранжирование бэклога, отчёты о рисках/зависимостях и обновления для заинтересованных сторон |
|
Дорожные карты и решения | Журналы изменений, чек-листы релизов, дорожные карты, ретроспективы и решения по автоматизации |
|
Инструменты, которые могут вызывать масштабные изменения, по умолчанию возвращают план dry_run. Прямые инструменты работы с комментариями выполняют одну видимую операцию с комментарием за вызов. Каталог возможностей проверяет 60 уникальных дополнений во время импорта, а проверка Docker подтверждает 100 зарегистрированных инструментов FastMCP в обеих копиях исходников.
Распространение
Docker-образ
Сервер MCP распространяется как автономный Docker-образ. Сборка локально:
docker build -t github-project-mcp:latest ./mcpКонвейер CI/CD
Рабочий процесс mcp-ci.yaml запускается автоматически при:
Пуше в
main, когда изменяются файлы вmcp/Pull request, затрагивающих пути
mcp/
Этапы конвейера:
Сборка — проверка сборки Docker-образа
Проверка синтаксиса — AST-разбор всех Python-файлов
Модульные тесты — выполнение набора pytest
Проверка количества инструментов — гарантирует ≥100 зарегистрированных инструментов
Версионирование
Этот сервер MCP следует семантическому версионированию. Историю релизов см. в CHANGELOG.md.
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 gradedqualityDmaintenanceEnables users to interact with GitHub's Projects v2 API through natural language for Agile project management, supporting repository details, issue tracking, and project board management operations.35GPL 2.0
- AlicenseAqualityBmaintenanceEnables natural language management of GitHub Projects V2, including issue creation, status changes, sprint reports, and project setup via MCP tools and shell scripts.311MIT
- FlicenseNot gradedqualityDmaintenanceEnables LLM agents to manage projects, track issues, log work, and integrate with Git. Provides 23 MCP tools for full project management capabilities.16
- AlicenseAqualityDmaintenanceEnables AI assistants to manage GitHub Projects V2, including items, fields, and views through a standardized interface.17121MIT
Related MCP Connectors
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
Project management MCP for AI agents with safe task reads and writes.
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/jersonmartinez/mcp-github-projects'
If you have feedback or need assistance with the MCP directory API, please join our Discord server