Servidor MCP (Model Context Protocol) para operaciones de GitHub con autenticación integrada.
Este servidor MCP proporciona una interfaz completa para interactuar con GitHub a través de métodos estandarizados. Permite gestionar repositorios, archivos, issues, pull requests y workflows de GitHub, así como métodos utilitarios adicionales.
- ✅ Gestión de Repositorios: Listar repositorios del usuario autenticado
- ✅ Gestión de Archivos: Obtener, crear y actualizar archivos en repositorios
- ✅ Issues: Crear y listar issues de repositorios
- ✅ Pull Requests: Crear, listar y hacer merge de pull requests
- ✅ Workflows: Disparar workflows de GitHub Actions
- ✅ Utilidades: Codificación base64, timestamps e información del servidor
- ✅ Autenticación Segura: Basada en tokens de GitHub y variables de entorno
-
Clonar o descargar el proyecto:
git clone <repository-url> cd github-mcp
-
Instalar dependencias:
npm install
-
Configurar variables de entorno:
cp .env.example .env
Edita el archivo
.envcon tus credenciales reales.
Crea un archivo .env en la raíz del proyecto:
# Autenticación MCP (requerido)
AUTH_ID=tu_auth_id_aqui
AUTH_TOKEN=tu_auth_token_aqui
# Token de GitHub (requerido)
GITHUB_TOKEN=ghp_tu_token_de_github_aqui- Ve a GitHub → Settings → Developer settings → Personal access tokens
- Click "Generate new token (classic)"
- Selecciona los permisos necesarios:
repo(acceso completo a repositorios)workflow(para disparar workflows)admin:org(opcional, para organizaciones)
node server.jsEl servidor estará disponible y listo para recibir peticiones MCP.
Listar Repositorios
server.method("github.listRepos", {
visibility: "all" // "all", "public", "private"
})Obtener Archivo
server.method("github.getFile", {
owner: "usuario",
repo: "repositorio",
path: "ruta/al/archivo.js",
ref: "main" // opcional
})Crear Archivo
server.method("github.createFile", {
owner: "usuario",
repo: "repositorio",
path: "nuevo/archivo.js",
content: "console.log('Hola mundo');",
message: "Agregar nuevo archivo",
branch: "main" // opcional
})Actualizar Archivo
server.method("github.updateFile", {
owner: "usuario",
repo: "repositorio",
path: "archivo/existente.js",
content: "contenido actualizado",
message: "Actualizar archivo",
branch: "main" // opcional
})Crear Issue
server.method("github.createIssue", {
owner: "usuario",
repo: "repositorio",
title: "Bug en la aplicación",
body: "Descripción detallada del problema",
labels: ["bug", "priority-high"] // opcional
})Listar Issues
server.method("github.listIssues", {
owner: "usuario",
repo: "repositorio",
state: "open" // "open", "closed", "all"
})Crear Pull Request
server.method("github.createPullRequest", {
owner: "usuario",
repo: "repositorio",
title: "Nueva funcionalidad",
head: "rama-feature",
base: "main",
body: "Descripción de los cambios",
draft: false // opcional
})Merge Pull Request
server.method("github.mergePullRequest", {
owner: "usuario",
repo: "repositorio",
pull_number: 123,
merge_method: "squash" // "merge", "squash", "rebase"
})Disparar Workflow
server.method("github.dispatchWorkflow", {
owner: "usuario",
repo: "repositorio",
workflow_id: "ci.yml", // archivo del workflow
ref: "main",
inputs: {
environment: "production"
}
})Codificar Base64
server.method("utils.base64Encode", {
text: "Hola mundo"
})Decodificar Base64
server.method("utils.base64Decode", {
encoded: "SGFsYSBtdW5kbw=="
})Timestamp Actual
server.method("utils.timestamp", {})Información del Servidor
server.method("utils.serverInfo", {})[
{
"name": "mi-repo",
"full_name": "usuario/mi-repo",
"private": false,
"default_branch": "main",
"html_url": "https://github.com/usuario/mi-repo",
"description": "Mi repositorio",
"language": "JavaScript",
"stargazers_count": 5
}
]{
"commitSha": "abc123...",
"contentSha": "def456...",
"html_url": "https://github.com/usuario/repo/blob/main/archivo.js"
}Error: Faltan credenciales de MCP - AUTH_ID y AUTH_TOKEN son requeridos en .env
Solución: Verifica que el archivo .env contenga todas las variables requeridas.
Error: Error listando repositorios: Bad credentials
Solución: Verifica que el GITHUB_TOKEN sea válido y tenga los permisos necesarios.
Error: Error obteniendo archivo: Not Found
Solución: Verifica que la ruta del archivo sea correcta y que tengas acceso al repositorio.
mcp: Framework MCP (Model Context Protocol)dotenv: Gestión de variables de entorno@octokit/rest: Cliente oficial de GitHub para Node.js
Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.
Si tienes problemas o preguntas:
- Revisa la documentación API
- Busca en los issues existentes
- Crea un nuevo issue con detalles del problema
Versión: 1.0.0
Autor: MCP Server Generator
Licencia: MIT