Github Project Manager

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Supports loading environment configuration from .env files, used to store GitHub tokens and other configuration settings.

  • Allows management of GitHub issues, pull requests, and projects. Features include creating, updating, and listing issues; adding comments; creating, updating, and merging pull requests; managing pull request reviews; and creating and managing GitHub projects.

Gerente de proyectos de GitHub

Una implementación del Protocolo de Contexto de Modelo (MCP) para gestionar proyectos e incidencias de GitHub. Este paquete proporciona una interfaz fluida para que los asistentes y aplicaciones de IA interactúen con repositorios, incidencias, solicitudes de incorporación de cambios y proyectos de GitHub.

Características

Gestión de problemas de GitHub

  • Crear problemas
  • Problemas de actualización
  • Lista de problemas con las opciones de filtrado
  • Obtener detalles del problema
  • Añadir comentarios a los problemas
  • Cerrar problemas

Gestión de solicitudes de extracción de GitHub

  • Crear solicitudes de extracción
  • Actualizar solicitudes de extracción
  • Lista de solicitudes de extracción con opciones de filtrado
  • Obtener detalles de la solicitud de extracción
  • Fusionar solicitudes de extracción
  • Comprobar si se ha fusionado una solicitud de extracción
  • Crear y gestionar revisiones de solicitudes de extracción
  • Agregar y listar comentarios de reseñas
  • Solicitar y eliminar revisores
  • Actualizar las ramas de la solicitud de extracción

Gestión de proyectos de GitHub

  • Crear proyectos
  • Agregar problemas a los proyectos
  • Actualizar elementos del proyecto (moverse entre columnas)
  • Lista de elementos del proyecto

Instalación

npm install @monsoft/mcp-github-project-manager

Uso

Inicio rápido con npx

La forma más rápida de utilizar el Administrador de proyectos de GitHub es directamente con npx:

npx -y @monsoft/mcp-github-project-manager --GITHUB_PERSONAL_TOKEN=your_github_token_here

Esto inicia el servidor MCP al que luego los clientes MCP pueden conectarse.

Opciones de transporte

El Administrador de proyectos de GitHub admite dos métodos de transporte:

Transporte de Stdio (predeterminado)

Este es el transporte predeterminado, ideal para integraciones CLI directas y uso local:

# Start with default Stdio transport npx -y @monsoft/mcp-github-project-manager --GITHUB_PERSONAL_TOKEN=your_github_token_here

Transporte de eventos enviados por el servidor (SSE)

Para configuraciones remotas e integraciones web, puede utilizar el transporte SSE que inicia un servidor HTTP:

# Start with SSE transport on default port (3010) npx -y @monsoft/mcp-github-project-manager --GITHUB_PERSONAL_TOKEN=your_github_token_here --RUN_SSE=1 # Start with SSE transport on a custom port npx -y @monsoft/mcp-github-project-manager --GITHUB_PERSONAL_TOKEN=your_github_token_here --RUN_SSE=1 --PORT=8080

Al utilizar el transporte SSE, el servidor será accesible en:

  • Punto final SSE: http://localhost:<PORT>/sse
  • Punto final de mensajes: http://localhost:<PORT>/messages

Configuración con clientes MCP

Para usar esto con asistentes de IA como Claude en Anthropic o Cursor:

# Start the MCP server in your terminal npx -y @monsoft/mcp-github-project-manager --GITHUB_PERSONAL_TOKEN=your_github_token_here

Luego, configura tu asistente de IA para usar este servidor MCP. La configuración exacta depende del cliente que uses.

Uso programático

Para utilizar el Administrador de proyectos de GitHub en su propio código:

import { GitHubProjectManager } from '@monsoft/mcp-github-project-manager'; // The token will be automatically loaded from command line arguments const manager = new GitHubProjectManager(); // Now you can use the manager to interact with GitHub projects

Al ejecutar su aplicación, proporcione el token de GitHub como argumento de línea de comando:

node your-app.js --GITHUB_PERSONAL_TOKEN=your_github_token_here

También puede especificar el tipo de transporte y otras opciones:

# Use SSE transport node your-app.js --GITHUB_PERSONAL_TOKEN=your_github_token_here --RUN_SSE=1 --PORT=3010 # Use default Stdio transport node your-app.js --GITHUB_PERSONAL_TOKEN=your_github_token_here

Si necesita iniciar programáticamente el servidor con opciones de transporte específicas:

import { startGitHubProjectManagerServer, startGitHubProjectManagerServerSSE, } from '@monsoft/mcp-github-project-manager'; // Start with Stdio transport await startGitHubProjectManagerServer('your_github_token_here'); // Or start with SSE transport await startGitHubProjectManagerServerSSE('your_github_token_here', 3010);

Referencia de API

Gestión de problemas

Crear un problema

const newIssue = await manager.createIssue({ owner: 'organization-name', repo: 'repository-name', title: 'Issue title', body: 'Detailed description of the issue', labels: ['bug', 'priority-high'], assignees: ['username1', 'username2'], });

Obtener detalles del problema

const issue = await manager.getIssue({ owner: 'organization-name', repo: 'repository-name', issue_number: 123, });

Actualizar un problema

await manager.updateIssue({ owner: 'organization-name', repo: 'repository-name', issue_number: 123, title: 'Updated title', body: 'Updated description', state: 'closed', });

Lista de problemas

const issues = await manager.listIssues({ owner: 'organization-name', repo: 'repository-name', state: 'open', labels: ['bug'], sort: 'created', direction: 'desc', });

Agregar comentario sobre el problema

await manager.addIssueComment({ owner: 'organization-name', repo: 'repository-name', issue_number: 123, body: 'This is a comment', });

Gestión de solicitudes de extracción

Crear una solicitud de extracción

const pr = await manager.createPullRequest({ owner: 'organization-name', repo: 'repository-name', title: 'Pull request title', body: 'Description of changes', head: 'feature-branch', base: 'main', });

Obtener detalles de la solicitud de extracción

const pullRequest = await manager.getPullRequest({ owner: 'organization-name', repo: 'repository-name', pull_number: 456, });

Fusionar una solicitud de extracción

await manager.mergePullRequest({ owner: 'organization-name', repo: 'repository-name', pull_number: 456, merge_method: 'squash', });

Crear una reseña

await manager.createPullRequestReview({ owner: 'organization-name', repo: 'repository-name', pull_number: 456, event: 'APPROVE', body: 'LGTM! Great work.', });

Gestión de proyectos

Crear un proyecto

const project = await manager.createProject({ owner: 'organization-name', name: 'Project Name', body: 'Project description', });

Agregar elemento al proyecto

await manager.addProjectItem({ project_id: 12345, content_id: issue.id, content_type: 'Issue', });

Lista de elementos del proyecto

const items = await manager.listProjectItems({ project_id: 12345, });

Manejo de errores

El paquete proporciona clases de error personalizadas para manejar escenarios de error comunes:

try { // GitHub operations } catch (error) { if (error instanceof MissingGitHubTokenError) { console.error('GitHub token is missing. Please provide one via command line.'); } else if (error instanceof AuthenticationError) { console.error('Failed to authenticate with GitHub. Check your token.'); } else if (error instanceof RateLimitError) { console.error('GitHub API rate limit exceeded.'); } else { console.error('An unexpected error occurred:', error.message); } }

Clases de error disponibles:

  • MissingGitHubTokenError : se lanza cuando no se proporciona un token de GitHub
  • AuthenticationError : se lanza cuando falla la autenticación
  • ResourceNotFoundError : se lanza cuando el recurso solicitado no existe
  • ValidationError : se lanza cuando falla la validación de entrada
  • RateLimitError : se lanza cuando se superan los límites de velocidad de la API de GitHub
  • NetworkError : se lanza cuando ocurren problemas de comunicación de red
  • GitHubApiError : Error general de problemas con la API de GitHub

Permisos de token de GitHub

Su token de acceso personal de GitHub necesita los siguientes permisos:

  • repo - Acceso completo a los repositorios
  • project - Acceso a proyectos
  • issues - Acceso a los problemas

Desarrollo

Edificio

npm run build

Validación

npm run validate

Pruebas

npm test

Pelusa

npm run lint

Licencia

Instituto Tecnológico de Massachusetts (MIT)

ID: wajp07sk6l