Skip to main content
Glama
jersonmartinez

github-project-management

GitHub Project Management MCP Server

MCP CI

Benutzerdefinierter MCP-Server (Model Context Protocol), der KI-Assistenten ermöglicht, GitHub Project V2-Boards programmatisch über das Model Context Protocol zu verwalten. Entwickelt mit Python 3.12 und FastMCP, kommuniziert über stdio-Transport und läuft in einem eigenständigen Docker-Container.

Speicherort

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

Hinweis: Dieser MCP-Server ist eine eigenständige Komponente mit eigenem Dockerfile, eigenen Abhängigkeiten und eigenem Lebenszyklus.

Related MCP server: my_pm_tools

So funktioniert es

MCP Client → docker run --rm -i github-project-mcp:latest → stdin/stdout JSON-RPC → GitHub API
  1. Der MCP-Client ruft ein Werkzeug auf (z. B. create_project_item)

  2. Es wird docker run --rm -i github-project-mcp:latest python server.py ausgeführt

  3. Der Server validiert die Authentifizierung und wartet auf Befehle über stdin

  4. Der Client sendet JSON-RPC über stdin und erhält Antworten über stdout

  5. Nach Abschluss wird der Container automatisch zerstört (--rm)

Docker — Erstellen und Verwalten

Erstellen des Images

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

Docker Compose (lokale Entwicklung)

Der einfachste Weg, den MCP lokal zu konfigurieren und auszuführen:

# 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-Ziele

Alle Ziele werden innerhalb von Docker ausgeführt — ohne Host-Abhängigkeiten.

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

Hinweis: Wenn make auf dem Host nicht verfügbar ist, können die Ziele direkt mit Docker aufgerufen werden. Beispiel: docker run --rm --env-file .env github-project-mcp:latest python3 scripts/verify_setup.py

Jeder Mitwirkende klont das Repo, erstellt seine .env, und der MCP funktioniert, ohne dass außer Docker etwas installiert werden muss.

Überprüfen, ob das Image existiert

docker images | grep github-project-mcp

Manuell testen (Smoke-Test)

docker run --rm -i \
  -e GITHUB_TOKEN="<your_token>" \
  github-project-mcp:latest \
  python server.py

Der Server wird auf stderr ausgeben: github-project-management MCP server ready. Authentication validated successfully. Danach wartet er auf JSON-RPC über stdin. Drücken Sie Ctrl+C zum Beenden.

Nach Änderungen neu erstellen

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

Verwaltungsskript

Das Skript ./scripts/dev/start.sh unterstützt ein Argument mcp zur Verwaltung des Images:

./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

Hinweis: Der MCP ist kein persistenter Dienst. Er benötigt kein up/down/restart. Er wird bei Bedarf jedes Mal gestartet, wenn der Client ein Werkzeug verwendet.

IDE-Integration

Der MCP ist mit jedem Client kompatibel, der das MCP-Protokoll über stdio unterstützt. Die Konfiguration variiert je nach IDE — das allgemeine Muster ist:

{
  "mcpServers": {
    "github-project-management": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "GITHUB_TOKEN",
        "--env-file", "mcp/.env",
        "github-project-mcp:latest",
        "python", "server.py"
      ]
    }
  }
}

Für IDE-spezifische Konfiguration siehe docs/SETUP.md.

Registrierte Werkzeuge (100)

Kernoperationen

Werkzeug

Beschreibung

discover_ids

Projekt-/Feld-IDs ermitteln

list_project_items

Elemente mit Filtern auflisten

create_project_item

Issue erstellen + zum Projekt hinzufügen

update_project_item_fields

Status, Priorität, Fälligkeitsdatum aktualisieren

set_estimate

Story-Point-Schätzung festlegen

archive_project_item

Element vom Board archivieren

Issue-Verwaltung

Werkzeug

Beschreibung

close_issue

Ein Issue schließen

reopen_issue

Ein geschlossenes Issue wieder öffnen

comment_issue

Kommentar zum Issue hinzufügen

edit_issue

Titel, Beschreibung, Labels, Meilenstein, Bearbeiter bearbeiten

add_sub_issue

Als Unter-Issue verknüpfen

remove_sub_issue

Unter-Issue-Verknüpfung aufheben

get_issue_detail

Vollständige Issue-Details

search_issues

Nach Abfrage suchen

Board-Operationen

Werkzeug

Beschreibung

move_to_status

Element in eine beliebige Statusspalte verschieben

move_to_done

Als Erledigt markieren

move_to_trash

In den Papierkorb verschieben

bulk_update_items

Mehrere Elemente stapelweise aktualisieren

bulk_close_issues

Mehrere Issues schließen

bulk_assign

Mehreren Issues zuweisen

Planung & Arbeitsabläufe

Werkzeug

Beschreibung

sprint_planning

Sprintplan erstellen

generate_release_notes

Versionshinweise automatisch generieren

complete_issue

Kompletter Abschluss-Workflow

daily_standup

Standup-Bericht erstellen

sprint_review

Sprint-Review-Zusammenfassung

triage_new_issues

Vorschläge automatisch priorisieren

escalate_overdue

Überfällige Elemente kennzeichnen

create_epic

Übergeordnetes Element + Kinder erstellen

close_sprint

Sprint schließen und Elemente verschieben

Metadaten

Werkzeug

Beschreibung

create_milestone

GitHub-Meilenstein erstellen

close_milestone

Meilenstein schließen

list_milestones

Meilensteine auflisten

create_label

Label erstellen

list_labels

Labels auflisten

get_project_stats

Board-Statistiken

get_sprint_summary

Aktuelle Sprint-Metriken

Architektur

Tool Layer (FastMCP tool definitions)
    ↓
Service Layer (business logic, orchestration)
    ↓
Client Layer (GraphQL + gh CLI + caching)
    ↓
GitHub APIs (GraphQL v4 + REST v3)

Delegationsstrategie

Methode

Verwendung

gh CLI

Issue-CRUD, Kommentare, Projektelement hinzufügen, schließen

Custom GraphQL

Feldaktualisierungen, Archivierung, Erkennung, Unter-Issues

Umgebungsvariablen

Variable

Erforderlich

Beschreibung

GITHUB_TOKEN

Ja

GitHub-PAT (feingranular oder klassisch)

GH_PROJECT_ORG_NAME

Ja

GitHub-Besitzer (Organisation oder Benutzeranmeldung)

GH_PROJECT_REPO_NAME

Ja

Repository-Name

GH_PROJECT_PROJECT_NUMBER

Ja

Projekt-V2-Board-Nummer (1–100000)

Fehlerbehebung

MCP verbindet nicht

# 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 erneut verbinden

Wenn der MCP sich vom IDE trennt, verwenden Sie die Reconnect-Option des entsprechenden MCP-Clients.

Authentifizierungsfehler

  • Stellen Sie sicher, dass GITHUB_TOKEN in der Container-Umgebung verfügbar ist

  • Tokens github_pat_* (feingranular) benötigen Berechtigungen: Issues (RW), Projects (RW), Metadata (R)

  • Klassische Tokens benötigen Scopes: repo, project, read:org

Zugehörige Dokumentation

Dokument

Zweck

docs/SETUP.md

Token-Einrichtung und Berechtigungen

docs/USAGE.md

Beispiele für Tool-Eingaben/Ausgaben

docs/PARAMETERS.md

Parameterreferenz

docs/TROUBLESHOOTING.md

Häufige Fehler

Quellpfade und Synchronisierung

Dieses Verzeichnis (mcp/) ist die maßgebliche Quelle für das MCP-Paket.

Das Repository enthält eine synchronisierte Kopie unter:

  • app/backend/app/mcp/github_project/ — eingebettet in das Backend für Docker-Builds

Synchronisierungsworkflow

  1. Nehmen Sie alle Änderungen zuerst hier in mcp/ vor.

  2. Kopieren Sie geänderte Dateien in den eingebetteten Pfad:

    cp mcp/<file> app/backend/app/mcp/github_project/<file>
  3. Überprüfen Sie mit der automatisierten Prüfung:

    ./mcp/scripts/check_sync.sh

Das Synchronisierungsskript vergleicht alle gemeinsamen .py-Dateien (ausgenommen __init__.py, das in der Backend-Kopie bewusst unterschiedlich ist, sowie reine Infrastrukturdateien wie Dockerfile und requirements.txt). CI führt diese Prüfung bei jedem Push aus — Abweichungen führen zum Fehlschlagen des Builds.

Dateien, die in der Backend-Kopie absichtlich unterschiedlich sind

Datei

Grund

__init__.py

Backend-spezifische Importe + Dokumentation der Synchronisierungsquelle

README.md

Verweist hierher zurück; dokumentiert die Kopierrichtlinie

Die Backend-Testsuite prüft die eingebettete Kopie; die Syntaxvalidierung muss beide Bäume kompilieren.

Abgesichertes Laufzeitverhalten

Alle Einstellungen verwenden das Präfix GH_PROJECT_ und werden beim Start validiert:

Einstellung

Standard

Grenzen / Verhalten

GH_PROJECT_TIMEOUT_SECONDS

10

1–120 Sekunden

GH_PROJECT_RETRY_ATTEMPTS

1

0–5; nur Lesevorgänge, Mutationen werden nie wiederholt

GH_PROJECT_RETRY_DELAY_SECONDS

2.0

0–60 Sekunden, exponentieller Backoff

GH_PROJECT_CACHE_TTL_HOURS

24

1–720 Stunden

GH_PROJECT_CACHE_PATH

.github_project_cache.json

Konfigurierbarer lokaler Pfad

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

Der Metadaten-Cache wird atomar geschrieben, verwendet ausschließlich Eigentümer-Berechtigungen (0600), lehnt zukünftige Zeitstempel ab und wird nicht wiederverwendet, wenn sich Organisation oder Projektnummer unterscheiden. CLI- und GraphQL-Diagnosen maskieren tokenartige Werte und werden begrenzt, bevor sie an den MCP-Client zurückgegeben werden.

Docker-only-Validierung

Führen Sie die Validierung ohne Python-Werkzeuge auf dem Host aus:

# 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'

Lokale Validierung (vor dem Push)

Führen Sie dies immer vor dem Erstellen eines PR oder dem Pushen von Änderungen aus. Dies spiegelt die CI-Pipeline lokal wider und erkennt Probleme, bevor sie GitHub Actions erreichen.

Schnellstart

# 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

Was geprüft wird

Schritt

Was

Gleicher CI-Schritt

1. BOM

Erkennt UTF-8-BOM-Bytes in Python-Dateien

N/A (verhindert Syntaxfehler)

2. Build

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

MCP-Image erstellen

3. Syntax

ast.parse auf allen .py-Dateien im Image

Syntaxprüfung

4. Tests

Führt Testmodule in tests/ aus

Unit-Tests ausführen

5. Werkzeuge

Zählt registrierte Werkzeuge (muss >= 100 sein)

Werkzeuganzahl überprüfen

6. Geheimnisse

Scannt nach Token-Mustern in nachverfolgten Dateien

N/A (vor der Veröffentlichung)

Verfügbare Skripte

Skript

Zweck

Verwendungszeitpunkt

scripts/validate.sh

Vollständige CI-Spiegelung

Vor jedem Push/PR

scripts/preflight.sh

Voraussetzungsprüfung (Docker, Token, Konfiguration)

Erste Einrichtung oder Umgebungsänderungen

scripts/scan_secrets.sh

Erkennung von geheimen Mustern

Vor der Veröffentlichung des Repos

scripts/smoke_build.sh

Minimaler Build + Werkzeuganzahl

Schneller Plausibilitätscheck

scripts/run_contract_tests.sh

Multi-Ziel-Vertragssuite

Nach strukturellen Änderungen

Häufige Probleme und Lösungen

Problem

Symptom

Behebung

BOM-Zeichen

SyntaxError: invalid non-printable character U+FEFF

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

Image nicht erstellt

„Image not found" in Docker-Befehlen

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

Token nicht gesetzt

„No GitHub token found" in der Preflight-Prüfung

export GITHUB_TOKEN=ghp_...

Tool-Anzahl < 100

Neues Tool nicht in server.py registriert

mcp.tool()(your_tool) in server.py hinzufügen

Das vollständige Register mit 200 Einträgen, einschließlich umgesetzter und geplanter Arbeiten, finden Sie in docs/HARDENING_200.md.

Erweiterte Fähigkeitssuite: 60 zusätzliche Tools

Der Server stellt insgesamt über 100 Tools bereit: die ursprünglichen 40 operativen Tools plus 60 fokussierte Fähigkeiten aus tools/capability_suite.py.

Gruppe

Zweck

Beispiele

Issue- und Markdown-Qualität

Issues validieren, normalisieren, zusammenfassen, Vorlagen erstellen, bündeln und prüfen

validate_issue_markdown, build_issue_template, build_issue_review_checklist

Kommentarsystem

Fortschritts-, Plan-, Blocker- und Lösungs-Kommentare erstellen; Kommentare auflisten/durchsuchen/bearbeiten

comment_issue_progress, comment_issue_blocker, list_issue_comments

Projektberichterstattung

Gesundheits-, Status-, Prioritäts-, Bearbeiter-, Fälligkeits- und Feldberichte

project_health_report, project_due_date_risk, project_field_options_report

Projektplanung

Markdown-Export/-Import, Metadaten-Synchronisationspläne und gefilterte Massenpläne

project_export_markdown, project_sync_issue_metadata, project_bulk_status_by_filter

Strategische Automatisierung

Sprint-Pläne, Backlog-Ranking, Risiko-/Abhängigkeitsberichte und Stakeholder-Updates

plan_next_sprint, prioritize_backlog, generate_risk_register

Roadmaps und Entscheidungen

Changelogs, Release-Checklisten, Roadmaps, Retrospektiven und Automatisierungsentscheidungen

generate_changelog_from_issues, build_roadmap_markdown, build_sprint_retrospective

Tools, die umfangreiche Änderungen verursachen könnten, geben standardmäßig einen dry_run-Plan zurück. Direkte Kommentar-Tools führen pro Aufruf eine sichtbare Kommentaroperation aus. Der Fähigkeitskatalog bestätigt beim Import 60 eindeutige Ergänzungen, und die Docker-Validierung bestätigt 100 registrierte FastMCP-Tools in beiden Quellkopien.

Distribution

Docker-Image

Der MCP-Server wird als eigenständiges Docker-Image verteilt. Lokal erstellen:

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

CI/CD-Pipeline

Der Workflow mcp-ci.yaml wird automatisch ausgeführt bei:

  • Push auf main, wenn sich Dateien unter mcp/ ändern

  • Pull Requests, die mcp/-Pfade betreffen

Pipeline-Stufen:

  1. Build — Überprüfung des Docker-Image-Builds

  2. Syntaxprüfung — AST-Parsing aller Python-Dateien

  3. Unit-Tests — Ausführung der pytest-Suite

  4. Tool-Anzahl-Prüfung — Stellt sicher, dass ≥100 Tools registriert sind

Versionierung

Dieser MCP-Server folgt Semantic Versioning. Die Versionshistorie finden Sie in 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