Go-based MCP server that connects GitHub to Claude Desktop, enabling direct repository operations from Claude's interface.
Tools: 82 (with Git) | 48 (without Git) | Architecture: Hybrid (Local Git + GitHub API + Admin Controls)
- 22 Administrative Tools: Repository settings, branch protection, webhooks, collaborators, teams
- 4-Tier Safety System: Risk classification (LOW/MEDIUM/HIGH/CRITICAL) with confirmation tokens
- Git-Free File Operations: Clone, pull, download repos via GitHub API (no Git required)
- Smart Git Detection: Auto-detects Git availability, filters tools accordingly
- Audit Logging: JSON-based operation tracking with automatic rotation
repo - Full control of private repositories (essential)
delete_repo - Para github_delete_repository
workflow - Para re-run de GitHub Actions workflows
security_events - Para dismissar alertas de seguridad
admin:repo_hook - Enhanced webhook management (v3.0)
admin:org - Para team management en organizaciones (v3.0)
- Ve a: GitHub Settings > Personal Access Tokens
- Click "Generate new token (classic)"
- Selecciona los scopes necesarios
- Copia el token generado
# Instalar dependencias
go mod tidy
# Compilar (usando el script incluido)
.\compile.bat
# O compilar manualmente
go build -o github-mcp-server-v3.exe ./cmd/github-mcp-server/# Ejecutar todos los tests
go test ./...
# Ejecutar tests con verbose
go test ./... -v
# Ejecutar tests de un paquete especifico
go test ./pkg/git/ -v
go test ./pkg/safety/ -v{
"mcpServers": {
"github-personal": {
"command": "path\\to\\github-mcp-server-v3.exe",
"args": ["--profile", "personal"],
"env": {
"GITHUB_TOKEN": "ghp_token_personal"
}
},
"github-work": {
"command": "path\\to\\github-mcp-server-v3.exe",
"args": ["--profile", "work"],
"env": {
"GITHUB_TOKEN": "ghp_token_work"
}
}
}
}{
"mcpServers": {
"github-mcp": {
"command": "path\\to\\github-mcp-server-v3.exe",
"args": [],
"env": {
"GITHUB_TOKEN": "tu_token_aqui"
}
}
}
}| Herramienta | Descripcion | Tokens |
|---|---|---|
git_status |
Estado del repositorio Git local | 0 |
git_list_files |
Lista todos los archivos en el repositorio | 0 |
git_get_file_content |
Obtiene contenido de un archivo desde Git | 0 |
git_get_file_sha |
Obtiene el SHA de un archivo especifico | 0 |
git_get_last_commit |
Obtiene el SHA del ultimo commit | 0 |
git_get_changed_files |
Lista archivos modificados | 0 |
git_validate_repo |
Valida si un directorio es un repo Git valido | 0 |
git_context |
Auto-detecta contexto Git | 0 |
| Herramienta | Descripcion | Tokens |
|---|---|---|
git_set_workspace |
Configura directorio de trabajo | 0 |
git_add |
Agrega archivos al staging area | 0 |
git_commit |
Hace commit de los cambios | 0 |
git_push |
Sube cambios al remoto | 0 |
git_pull |
Baja cambios del remoto | 0 |
git_checkout |
Cambia de rama o crea nueva | 0 |
| Herramienta | Descripcion | Tokens |
|---|---|---|
git_log_analysis |
Analisis del historial de commits | 0 |
git_diff_files |
Muestra archivos modificados con estadisticas | 0 |
git_branch_list |
Lista ramas con informacion detallada | 0 |
git_stash |
Operaciones de stash | 0 |
git_remote |
Gestion de repositorios remotos | 0 |
git_tag |
Gestion de tags/etiquetas | 0 |
git_clean |
Limpieza de archivos sin seguimiento | 0 |
| Herramienta | Descripcion | Tokens |
|---|---|---|
git_checkout_remote |
Checkout de rama remota con tracking | 0 |
git_merge |
Merge de ramas con validaciones | 0 |
git_rebase |
Rebase con rama especificada | 0 |
git_pull_with_strategy |
Pull con estrategias | 0 |
git_force_push |
Push con --force-with-lease | 0 |
git_push_upstream |
Push configurando upstream | 0 |
git_sync_with_remote |
Sincronizacion con rama remota | 0 |
| Herramienta | Descripcion | Tokens |
|---|---|---|
git_safe_merge |
Merge seguro con backup | 0 |
git_conflict_status |
Estado de conflictos | 0 |
git_resolve_conflicts |
Resolucion automatica | 0 |
git_validate_clean_state |
Valida working directory limpio | 0 |
git_detect_conflicts |
Detecta conflictos potenciales | 0 |
git_create_backup |
Crea backup del estado actual | 0 |
| Herramienta | Descripcion | Tokens |
|---|---|---|
create_file |
Crea archivo (Git local, fallback API) | 0* |
update_file |
Actualiza archivo (Git local, fallback API) | 0* |
| Herramienta | Descripcion |
|---|---|
github_list_repos |
Lista repositorios del usuario |
github_create_repo |
Crea nuevo repositorio |
github_list_prs |
Lista pull requests |
github_create_pr |
Crea nuevo pull request |
| Herramienta | Descripcion |
|---|---|
github_list_repo_contents |
Listar archivos y directorios via API |
github_download_file |
Descargar archivo individual |
github_download_repo |
Clonar repositorio completo via API |
github_pull_repo |
Actualizar directorio local via API |
| Herramienta | Descripcion |
|---|---|
github_dashboard |
Panel general de actividad |
github_notifications |
Notificaciones pendientes |
github_assigned_issues |
Issues asignados |
github_prs_to_review |
PRs pendientes de review |
github_security_alerts |
Alertas de seguridad |
github_failed_workflows |
Workflows fallidos |
github_mark_notification_read |
Marcar notificacion como leida |
| Herramienta | Descripcion |
|---|---|
github_comment_issue |
Comentar en issue |
github_comment_pr |
Comentar en pull request |
github_review_pr |
Crear review en PR (APPROVE/REQUEST_CHANGES/COMMENT) |
| Herramienta | Descripcion |
|---|---|
github_close_issue |
Cerrar issue |
github_merge_pr |
Mergear pull request |
github_rerun_workflow |
Re-ejecutar workflow |
github_dismiss_dependabot_alert |
Dismissar alerta Dependabot |
github_dismiss_code_alert |
Dismissar alerta Code Scanning |
github_dismiss_secret_alert |
Dismissar alerta Secret Scanning |
| Herramienta | Riesgo | Descripcion |
|---|---|---|
github_get_repo_settings |
LOW | Ver configuracion del repositorio |
github_update_repo_settings |
MEDIUM | Modificar nombre, descripcion, visibilidad |
github_archive_repository |
CRITICAL | Archivar repositorio (read-only) |
github_delete_repository |
CRITICAL | Eliminar repositorio PERMANENTEMENTE |
| Herramienta | Riesgo | Descripcion |
|---|---|---|
github_get_branch_protection |
LOW | Ver reglas de proteccion |
github_update_branch_protection |
HIGH | Configurar reglas de proteccion |
github_delete_branch_protection |
CRITICAL | Eliminar proteccion de branch |
| Herramienta | Riesgo | Descripcion |
|---|---|---|
github_list_webhooks |
LOW | Listar webhooks del repo |
github_create_webhook |
MEDIUM | Crear webhook |
github_update_webhook |
MEDIUM | Modificar webhook |
github_delete_webhook |
HIGH | Eliminar webhook |
github_test_webhook |
LOW | Enviar test delivery |
| Herramienta | Riesgo | Descripcion |
|---|---|---|
github_list_collaborators |
LOW | Listar colaboradores |
github_check_collaborator |
LOW | Verificar acceso |
github_add_collaborator |
MEDIUM | Invitar con permisos |
github_update_collaborator_permission |
MEDIUM | Cambiar nivel de acceso |
github_remove_collaborator |
HIGH | Revocar acceso |
github_list_invitations |
LOW | Ver invitaciones pendientes |
github_accept_invitation |
MEDIUM | Aceptar invitacion |
github_cancel_invitation |
MEDIUM | Cancelar invitacion |
| Herramienta | Riesgo | Descripcion |
|---|---|---|
github_list_repo_teams |
LOW | Listar teams con acceso |
github_add_repo_team |
MEDIUM | Otorgar acceso de team |
| Nivel | Descripcion | Comportamiento (modo moderate) |
|---|---|---|
| LOW | Solo lectura | Ejecucion directa |
| MEDIUM | Cambios reversibles | Dry-run opcional |
| HIGH | Impacta colaboracion | Requiere token de confirmacion |
| CRITICAL | Irreversible | Token + recomendacion de backup |
| Modo | Confirma desde | Uso recomendado |
|---|---|---|
strict |
MEDIUM+ | Entornos de produccion criticos |
moderate |
HIGH+ | Uso general (default) |
permissive |
CRITICAL | Desarrollo local |
disabled |
Nunca | No recomendado |
Crear safety.json junto al ejecutable (opcional):
{
"mode": "moderate",
"enable_audit_log": true,
"require_confirmation_above": 3,
"audit_log_path": "./mcp-admin-audit.log",
"audit_log_max_size_mb": 10,
"audit_log_max_backups": 5
}Si no existe safety.json, usa modo moderate con audit logging habilitado.
Ver safety.json.example para configuracion completa de referencia.
En sistemas sin Git instalado (ej: Mac sin Xcode Command Line Tools), el servidor:
- Detecta automaticamente la ausencia de Git
- Filtra las herramientas git_ del listado
- Mantiene operativas todas las herramientas API, admin, dashboard, file operations
- Retorna error amigable si se intenta usar una herramienta Git
Las 4 herramientas de File Operations (github_list_repo_contents, github_download_file, github_download_repo, github_pull_repo) permiten clonar y actualizar repositorios usando solo la API de GitHub, sin necesidad de Git.
- Prevencion de inyeccion de argumentos en comandos Git
- Defensa contra Path Traversal
- Validacion estricta de entradas de usuario
- Prevencion de SSRF en URLs de webhooks (v3.0)
- Tokens de confirmacion criptograficos para operaciones destructivas (v3.0)
- Audit logging de operaciones administrativas (v3.0)
- Go: 1.25.0 o superior
- Git: Opcional (auto-detectado, 48 tools funcionan sin Git)
- github.com/google/go-github: v81.0.0
- golang.org/x/oauth2: v0.34.0
- GitHub Token: Con permiso
repominimo
- 82 herramientas MCP operativas (48 sin Git)
- Sistema hibrido Git local + GitHub API
- 22 herramientas administrativas con safety layer
- 4 herramientas de archivo sin Git
- Soporte multi-perfil
- Testing completo con repositorio real
- Listo para produccion (v3.0)
Changelog: Ver CHANGELOG.md para historial completo de cambios