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
Related MCP server: GitHub MCP Server
Instalación
npm install @monsoft/mcp-github-project-managerUso
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_hereEsto 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_hereTransporte 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=8080Al utilizar el transporte SSE, el servidor será accesible en:
Punto final SSE:
http://localhost:<PORT>/ssePunto 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_hereLuego, 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 projectsAl 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_hereTambié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_hereSi 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 GitHubAuthenticationError: se lanza cuando falla la autenticaciónResourceNotFoundError: se lanza cuando el recurso solicitado no existeValidationError: se lanza cuando falla la validación de entradaRateLimitError: se lanza cuando se superan los límites de velocidad de la API de GitHubNetworkError: se lanza cuando ocurren problemas de comunicación de redGitHubApiError: 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 repositoriosproject- Acceso a proyectosissues- Acceso a los problemas
Desarrollo
Edificio
npm run buildValidación
npm run validatePruebas
npm testPelusa
npm run lintLicencia
Instituto Tecnológico de Massachusetts (MIT)