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

  1. Clona este repositorio:
git clone <repository-url>
cd github-mcp-server
  1. Instala las dependencias:
npm install
  1. 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 privados
  • public_repo - Acceso a repositorios públicos
  • read:user - Leer información del perfil de usuario
  • read: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

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

  1. 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"
      }
    }
  }
}
  1. 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ón
  • type (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 repositorio
  • repo (cadena): Nombre del repositorio

search-repositories

Busca repositorios en GitHub.

Parámetros:

  • query (cadena): Consulta de búsqueda
  • sort (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 repositorio
  • repo (cadena): Nombre del repositorio
  • state (opcional): Estado del issue ("open", "closed", "all")
  • labels (opcional): Lista separada por comas de etiquetas
  • assignee (opcional): Nombre de usuario del asignado
  • per_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 repositorio
  • repo (cadena): Nombre del repositorio
  • title (cadena): Título del issue
  • body (opcional): Cuerpo/descripción del issue
  • labels (opcional): Matriz de nombres de etiquetas
  • assignees (opcional): Matriz de nombres de usuario a asignar

update-issue

Actualiza un issue existente.

Parámetros:

  • owner (cadena): Propietario del repositorio
  • repo (cadena): Nombre del repositorio
  • issue_number (número): Número del issue
  • title (opcional): Nuevo título del issue
  • body (opcional): Nuevo cuerpo del issue
  • state (opcional): Nuevo estado del issue ("open", "closed")
  • labels (opcional): Matriz de nombres de etiquetas
  • assignees (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 repositorio
  • repo (cadena): Nombre del repositorio
  • state (opcional): Estado del pull request ("open", "closed", "all")
  • head (opcional): Filtrar por rama de origen
  • base (opcional): Filtrar por rama base
  • per_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 repositorio
  • repo (cadena): Nombre del repositorio
  • title (cadena): Título del pull request
  • head (cadena): Nombre de la rama de origen
  • base (cadena): Nombre de la rama base
  • body (opcional): Cuerpo/descripción del pull request
  • draft (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 repositorio
  • repo (cadena): Nombre del repositorio
  • path (cadena): Ruta del archivo en el repositorio
  • ref (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úsqueda
  • sort (opcional): Campo de ordenación
  • order (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:

  1. Listar repositorios: "Muéstrame los repositorios de la organización microsoft"
  2. Crear un issue: "Crea un issue en myrepo titulado 'Se necesita corrección de errores' con la etiqueta 'bug'"
  3. Buscar repositorios: "Encuentra repositorios populares de Python relacionados con aprendizaje automático"
  4. Obtener contenido de archivos: "Muéstrame el archivo README.md de la rama principal de microsoft/vscode"
  5. 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

  1. Sigue las pautas de codificación en .github/copilot-instructions.md
  2. Usa TypeScript para todo el código
  3. Implementa un manejo de errores adecuado para nuevas herramientas
  4. Agrega documentación completa para nuevas características
  5. 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

  1. Navega al directorio de Python:

    cd python/
    
  2. Instala las dependencias:

    pip install requests configparser
    
  3. Configura la aplicación:

    cp config.ini.template config.ini
    # Edit config.ini with your Workiva API credentials
    
  4. 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.

Soporte