shakatoti1618-agent
Provides tools for interacting with the GitHub API, enabling AI agents to create repositories, manage issues and pull requests, create commits, and list repositories, issues, and commits.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@shakatoti1618-agentcreate a private repo called my-notes"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
shakatoti1618-agent — GitHub AI Agent (MCP Server)
Servidor Model Context Protocol (MCP) que permite a un agente de IA (LLM: Gemini, Claude, etc.) ejecutar operaciones reales en GitHub usando lenguaje natural, integrado con Antigravity como host.
Proyecto Integrador 5 — Especialización Backend · Henry
Stack: Node.js 18+ · TypeScript · MCP SDK · Octokit · Zod · Vitest
Comunicación: stdio (JSON-RPC)
Tabla de contenidos
Related MCP server: GitHub MCP Agent Server
Arquitectura
┌────────────────────────────────────────────────────────────────┐
│ ANTIGRAVITY (Host) │
│ Gestiona la sesión y conecta los componentes │
└──────────────────────────────┬─────────────────────────────────┘
▼
┌────────────────────────────────────────────────────────────────┐
│ LLM — Gemini / Claude (Client) │
│ Lee la descripción de los tools y decide cuál usar │
└──────────────────────────────┬─────────────────────────────────┘
▼ JSON-RPC sobre stdio
┌────────────────────────────────────────────────────────────────┐
│ MCP SERVER — shakatoti1618-agent (tu código) │
│ tools/list · tools/call · validación Zod · errores │
└──────────────────────────────┬─────────────────────────────────┘
▼ HTTPS (autenticado)
┌────────────────────────────────────────────────────────────────┐
│ GITHUB API (vía Octokit) │
│ repos · issues · commits · pull requests │
└────────────────────────────────────────────────────────────────┘¿Quién decide qué tool usar? No el usuario directamente: el LLM lee las descripciones de los tools (que expone tools/list) y elige cuál invocar y con qué parámetros. Por eso cada descripción está escrita para que el agente distinga cuándo usarla.
Tools disponibles
Tool | Descripción | Parámetros |
| Crea un repositorio |
|
| Abre un issue |
|
| Lista repos del usuario |
|
| Crea/actualiza un archivo (commit) |
|
| Lista issues de un repo |
|
| Cierra un issue |
|
| Crea un PR entre ramas |
|
| Lista commits recientes |
|
* = requerido. Los schemas de Zod validan cada parámetro antes de llamar a la API (nombres de repos 3–100 chars alfanuméricos con guiones, issueNumber entero positivo, estado open|closed|all, etc.) y sus mensajes de error son comprensibles para el usuario final.
Requisitos
Node.js 18+
npm
Una cuenta de GitHub
Antigravity (para usarlo con el agente) o MCP Inspector (para debug)
Obtener el GitHub Token
Ve a GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic).
Generate new token (classic).
Da un nombre (ej.
mcp-agent), expiración, y marca los scopes:Scope
Para qué sirve
repoRepositorios, issues, commits, PRs
userInformación del usuario autenticado
admin:orgOperaciones sobre organizaciones
Copia el token (empieza con
ghp_…). Solo se muestra una vez.
⚠️ Seguridad: el token NUNCA se sube al repositorio. Está en
.env(ignorado por.gitignore). Si se expone por error, revócalo de inmediato en GitHub.
Instalación
# 1. Instalar dependencias
npm install
# 2. Crear el archivo .env a partir del ejemplo
cp .env.example .env # (en Windows: copy .env.example .env)
# 3. Editar .env y pegar tu token
# GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxx
# 4. Compilar y verificar
npm run typecheck
npm test
npm run buildConfiguración en Antigravity
Crea el archivo .mcp.json en la raíz del proyecto (este archivo está en .gitignore porque contiene credenciales):
{
"mcpServers": {
"shakatoti1618-agent": {
"command": "node",
"args": ["dist/index.js"],
"env": {
"GITHUB_TOKEN": "ghp_xxxxxxxxxxxxxxxx"
}
}
}
}Requiere
npm run buildantes, o usa"command": "npx", "args": ["tsx", "src/index.ts"]para desarrollo. Eldist/se genera connpm run build.
Verificar que funciona (MCP Inspector)
npx @modelcontextprotocol/inspector node dist/index.jsCon el inspector puedes listar los tools (tools/list) y probar cada uno (tools/call) sin tocar el agente.
Ejemplos de prompts
Objetivo | Prompt que funciona |
Crear repo | "Crea un repositorio llamado |
Crear issue | "Abre un issue en |
Listar repos | "¿Qué repositorios tengo?" |
Commit | "Agrega el archivo |
Listar issues | "Muéstrame los issues abiertos de |
Cerrar issue | "Cierra el issue número 3 de |
Crear PR | "Crea un pull request de |
Ver commits | "¿Cuáles son los últimos commits de |
Nota: un prompt vago ("haz cosas con mi repo") confunde al LLM. Cuanto más específico sea (nombre exacto del repo, rama, mensaje), mejor resultado.
Estructura del proyecto
shakatoti1618-agent/
├── src/
│ ├── index.ts # Entry point: env, cliente, server, stdio
│ ├── server.ts # Instancia MCP + registro de handlers
│ ├── types.ts # Tipos de dominio compartidos
│ ├── schemas/schemas.ts # Schemas Zod (validación + descripciones)
│ ├── github/
│ │ ├── client.ts # Configuración del cliente Octokit
│ │ └── operations.ts # Operaciones de negocio sobre GitHub
│ ├── tools/
│ │ ├── definitions.ts # Tools que ve el LLM (name/description/schema)
│ │ └── handlers.ts # Dispatcher: valida, ejecuta, formatea
│ ├── errors/errors.ts # Custom errors + transformación + retry/backoff
│ └── utils/
│ ├── logger.ts # Logging estructurado (stderr, nunca stdout)
│ └── validators.ts # Reglas de GitHub compartidas
├── tests/ # Unit tests (Vitest + mocks)
├── .env.example # Plantilla sin valores reales
├── .gitignore
├── tsconfig.json
└── package.json¿Por qué separar client.ts de operations.ts? No es solo organización: permite mockear el cliente de Octokit en los tests sin tocar la lógica de negocio. operations.ts recibe el cliente por constructor, así que en los tests se inyecta un objeto fake con vi.fn().
¿Por qué el logging usa console.error y nunca console.log? El server MCP se comunica por stdio: el host lee JSON-RPC de stdout. Cualquier console.log rompe el protocolo. Por eso todos los logs van a stderr.
Errores y troubleshooting
El server distingue 5 categorías de error y devuelve mensajes en lenguaje natural, nunca stack traces:
Categoría | Origen | Ejemplo de mensaje al usuario |
| Input inválido (Zod) | "El nombre del repositorio debe tener al menos 3 caracteres." |
| Token inválido / sin scope (401/403) | "Tu token no tiene permisos para esta operación." |
| GitHub respondió mal (404, 422, 500) | "El repositorio [x] no fue encontrado. Verifica el nombre e intenta de nuevo." |
| Límite de requests (429/403) | "Se alcanzó el límite de solicitudes a la API de GitHub. Espera e intenta de nuevo." |
| Sin conexión / timeout | "No se pudo conectar con GitHub. Verifica tu conexión." |
Rate limiting: los errores transitorios se reintentan con exponential backoff (3 intentos, espera creciente con jitter). No se reintenta nunca de forma inmediata, para no empeorar el problema, ni se reintentan errores definitivos (validación/autenticación).
Problemas frecuentes
Síntoma | Causa | Solución |
El server no arranca: "No se encontró GITHUB_TOKEN" |
| Copiar |
| Token sin el scope | Regenerar el token marcando |
| Token inválido/revocado | Generar un token nuevo |
El agente no responde o responde mal | El server quedó colgado o |
|
No se ve ningún tool |
|
|
El protocolo se rompe (errores raros de parsing) | Algo escribió en stdout (un | Buscar y reemplazar por el |
| Demasiadas llamadas en poco tiempo | Esperar o bajar la frecuencia; el server reintenta solo con backoff |
Testing
npm run test # corre todos los tests (Vitest)
npm run test:watch # modo watch40 tests distribuidos en 4 archivos:
tests/schemas.test.ts— validación de inputs (válidos pasan, inválidos fallan con mensajes claros).tests/operations.test.ts— lógica de GitHub con Octokit mockeado (sin llamadas reales).tests/errors.test.ts— transformación 401/403/404/429 → mensajes y retry con backoff.tests/handlers.test.ts— dispatcher de tools (tool desconocido, inputs inválidos, errores).
Los tests son deterministas: no dependen de la API real ni del estado externo.
Extras implementados
+3 tools avanzados (extra credit):
close_issue,create_pull_request,list_commits.Logging estructurado con niveles (
LOG_LEVEL=debug|info|warn|error) vía stderr.Schemas derivados: el JSON Schema que ve el LLM se genera desde los schemas de Zod (
zod-to-json-schema), una sola fuente de verdad.Retry con exponential backoff y jitter para rate limit/errores de red.
Cierre limpio del server ante SIGINT/SIGTERM.
Desarrollado como Proyecto Integrador 5 · Henry · Especialización Backend.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseCqualityAmaintenanceA MCP server that bridges LLMs with GitHub repository management, enabling automated analysis of pull requests, issue management, tag creation, and release management through natural language.246Apache 2.0
- AlicenseBqualityAmaintenanceMCP server that exposes GitHub operations as tools for AI agents, enabling code search, issue management, and PR review.12MIT
- Alicense-qualityDmaintenanceAn MCP server that enables AI agents to directly manage GitHub repositories, including PRs, issues, and code search, using natural language.MIT
- Alicense-qualityDmaintenanceAn MCP server that provides tools for interacting with the GitHub API, enabling AI assistants to query repositories, pull requests, issues, commits, users, and more.570ISC
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/shakatoti1618-wq/shakatoti1618-agent-pi5-henry-jonathan-heredia-'
If you have feedback or need assistance with the MCP directory API, please join our Discord server