{"id":30871985,"url":"https://github.com/scopweb/mcp-go-github","last_synced_at":"2026-01-18T11:24:21.779Z","repository":{"id":296678135,"uuid":"994106660","full_name":"scopweb/mcp-go-github","owner":"scopweb","description":"Go-based MCP server that connects GitHub to Claude Desktop, enabling direct repository operations from Claude's interface.","archived":false,"fork":false,"pushed_at":"2025-09-02T08:32:31.000Z","size":50,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-02T10:23:46.677Z","etag":null,"topics":["claude-desktop","github-mcp-server","go"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/scopweb.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-01T08:08:53.000Z","updated_at":"2025-09-02T08:32:35.000Z","dependencies_parsed_at":"2025-06-01T17:37:40.658Z","dependency_job_id":"d9ce1edd-f11a-4629-a8a3-a7c1d3c728a7","html_url":"https://github.com/scopweb/mcp-go-github","commit_stats":null,"previous_names":["scopweb/github-go-server-mcp","scopweb/mcp-go-github"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/scopweb/mcp-go-github","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scopweb%2Fmcp-go-github","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scopweb%2Fmcp-go-github/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scopweb%2Fmcp-go-github/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scopweb%2Fmcp-go-github/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scopweb","download_url":"https://codeload.github.com/scopweb/mcp-go-github/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scopweb%2Fmcp-go-github/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274106600,"owners_count":25223437,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-desktop","github-mcp-server","go"],"created_at":"2025-09-07T22:05:36.934Z","updated_at":"2026-01-18T11:24:21.765Z","avatar_url":"https://github.com/scopweb.png","language":"Go","funding_links":[],"categories":["DevOps"],"sub_categories":[],"readme":"# GitHub MCP Server 🚀\n\nGo-based MCP server that connects GitHub to Claude Desktop, enabling direct repository operations from Claude's interface.\n\n**🎯 Latest Update:** Updated to `go-github v76.0.0` for enhanced stability and compatibility.\n\n## ✨ Nuevas Características\n\n### 🎯 **Soporte de Perfiles Múltiples**\n- **Un solo ejecutable** para múltiples cuentas GitHub\n- **Configuración diferenciada** por perfil\n- **Logs informativos** con identificación de perfil\n- **Gestión simplificada** de tokens\n\n## 📋 Permisos Necesarios del Token\n\nPara que todas las funciones trabajen correctamente, tu **GitHub Personal Access Token** debe tener estos permisos:\n\n### 🔑 Mínimos Requeridos:\n```\n✅ repo (Full control of private repositories)\n  - Necesario para crear repos, issues, PRs\n  - Permite lectura/escritura en repositorios\n```\n\n### 🔧 Opcionales (para funcionalidad completa):\n```\n✅ delete_repo (Delete repositories) - Solo si necesitas borrar repos\n✅ workflow (Update GitHub Action workflows) - Para trabajar con Actions\n✅ admin:repo_hook (Repository hooks) - Para webhooks\n```\n\n### 📝 Generar Token:\n1. Ve a: [GitHub Settings → Personal Access Tokens](https://github.com/settings/tokens)\n2. Click \"Generate new token (classic)\"\n3. Selecciona los scopes necesarios arriba\n4. Copia el token generado\n\n## 🛠️ Instalación\n\n```bash\n# Instalar dependencias\ngo mod tidy\n\n# Compilar (usando el script incluido)\n.\\compile.bat\n\n# O compilar manualmente\ngo build -o github-mcp-modular.exe .\n```\n\n## 🧪 Testing\n\nEl proyecto incluye tests unitarios completos:\n\n```bash\n# Ejecutar todos los tests\ngo test ./...\n\n# Ejecutar tests con verbose\ngo test ./... -v\n\n# Ejecutar tests de un módulo específico\ngo test ./internal/hybrid/ -v\n```\n\n## ⚙️ Configuración Claude Desktop\n\n### 🔥 **Configuración con Perfiles Múltiples** (Recomendado)\n\n```json\n{\n  \"mcpServers\": {\n    \"github-personal\": {\n      \"command\": \"C:\\\\MCPs\\\\clone\\\\github-go-server-mcp\\\\github-mcp-modular.exe\",\n      \"args\": [\"--profile\", \"personal\"],\n      \"env\": {\n        \"GITHUB_TOKEN\": \"ghp_token_personal\"\n      }\n    },\n    \"github-empresa\": {\n      \"command\": \"C:\\\\MCPs\\\\clone\\\\github-go-server-mcp\\\\github-mcp-modular.exe\",\n      \"args\": [\"--profile\", \"empresa\"],\n      \"env\": {\n        \"GITHUB_TOKEN\": \"ghp_token_empresa\"\n      }\n    }\n  }\n}\n```\n\n### 📦 **Configuración Básica** (Un solo token)\n\n```json\n{\n  \"mcpServers\": {\n    \"github-mcp\": {\n      \"command\": \"C:\\\\MCPs\\\\clone\\\\github-go-server-mcp\\\\github-mcp-modular.exe\",\n      \"args\": [],\n      \"env\": {\n        \"GITHUB_TOKEN\": \"tu_token_aqui_con_permisos_repo\"\n      }\n    }\n  }\n}\n```\n\n## 🧪 Herramientas Disponibles (45+ Herramientas)\n\n### 🔍 Herramientas de Información Git\n\n| Herramienta | Descripción | Tokens |\n|-------------|-------------|--------|\n| **git_status** | Estado del repositorio Git local y configuración | 0 |\n| **git_list_files** | Lista todos los archivos en el repositorio | 0 |\n| **git_get_file_content** | Obtiene contenido de un archivo desde Git | 0 |\n| **git_get_file_sha** | Obtiene el SHA de un archivo específico | 0 |\n| **git_get_last_commit** | Obtiene el SHA del último commit | 0 |\n| **git_get_changed_files** | Lista archivos modificados (working/staging) | 0 |\n| **git_validate_repo** | Valida si un directorio es un repositorio Git válido | 0 |\n| **git_context** | Auto-detecta contexto Git para optimizar tokens | 0 |\n\n### ⚙️ Operaciones Git Básicas\n\n| Herramienta | Descripción | Tokens |\n|-------------|-------------|--------|\n| **git_set_workspace** | Configura el directorio de trabajo para Git | 0 |\n| **git_add** | Agrega archivos al staging area | 0 |\n| **git_commit** | Hace commit de los cambios en staging | 0 |\n| **git_push** | Sube cambios al repositorio remoto | 0 |\n| **git_pull** | Baja cambios del repositorio remoto | 0 |\n| **git_checkout** | Cambia de rama o crea nueva rama | 0 |\n\n### 📊 Análisis y Gestión Git\n\n| Herramienta | Descripción | Tokens |\n|-------------|-------------|--------|\n| **git_log_analysis** | Análisis completo del historial de commits | 0 |\n| **git_diff_files** | Muestra archivos modificados con estadísticas | 0 |\n| **git_branch_list** | Lista todas las ramas con información detallada | 0 |\n| **git_stash** | Operaciones de stash (list, push, pop, apply, drop, clear) | 0 |\n| **git_remote** | Gestión de repositorios remotos (list, add, remove, show, fetch) | 0 |\n| **git_tag** | Gestión de tags/etiquetas (list, create, delete, push, show) | 0 |\n| **git_clean** | Limpieza de archivos sin seguimiento | 0 |\n\n### 🚀 Operaciones Git Avanzadas\n\n| Herramienta | Descripción | Tokens |\n|-------------|-------------|--------|\n| **git_checkout_remote** | Checkout de rama remota con tracking local | 0 |\n| **git_merge** | Merge de ramas con validaciones de seguridad | 0 |\n| **git_rebase** | Rebase con rama especificada | 0 |\n| **git_pull_with_strategy** | Pull con estrategias (merge, rebase, ff-only) | 0 |\n| **git_force_push** | Push con --force-with-lease (con backup automático) | 0 |\n| **git_push_upstream** | Push configurando upstream tracking | 0 |\n| **git_sync_with_remote** | Sincronización automática con rama remota | 0 |\n\n### 🛡️ Gestión de Conflictos\n\n| Herramienta | Descripción | Tokens |\n|-------------|-------------|--------|\n| **git_safe_merge** | Merge seguro con backup y detección de conflictos | 0 |\n| **git_conflict_status** | Estado detallado de conflictos en merge/rebase | 0 |\n| **git_resolve_conflicts** | Resolución automática con estrategias (theirs, ours, abort) | 0 |\n| **git_validate_clean_state** | Valida que el working directory esté limpio | 0 |\n| **git_detect_conflicts** | Detecta conflictos potenciales entre ramas | 0 |\n| **git_create_backup** | Crea backup/tag del estado actual | 0 |\n\n### 🔀 Operaciones Híbridas (Git Local → GitHub API)\n\n| Herramienta | Descripción | Tokens |\n|-------------|-------------|--------|\n| **create_file** | Crea archivo PRIORIZANDO Git local sobre GitHub API | 0* |\n| **update_file** | Actualiza archivo PRIORIZANDO Git local sobre GitHub API | 0* |\n\n*Usa 0 tokens si Git local está disponible, fallback a GitHub API si es necesario\n\n### 🌐 GitHub API (Operaciones en la Nube)\n\n| Herramienta | Descripción | Tokens |\n|-------------|-------------|--------|\n| **github_list_repos** | Lista repositorios del usuario | ✓ |\n| **github_create_repo** | Crea nuevo repositorio | ✓ |\n| **github_list_prs** | Lista pull requests | ✓ |\n| **github_create_pr** | Crea nuevo pull request | ✓ |\n\n## 🚀 Uso\n\n1. **Compilar el servidor**: `.\\compile.bat`\n2. **Generar token(s) GitHub** con permisos `repo`\n3. **Configurar Claude Desktop** con perfiles\n4. **Reiniciar Claude Desktop**\n5. **Verificar logs** para confirmar inicio correcto\n\n## 💡 Ventajas del Sistema de Perfiles\n\n- ✅ **Un solo ejecutable** para mantener\n- ✅ **Múltiples cuentas GitHub** simultáneas\n- ✅ **Logs diferenciados** por perfil\n- ✅ **Actualizaciones automáticas** para todas las instancias\n- ✅ **Configuración más limpia**\n\n## ⚠️ Solución de Problemas\n\n### Error 403 \"Resource not accessible by personal access token\"\n- ❌ Tu token no tiene permisos suficientes\n- ✅ Genera nuevo token con scope `repo`\n- ✅ Reinicia Claude Desktop después del cambio\n\n### Error \"null\" en respuestas\n- ⚠️ Normal para repos vacíos o sin PRs/issues\n- ✅ El MCP funciona correctamente\n\n### Logs del servidor\nVerifica los logs de Claude Desktop para ver mensajes como:\n```\n🚀 Starting GitHub MCP Server with profile: personal\n📋 Profile: personal | Token: ghp_111***\n🔧 Git environment detected for profile: personal\n```\n\n## 🔒 Mejoras de Seguridad (Implementadas por GitHub Copilot)\n\nGitHub Copilot, ha realizado una revisión y fortalecimiento de la seguridad de este MCP. Se han implementado las siguientes mejoras clave para garantizar que el servidor sea más robusto y seguro contra posibles ataques:\n\n-   **Prevención de Inyección de Argumentos**: Se ha neutralizado el riesgo de que un atacante pueda inyectar comandos no deseados (como `--force`) a través de los argumentos de las herramientas `git`.\n-   **Defensa contra \"Path Traversal\"**: Se ha añadido una capa de validación que impide el acceso a archivos o directorios fuera del repositorio de trabajo, protegiendo la integridad del sistema.\n-   **Validación Estricta de Entradas**: El servidor ahora verifica rigurosamente los datos de entrada, rechazando cualquier solicitud con argumentos mal formados o ausentes antes de que pueda causar un comportamiento inesperado.\n\nCon estos cambios, el MCP es ahora mucho más seguro. ¡Un saludo, amigo!\n\n## 📊 Estado del Proyecto\n\n- ✅ **Funciones de lectura**: Completamente operativas\n- ✅ **Funciones de escritura**: Completamente operativas  \n- ✅ **Sistema híbrido Git**: Git local + GitHub API\n- ✅ **Soporte multi-perfil**: Implementado y testeado\n- ✅ **Gestión de permisos**: Documentada y verificada\n- ✅ **Testing completo**: Todas las funciones probadas con tests unitarios\n- ✅ **Dependencias actualizadas**: go-github v76.0.0, oauth2 v0.32.0\n- ✅ **45+ Herramientas Git**: Operaciones locales (0 tokens) y avanzadas\n- ✅ **Gestión de conflictos**: Merge seguro, detección y resolución automática\n- ✅ **Listo para producción**: Stable release v2.0\n\n📋 **Changelog**: Ver [CHANGELOG.md](CHANGELOG.md) para historial completo de cambios\n\n## 🔧 Requisitos del Sistema\n\n- **Go**: 1.24.0 o superior (actualizado)\n- **Git**: Para operaciones locales (opcional pero recomendado)\n- **Windows**: PowerShell para scripts de compilación\n- **GitHub Token**: Con permisos `repo` mínimos\n\n\n ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscopweb%2Fmcp-go-github","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscopweb%2Fmcp-go-github","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscopweb%2Fmcp-go-github/lists"}