GitHub MCP Server
Interactúa con repositorios, issues, pull requests y más de GitHub. Requiere un token de acceso personal de GitHub.
Documentación
Espacio de Trabajo de Desarrollo IGAM de Workiva
Este espacio de trabajo contiene tanto un GitHub MCP Server para la integración con GitHub como scripts de Python para los informes de Workiva Identity, Governance, and Access Management (IGAM).
Proyectos
1. GitHub MCP Server (TypeScript)
Un servidor de Model Context Protocol (MCP) que proporciona capacidades integrales de integración con GitHub. Este servidor permite a los asistentes de IA y otros clientes MCP interactuar con repositorios de GitHub, issues, pull requests y más a través de una interfaz estandarizada.
2. Scripts de Python para Workiva IGAM
Scripts de Python para recuperar, procesar y generar informes sobre los datos de cuentas de usuario de Workiva con fines de cumplimiento y análisis.
GitHub MCP Server
Un servidor de Model Context Protocol (MCP) que proporciona capacidades integrales de integración con GitHub. Este servidor permite a los asistentes de IA y otros clientes MCP interactuar con repositorios de GitHub, issues, pull requests y más a través de una interfaz estandarizada.
Características
Gestión de Repositorios
- list-repositories: Listar repositorios de un usuario u organización
- get-repository: Obtener información detallada sobre un repositorio específico
- search-repositories: Buscar repositorios en GitHub
Gestión de Issues
- list-issues: Listar issues de un repositorio con opciones de filtrado
- create-issue: Crear nuevos issues con etiquetas y asignados
- update-issue: Actualizar issues existentes (título, cuerpo, estado, etiquetas, asignados)
- search-issues: Buscar issues y pull requests en GitHub
Gestión de Pull Requests
- list-pull-requests: Listar pull requests de un repositorio
- create-pull-request: Crear nuevos pull requests con soporte para borradores
Operaciones de Archivos
- get-file-contents: Recuperar el contenido de archivos o listados de directorios de repositorios
Información de Usuarios
- get-user: Obtener información detallada sobre usuarios de GitHub
Requisitos Previos
- Node.js 16 o superior
- TypeScript
- Un token de acceso personal de GitHub
Instalación
- Clona este repositorio:
git clone <repository-url>
cd github-mcp-server
- Instala las dependencias:
npm install
- Compila el proyecto:
npm run build
Configuración
Token de GitHub
Necesitas un token de acceso personal de GitHub para usar este servidor. Crea uno en: https://github.com/settings/tokens
El token necesita los siguientes alcances dependiendo de tu caso de uso:
repo- Control total de repositorios privadospublic_repo- Acceso a repositorios públicosread:user- Leer información del perfil de usuarioread:org- Leer información de la organización
Variables de Entorno
Establece la variable de entorno GITHUB_TOKEN:
Windows:
set GITHUB_TOKEN=your_github_token_here
PowerShell:
$env:GITHUB_TOKEN="your_github_token_here"
macOS/Linux:
export GITHUB_TOKEN=your_github_token_here
Uso
Ejecutar el Servidor
npm run start
O para desarrollo con reconstrucción automática:
npm run dev
Uso con Claude Desktop
- Actualiza tu archivo de configuración de Claude Desktop:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
- Agrega la configuración del servidor:
{
"mcpServers": {
"github": {
"command": "node",
"args": ["C:\\absolute\\path\\to\\github-mcp-server\\build\\index.js"],
"env": {
"GITHUB_TOKEN": "your_github_token_here"
}
}
}
}
- Reinicia Claude Desktop
Uso con VS Code
El proyecto incluye un archivo de configuración .vscode/mcp.json. Actualiza el valor de GITHUB_TOKEN y usa la extensión MCP para VS Code.
Referencia de Herramientas
Herramientas de Repositorios
list-repositories
Lista repositorios de un usuario u organización.
Parámetros:
owner(cadena): Nombre de usuario u organizacióntype(opcional): Filtro de tipo de repositorio ("all", "owner", "member")sort(opcional): Ordenar por ("created", "updated", "pushed", "full_name")per_page(opcional): Número de resultados por página (máx. 100)
get-repository
Obtiene información detallada sobre un repositorio específico.
Parámetros:
owner(cadena): Propietario del repositoriorepo(cadena): Nombre del repositorio
search-repositories
Busca repositorios en GitHub.
Parámetros:
query(cadena): Consulta de búsquedasort(opcional): Campo de ordenación ("stars", "forks", "help-wanted-issues", "updated")order(opcional): Orden de clasificación ("asc", "desc")per_page(opcional): Número de resultados por página (máx. 100)
Herramientas de Issues
list-issues
Lista issues de un repositorio.
Parámetros:
owner(cadena): Propietario del repositoriorepo(cadena): Nombre del repositoriostate(opcional): Estado del issue ("open", "closed", "all")labels(opcional): Lista separada por comas de etiquetasassignee(opcional): Nombre de usuario del asignadoper_page(opcional): Número de resultados por página (máx. 100)
create-issue
Crea un nuevo issue en un repositorio.
Parámetros:
owner(cadena): Propietario del repositoriorepo(cadena): Nombre del repositoriotitle(cadena): Título del issuebody(opcional): Cuerpo/descripción del issuelabels(opcional): Matriz de nombres de etiquetasassignees(opcional): Matriz de nombres de usuario a asignar
update-issue
Actualiza un issue existente.
Parámetros:
owner(cadena): Propietario del repositoriorepo(cadena): Nombre del repositorioissue_number(número): Número del issuetitle(opcional): Nuevo título del issuebody(opcional): Nuevo cuerpo del issuestate(opcional): Nuevo estado del issue ("open", "closed")labels(opcional): Matriz de nombres de etiquetasassignees(opcional): Matriz de nombres de usuario a asignar
Herramientas de Pull Requests
list-pull-requests
Lista pull requests de un repositorio.
Parámetros:
owner(cadena): Propietario del repositoriorepo(cadena): Nombre del repositoriostate(opcional): Estado del pull request ("open", "closed", "all")head(opcional): Filtrar por rama de origenbase(opcional): Filtrar por rama baseper_page(opcional): Número de resultados por página (máx. 100)
create-pull-request
Crea un nuevo pull request.
Parámetros:
owner(cadena): Propietario del repositoriorepo(cadena): Nombre del repositoriotitle(cadena): Título del pull requesthead(cadena): Nombre de la rama de origenbase(cadena): Nombre de la rama basebody(opcional): Cuerpo/descripción del pull requestdraft(opcional): Crear como pull request de borrador
Herramientas de Archivos
get-file-contents
Obtiene el contenido de un archivo de un repositorio.
Parámetros:
owner(cadena): Propietario del repositoriorepo(cadena): Nombre del repositoriopath(cadena): Ruta del archivo en el repositorioref(opcional): Rama, etiqueta o SHA de confirmación
Herramientas de Búsqueda
search-issues
Busca issues y pull requests en GitHub.
Parámetros:
query(cadena): Consulta de búsquedasort(opcional): Campo de ordenaciónorder(opcional): Orden de clasificación ("asc", "desc")per_page(opcional): Número de resultados por página (máx. 100)
Herramientas de Usuarios
get-user
Obtiene información sobre un usuario de GitHub.
Parámetros:
username(cadena): Nombre de usuario de GitHub
Ejemplos de Uso
Aquí hay algunos ejemplos de consultas que puedes usar con el GitHub MCP server:
- Listar repositorios: "Muéstrame los repositorios de la organización microsoft"
- Crear un issue: "Crea un issue en myrepo titulado 'Se necesita corrección de errores' con la etiqueta 'bug'"
- Buscar repositorios: "Encuentra repositorios populares de Python relacionados con aprendizaje automático"
- Obtener contenido de archivos: "Muéstrame el archivo README.md de la rama principal de microsoft/vscode"
- Listar issues: "Muéstrame todos los issues abiertos en microsoft/typescript asignados a alguien"
Manejo de Errores
El servidor implementa un manejo integral de errores:
- Los errores de la API de GitHub se capturan y se devuelven con mensajes descriptivos
- La limitación de velocidad se maneja de manera elegante
- Los errores de autenticación proporcionan una guía clara
- Validación de errores para parámetros obligatorios
Consideraciones de Seguridad
- Nunca expongas tu token de GitHub en registros ni lo confirmes en el control de versiones
- Usa variables de entorno para el almacenamiento de tokens
- El servidor valida todas las entradas antes de realizar llamadas a la API
- Sigue el principio de privilegio mínimo al establecer los alcances del token
Desarrollo
Estructura del Proyecto
src/
index.ts # Main MCP server implementation
.github/
copilot-instructions.md # Development guidelines
.vscode/
mcp.json # VS Code MCP configuration
build/ # Compiled JavaScript output
package.json # Project configuration
tsconfig.json # TypeScript configuration
Contribuciones
- Sigue las pautas de codificación en
.github/copilot-instructions.md - Usa TypeScript para todo el código
- Implementa un manejo de errores adecuado para nuevas herramientas
- Agrega documentación completa para nuevas características
- Prueba con varios repositorios y escenarios de GitHub
Pruebas
Prueba el servidor ejecutándolo y usando varias herramientas:
# Set your GitHub token
export GITHUB_TOKEN=your_token_here
# Start the server
npm run start
# The server will listen on stdio for MCP protocol messages
Licencia
Licencia ISC
Scripts de Python para Workiva IGAM
El directorio python/ contiene scripts de Python para los informes de Workiva Identity, Governance, and Access Management (IGAM).
Características Principales
- Autenticación OAuth 2.0: Acceso seguro a la API mediante el flujo de credenciales de cliente
- Procesamiento de Datos de Usuarios: Recuperar y filtrar información de cuentas de usuario de Workiva
- Generación de Informes CSV: Informes estandarizados para cumplimiento y análisis
- Notificaciones por Correo Electrónico: Entrega automatizada de informes con archivos adjuntos
- Visualización de Datos: Gráficos de distribución de roles y análisis
- Registro Integral: Registros de ejecución detallados para solución de problemas
Inicio Rápido
-
Navega al directorio de Python:
cd python/ -
Instala las dependencias:
pip install requests configparser -
Configura la aplicación:
cp config.ini.template config.ini # Edit config.ini with your Workiva API credentials -
Ejecuta el script principal:
python W_IGAM_Request_new.py
Estructura de Directorios
python/
├── W_IGAM_Request_new.py # Main IGAM reporting script
├── config.example.ini # Configuration example template
├── config.ini.template # Configuration template
├── requirements.txt # Python dependencies
├── requirements-azure.txt # Azure-specific dependencies
├── README.md # Python scripts documentation
├── utils/ # Utility modules
│ ├── visualize_roles.py # Advanced role visualization
│ ├── simple_visualize_roles.py # Simple visualization
│ ├── data_validator.py # Data validation utilities
│ └── azure_config_loader.py # Azure configuration loader
└── tests/ # Test files
└── test_workiva_igam_integration.py # Integration tests
Plantillas de Configuración
El directorio config/ contiene plantillas de configuración:
- Configuraciones de MCP Server: Plantillas para Claude Desktop y otros clientes MCP
- Configuraciones de Python: Archivos de configuración de ejemplo para scripts de IGAM
Requisitos de Configuración
Crea un archivo config.ini con tus credenciales de la API de Workiva:
- Puntos finales de API (token_url, users_url)
- Credenciales de cliente OAuth (client_id, client_secret)
- Configuración de salida (directorio, nombre de archivo)
- Configuración de notificaciones por correo electrónico (opcional)
Nota de Seguridad: Nunca confirmes el archivo config.ini real con credenciales reales en el control de versiones.
Para documentación detallada, consulta python/README.md.