Skip to main content
Glama
jersonmartinez

github-project-management

Servidor MCP de Gestión de Proyectos GitHub

MCP CI

Servidor MCP (Model Context Protocol) personalizado que permite a los asistentes de IA gestionar programáticamente tableros de GitHub Project V2 mediante el Model Context Protocol. Construido con Python 3.12 y FastMCP, se comunica a través del transporte stdio y se ejecuta dentro de un contenedor Docker independiente.

Ubicación

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

Nota: Este servidor MCP es un componente independiente con su propio Dockerfile, dependencias y ciclo de vida.

Related MCP server: my_pm_tools

Cómo Funciona

MCP Client → docker run --rm -i github-project-mcp:latest → stdin/stdout JSON-RPC → GitHub API
  1. El cliente MCP invoca una herramienta (ej: create_project_item)

  2. Se ejecuta docker run --rm -i github-project-mcp:latest python server.py

  3. El servidor valida la autenticación y espera comandos por stdin

  4. El cliente envía JSON-RPC por stdin y recibe respuestas por stdout

  5. Al finalizar, el contenedor se destruye automáticamente (--rm)

Docker — Construir y Gestionar

Construir la imagen

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

Docker Compose (desarrollo local)

La forma más sencilla de configurar y ejecutar el MCP localmente:

# 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

Objetivos de Makefile

Todos los objetivos se ejecutan dentro de Docker — sin dependencias del host.

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

Nota: Si make no está disponible en el host, los objetivos pueden invocarse directamente con Docker. Ejemplo: docker run --rm --env-file .env github-project-mcp:latest python3 scripts/verify_setup.py

Cada colaborador clona el repositorio, crea su .env, y el MCP funciona sin instalar nada más que Docker.

Verificar que la imagen existe

docker images | grep github-project-mcp

Probar manualmente (prueba de humo)

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

El servidor imprimirá en stderr: github-project-management MCP server ready. Authentication validated successfully. Luego espera JSON-RPC por stdin. Pulsa Ctrl+C para salir.

Reconstruir después de cambios

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

Script de gestión

El script ./scripts/dev/start.sh admite un argumento mcp para gestionar la imagen:

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

Nota: El MCP no es un servicio persistente. No necesita up/down/restart. Se lanza bajo demanda cada vez que el cliente utiliza una herramienta.

Integración con IDE

El MCP es compatible con cualquier cliente que admita el protocolo MCP sobre stdio. La configuración varía según el IDE — el patrón general es:

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

Para la configuración específica por IDE, consulta docs/SETUP.md.

Herramientas Registradas (100)

Operaciones Principales

Herramienta

Descripción

discover_ids

Descubrir IDs de proyecto/campos

list_project_items

Listar elementos con filtros

create_project_item

Crear issue + añadir al proyecto

update_project_item_fields

Actualizar Estado, Prioridad, Fecha límite

set_estimate

Establecer estimación en puntos

archive_project_item

Archivar elemento del tablero

Gestión de Issues

Herramienta

Descripción

close_issue

Cerrar un issue

reopen_issue

Reabrir un issue cerrado

comment_issue

Añadir comentario a un issue

edit_issue

Editar título, cuerpo, etiquetas, hito, asignados

add_sub_issue

Vincular como sub-issue

remove_sub_issue

Desvincular sub-issue

get_issue_detail

Detalle completo del issue

search_issues

Buscar por consulta

Operaciones de Tablero

Herramienta

Descripción

move_to_status

Mover elemento a cualquier columna de estado

move_to_done

Marcar como Hecho

move_to_trash

Mover a la Papelera

bulk_update_items

Actualizar varios elementos por lotes

bulk_close_issues

Cerrar varios issues

bulk_assign

Asignar varios issues

Planificación y Flujos de Trabajo

Herramienta

Descripción

sprint_planning

Generar plan de sprint

generate_release_notes

Generar notas de versión automáticamente

complete_issue

Flujo de finalización completo

daily_standup

Generar informe de standup

sprint_review

Resumen de revisión de sprint

triage_new_issues

Triaje automático de propuestas

escalate_overdue

Marcar elementos vencidos

create_epic

Crear épica + elementos secundarios

close_sprint

Cerrar sprint y mover elementos

Metadatos

Herramienta

Descripción

create_milestone

Crear hito de GitHub

close_milestone

Cerrar hito

list_milestones

Listar hitos

create_label

Crear etiqueta

list_labels

Listar etiquetas

get_project_stats

Estadísticas del tablero

get_sprint_summary

Métricas del sprint actual

Arquitectura

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

Estrategia de Delegación

Método

Cuándo se utiliza

CLI de gh

CRUD de issues, comentarios, añadir elementos al proyecto, cerrar

GraphQL personalizado

Actualizaciones de campos, archivado, descubrimiento, sub-issues

Variables de Entorno

Variable

Obligatoria

Descripción

GITHUB_TOKEN

PAT de GitHub (de grano fino o clásico)

GH_PROJECT_ORG_NAME

Propietario de GitHub (organización o inicio de sesión de usuario)

GH_PROJECT_REPO_NAME

Nombre del repositorio

GH_PROJECT_PROJECT_NUMBER

Número del tablero Project V2 (1–100000)

Solución de Problemas

El MCP no conecta

# 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

Reconectar MCP

Si el MCP se desconecta del IDE, utiliza la opción de reconexión del cliente MCP correspondiente.

Error de autenticación

  • Verificar que GITHUB_TOKEN está disponible en el entorno del contenedor

  • Los tokens github_pat_* (de grano fino) necesitan permisos: Issues (RW), Projects (RW), Metadata (R)

  • Los tokens clásicos necesitan scopes: repo, project, read:org

Documentación Relacionada

Documento

Propósito

docs/SETUP.md

Configuración de token y permisos

docs/USAGE.md

Ejemplos de entrada/salida de herramientas

docs/PARAMETERS.md

Referencia de parámetros

docs/TROUBLESHOOTING.md

Errores comunes

Ubicaciones de origen y sincronización

Este directorio (mcp/) es la fuente canónica de verdad para el paquete MCP.

El repositorio contiene una copia sincronizada en:

  • app/backend/app/mcp/github_project/ — integrada en el backend para las compilaciones de Docker

Flujo de sincronización

  1. Realiza todos los cambios aquí en mcp/ primero.

  2. Copia los archivos modificados a la ruta integrada:

    cp mcp/<file> app/backend/app/mcp/github_project/<file>
  3. Verifica con la comprobación automatizada:

    ./mcp/scripts/check_sync.sh

El script de sincronización compara todos los archivos .py compartidos (excluyendo __init__.py, que es intencionadamente diferente en la copia del backend, y archivos solo de infraestructura como Dockerfile y requirements.txt). CI ejecuta esta comprobación en cada push — la divergencia hace fallar la compilación.

Archivos intencionadamente diferentes en la copia del backend

Archivo

Motivo

__init__.py

Importaciones específicas del backend + documentación de la fuente de sincronización

README.md

Apunta de vuelta aquí; documenta la política de copia

El conjunto de pruebas del backend ejercita la copia integrada; la validación de sintaxis debe compilar ambos árboles.

Comportamiento de ejecución reforzado

Todos los ajustes utilizan el prefijo GH_PROJECT_ y se validan al inicio:

Ajuste

Valor predeterminado

Límites / comportamiento

GH_PROJECT_TIMEOUT_SECONDS

10

1–120 segundos

GH_PROJECT_RETRY_ATTEMPTS

1

0–5; solo lecturas, las mutaciones nunca se reintentan

GH_PROJECT_RETRY_DELAY_SECONDS

2.0

0–60 segundos, retroceso exponencial

GH_PROJECT_CACHE_TTL_HOURS

24

1–720 horas

GH_PROJECT_CACHE_PATH

.github_project_cache.json

Ruta local configurable

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

La caché de metadatos se escribe de forma atómica, utiliza permisos solo para el propietario (0600), rechaza marcas de tiempo futuras y no se reutiliza cuando la organización o el número de proyecto difieren. Los diagnósticos de CLI y GraphQL redactan valores similares a tokens y están limitados antes de devolverse al cliente MCP.

Validación solo con Docker

Ejecuta la validación sin herramientas de Python en el host:

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

Validación Local (Antes del Push)

Ejecuta siempre antes de crear un PR o enviar cambios. Esto replica el pipeline de CI localmente y detecta problemas antes de que lleguen a GitHub Actions.

Inicio Rápido

# 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

Qué Comprueba

Paso

Qué

Igual que el paso de CI

1. BOM

Detecta bytes BOM UTF-8 en archivos Python

N/A (previene errores de sintaxis)

2. Build

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

"Build MCP image"

3. Sintaxis

ast.parse en todos los archivos .py dentro de la imagen

"Syntax check"

4. Pruebas

Ejecuta los módulos de prueba en tests/

"Run unit tests"

5. Herramientas

Cuenta las herramientas registradas (debe ser >= 100)

"Verify tool count"

6. Secretos

Escanea patrones de tokens en archivos rastreados

N/A (pre-publicación)

Scripts Disponibles

Script

Propósito

Cuándo Usarlo

scripts/validate.sh

Espejo completo de CI

Antes de cada push/PR

scripts/preflight.sh

Comprobación de requisitos (Docker, token, configuración)

Primera configuración o cambios de entorno

scripts/scan_secrets.sh

Detección de patrones de secretos

Antes de publicar el repositorio

scripts/smoke_build.sh

Compilación mínima + recuento de herramientas

Comprobación rápida de cordura

scripts/run_contract_tests.sh

Suite de contratos multiobjetivo

Después de cambios estructurales

Problemas Comunes y Soluciones

Problema

Síntoma

Solución

Caracteres BOM

SyntaxError: invalid non-printable character U+FEFF

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

Imagen no construida

"Image not found" en comandos de Docker

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

Token no establecido

"No GitHub token found" en la verificación previa

export GITHUB_TOKEN=ghp_...

Recuento de herramientas < 100

Nueva herramienta no registrada en server.py

Añade mcp.tool()(your_tool) en server.py

El registro completo de 200 elementos, incluido el trabajo implementado y planificado, está en docs/HARDENING_200.md.

Suite de capacidades ampliada: 60 herramientas adicionales

El servidor expone más de 100 herramientas en total: las 40 herramientas operativas originales más 60 capacidades específicas de tools/capability_suite.py.

Grupo

Propósito

Ejemplos

Calidad de issues y Markdown

Validar, normalizar, resumir, plantillar, agrupar y revisar issues

validate_issue_markdown, build_issue_template, build_issue_review_checklist

Sistema de comentarios

Crear comentarios de progreso, plan, bloqueo y resolución; listar/buscar/editar comentarios

comment_issue_progress, comment_issue_blocker, list_issue_comments

Informes de proyecto

Informes de salud, estado, prioridad, asignado, fecha límite y campos

project_health_report, project_due_date_risk, project_field_options_report

Planificación de proyecto

Exportar/importar Markdown, planes de sincronización de metadatos y planes masivos filtrados

project_export_markdown, project_sync_issue_metadata, project_bulk_status_by_filter

Automatización estratégica

Planes de sprint, clasificación de backlog, informes de riesgo/dependencias y actualizaciones para interesados

plan_next_sprint, prioritize_backlog, generate_risk_register

Hojas de ruta y decisiones

Registros de cambios, listas de verificación de lanzamiento, hojas de ruta, retrospectivas y decisiones de automatización

generate_changelog_from_issues, build_roadmap_markdown, build_sprint_retrospective

Las herramientas que podrían causar mutaciones amplias devuelven un plan dry_run por defecto. Las herramientas de comentarios directos realizan una operación de comentario visible por invocación. El catálogo de capacidades verifica 60 adiciones únicas en el momento de la importación, y la validación de Docker confirma 100 herramientas FastMCP registradas en ambas copias del código fuente.

Distribución

Imagen Docker

El servidor MCP se distribuye como una imagen Docker independiente. Compílala localmente:

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

Canal de CI/CD

El flujo de trabajo mcp-ci.yaml se ejecuta automáticamente en:

  • Push a main cuando cambian archivos bajo mcp/

  • Pull requests que afectan rutas de mcp/

Etapas del canal:

  1. Compilación — Verificación de compilación de la imagen Docker

  2. Verificación de sintaxis — Análisis AST de todos los archivos Python

  3. Pruebas unitarias — Ejecución de la suite de pytest

  4. Verificación del recuento de herramientas — Garantiza ≥100 herramientas registradas

Versionado

Este servidor MCP sigue Semantic Versioning. Consulta CHANGELOG.md para ver el historial de versiones.

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