Skip to main content
Glama
jersonmartinez

github-project-management

GitHub Project Management MCP Server

MCP CI

Пользовательский 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
  1. Клиент MCP вызывает инструмент (например: create_project_item)

  2. Выполняется docker run --rm -i github-project-mcp:latest python server.py

  3. Сервер проверяет аутентификацию и ожидает команды через stdin

  4. Клиент отправляет JSON-RPC через stdin и получает ответы через stdout

  5. По завершении контейнер автоматически уничтожается (--rm)

Docker — Сборка и управление

Сборка образа

# Desde la raíz del proyecto
docker build -t github-project-mcp:latest ./mcp

Docker 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

discover_ids

Обнаружение ID проектов/полей

list_project_items

Список элементов с фильтрами

create_project_item

Создание issue + добавление в проект

update_project_item_fields

Обновление статуса, приоритета, срока

set_estimate

Установка оценки в story points

archive_project_item

Архивирование элемента с доски

Управление issues

Tool

Description

close_issue

Закрыть issue

reopen_issue

Переоткрыть закрытый issue

comment_issue

Добавить комментарий к issue

edit_issue

Редактировать заголовок, описание, метки, веху, исполнителей

add_sub_issue

Привязать как под-issue

remove_sub_issue

Отвязать под-issue

get_issue_detail

Полная информация об issue

search_issues

Поиск по запросу

Операции с доской

Tool

Description

move_to_status

Переместить элемент в любую колонку статуса

move_to_done

Отметить как Done

move_to_trash

Переместить в корзину

bulk_update_items

Пакетное обновление нескольких элементов

bulk_close_issues

Закрыть несколько issues

bulk_assign

Назначить несколько issues

Планирование и рабочие процессы

Tool

Description

sprint_planning

Сформировать план спринта

generate_release_notes

Автоматическая генерация release notes

complete_issue

Полный процесс завершения

daily_standup

Сформировать отчёт для стендапа

sprint_review

Итоги обзора спринта

triage_new_issues

Автоматическое триажирование предложений

escalate_overdue

Пометить просроченные элементы

create_epic

Создать родительскую задачу + дочерние

close_sprint

Закрыть спринт и переместить элементы

Метаданные

Tool

Description

create_milestone

Создать веху GitHub

close_milestone

Закрыть веху

list_milestones

Список вех

create_label

Создать метку

list_labels

Список меток

get_project_stats

Статистика доски

get_sprint_summary

Метрики текущего спринта

Архитектура

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_TOKEN

Да

GitHub PAT (fine-grained или классический)

GH_PROJECT_ORG_NAME

Да

Владелец GitHub (организация или логин пользователя)

GH_PROJECT_REPO_NAME

Да

Имя репозитория

GH_PROJECT_PROJECT_NUMBER

Да

Номер доски 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

Связанная документация

Документ

Назначение

docs/SETUP.md

Настройка токена и разрешения

docs/USAGE.md

Примеры ввода/вывода инструментов

docs/PARAMETERS.md

Справочник параметров

docs/TROUBLESHOOTING.md

Частые ошибки

Расположение исходников и синхронизация

Этот каталог (mcp/) является каноническим источником истины для MCP-пакета.

Репозиторий содержит синхронизированную копию по адресу:

  • app/backend/app/mcp/github_project/ — встроена в бэкенд для Docker-сборок

Процесс синхронизации

  1. Вносите все изменения здесь — сначала в mcp/.

  2. Скопируйте изменённые файлы во встроенный путь:

    cp mcp/<file> app/backend/app/mcp/github_project/<file>
  3. Проверьте с помощью автоматической проверки:

    ./mcp/scripts/check_sync.sh

Скрипт синхронизации сравнивает все общие .py-файлы (исключая __init__.py, который намеренно отличается в копии бэкенда, и файлы только для инфраструктуры, такие как Dockerfile и requirements.txt). CI запускает эту проверку при каждом push — расхождение приводит к сбою сборки.

Файлы, намеренно отличающиеся в копии бэкенда

Файл

Причина

__init__.py

Импорты, специфичные для бэкенда + документация источника синхронизации

README.md

Указывает сюда; описывает политику копирования

Тестовый набор бэкенда проверяет встроенную копию; проверка синтаксиса должна компилировать оба дерева.

Усиленное поведение во время выполнения

Все настройки используют префикс GH_PROJECT_ и проверяются при запуске:

Настройка

По умолчанию

Границы / поведение

GH_PROJECT_TIMEOUT_SECONDS

10

1–120 секунд

GH_PROJECT_RETRY_ATTEMPTS

1

0–5; только чтение, мутации не повторяются

GH_PROJECT_RETRY_DELAY_SECONDS

2.0

0–60 секунд, экспоненциальная задержка

GH_PROJECT_CACHE_TTL_HOURS

24

1–720 часов

GH_PROJECT_CACHE_PATH

.github_project_cache.json

Настраиваемый локальный путь

GH_PROJECT_PAGE_SIZE

100

1–100

GH_PROJECT_MAX_ITEMS

200

1–1 000

GH_PROJECT_MAX_CLI_OUTPUT_CHARS

1,000,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. Сборка

docker build -t github-project-mcp:validate ./mcp

"Сборка образа MCP"

3. Синтаксис

ast.parse для всех .py-файлов внутри образа

"Проверка синтаксиса"

4. Тесты

Запускает тестовые модули в tests/

"Запуск модульных тестов"

5. Инструменты

Подсчитывает зарегистрированные инструменты (должно быть >= 100)

"Проверка количества инструментов"

6. Секреты

Сканирует на наличие паттернов токенов в отслеживаемых файлах

Н/Д (перед публикацией)

Доступные скрипты

Скрипт

Назначение

Когда использовать

scripts/validate.sh

Полное зеркало CI

Перед каждым push/PR

scripts/preflight.sh

Проверка предварительных условий (Docker, токен, конфигурация)

При первой настройке или изменении окружения

scripts/scan_secrets.sh

Обнаружение паттернов секретов

Перед публикацией репозитория

scripts/smoke_build.sh

Минимальная сборка + количество инструментов

Быстрая проверка работоспособности

scripts/run_contract_tests.sh

Многоцелевой набор контрактных тестов

После структурных изменений

Частые проблемы и их решения

Проблема

Симптом

Исправление

BOM-символы

SyntaxError: invalid non-printable character U+FEFF

./mcp/scripts/validate.sh --fix

Образ не собран

«Образ не найден» в командах Docker

docker build -t github-project-mcp:latest ./mcp

Токен не задан

«Токен GitHub не найден» при предварительной проверке

export GITHUB_TOKEN=ghp_...

Инструментов < 100

Новый инструмент не зарегистрирован в server.py

Добавьте mcp.tool()(your_tool) в server.py

Полный реестр из 200 пунктов, включая реализованные и запланированные работы, находится в docs/HARDENING_200.md.

Расширенный набор возможностей: 60 дополнительных инструментов

Сервер предоставляет 100+ инструментов в общей сложности: исходные 40 операционных инструментов плюс 60 узконаправленных возможностей из tools/capability_suite.py.

Группа

Назначение

Примеры

Качество issues и Markdown

Проверка, нормализация, суммаризация, шаблоны, группировка и рецензирование issues

validate_issue_markdown, build_issue_template, build_issue_review_checklist

Система комментариев

Создание комментариев о прогрессе, планах, блокерах и решениях; поиск/список/редактирование комментариев

comment_issue_progress, comment_issue_blocker, list_issue_comments

Отчётность по проекту

Отчёты о состоянии, статусе, приоритетах, исполнителях, сроках и полях

project_health_report, project_due_date_risk, project_field_options_report

Планирование проекта

Экспорт/импорт Markdown, планы синхронизации метаданных и фильтрованные массовые планы

project_export_markdown, project_sync_issue_metadata, project_bulk_status_by_filter

Стратегическая автоматизация

Планы спринтов, ранжирование бэклога, отчёты о рисках/зависимостях и обновления для заинтересованных сторон

plan_next_sprint, prioritize_backlog, generate_risk_register

Дорожные карты и решения

Журналы изменений, чек-листы релизов, дорожные карты, ретроспективы и решения по автоматизации

generate_changelog_from_issues, build_roadmap_markdown, build_sprint_retrospective

Инструменты, которые могут вызывать масштабные изменения, по умолчанию возвращают план 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/

Этапы конвейера:

  1. Сборка — проверка сборки Docker-образа

  2. Проверка синтаксиса — AST-разбор всех Python-файлов

  3. Модульные тесты — выполнение набора pytest

  4. Проверка количества инструментов — гарантирует ≥100 зарегистрированных инструментов

Версионирование

Этот сервер MCP следует семантическому версионированию. Историю релизов см. в CHANGELOG.md.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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