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.
Available Tools
8 toolsclose_issueA
Cierra un issue abierto en un repositorio de GitHub. Usa este tool cuando el usuario pida cerrar, resolver o finalizar un issue específico. Requiere el número del issue.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Nombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto. | |
| owner | Yes | Usuario o organización de GitHub dueña del repositorio. Ejemplo: shakatoti1618. | |
| issueNumber | Yes | Número del issue a cerrar. Ejemplo: 12. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the full burden of behavioral disclosure. It mentions requiring the issue number but does not address authentication, side effects beyond closing, or the response format. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each serving a distinct purpose: stating the action, giving usage guidance, and highlighting a requirement. No redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-action tool, the description covers purpose, usage, and the critical input. The schema fully documents parameters. Minor gaps exist regarding output or error behavior, but they are not critical given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description. The tool description adds that the issue number is required, but this is already evident from the schema's required list. No additional semantic meaning is provided beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Cierra un issue abierto en un repositorio de GitHub') and distinguishes it from sibling tools like create_issue or list_issues. The verb and resource are both explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit usage guidance: 'Usa este tool cuando el usuario pida cerrar, resolver o finalizar un issue específico.' This clearly indicates when to use the tool, though it does not mention exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_commitA
Crea o actualiza un archivo dentro de un repositorio de GitHub, lo que genera un commit con el mensaje indicado. Usa este tool cuando el usuario quiera 'commitear', 'guardar cambios', 'agregar un archivo' o 'modificar un archivo' en un repo. Recibe la ruta del archivo, el contenido en texto plano y el mensaje del commit.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Ruta del archivo dentro del repositorio. Ejemplo: docs/README.md. | |
| repo | Yes | Nombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto. | |
| owner | Yes | Usuario o organización de GitHub dueña del repositorio. Ejemplo: shakatoti1618. | |
| branch | No | Rama sobre la que se realiza el commit. Por defecto 'main'. | main |
| content | Yes | Contenido del archivo en texto plano (no codificado). | |
| message | Yes | Mensaje del commit. Ejemplo: 'Agrega sección de instalación'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals that the tool creates or updates a file and creates a commit, which is useful, but it does not disclose side effects like overwriting existing content, the default branch behavior, or any authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three well-organized sentences: first stating the purpose, then listing usage triggers, and finally summarizing the key inputs. It is front-loaded and contains no redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description effectively conveys the core function and provides explicit usage guidance, which is sufficient for an agent to select this tool. However, it omits some behavioral nuances like branch handling and return values (no output schema exists), so it is not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full descriptions for all 6 parameters, achieving 100% coverage. The description only summarizes a subset (path, content, message) and adds no extra semantic details beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool creates or updates a file in a GitHub repository and generates a commit with a given message. The verb+resource (create/update file -> commit) is explicit, and the tool is distinct from siblings like create_repository or create_issue, which target different actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists trigger phrases for when to use the tool ('commitear', 'guardar cambios', 'agregar un archivo', 'modificar un archivo'), providing clear context. However, it does not mention when not to use it nor explicitly name alternative tools for exclusions, so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_issueA
Abre un issue en un repositorio específico de GitHub. Usa este tool cuando el usuario quiera reportar un problema, sugerir una tarea o abrir un issue. Requiere el owner (usuario u organización), el nombre del repo y un título. Devuelve el número y la URL del issue creado.
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Cuerpo del issue en Markdown. Describe el problema o la tarea (opcional). | |
| repo | Yes | Nombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto. | |
| owner | Yes | Usuario o organización de GitHub dueña del repositorio. Ejemplo: shakatoti1618. | |
| title | Yes | Título corto y descriptivo del issue. Ejemplo: 'Fix: error al iniciar sesión'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It does state that the tool returns the issue number and URL, which is useful. However, it does not mention authentication requirements, potential errors (e.g., invalid repo), or rate limits. This is adequate but lacks some context for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: three sentences covering purpose, when to use, required inputs, and return value. Every sentence earns its place with no redundant information or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description correctly explains the return value (number and URL). It also covers the core behavior, required parameters, and typical use cases. It does not mention error scenarios or edge cases, but for a simple create-issue tool, the description is sufficiently complete for an agent to understand its purpose and outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with detailed descriptions, patterns, and examples for all four parameters. The description adds little beyond stating that owner, repo, and title are required and body is optional, which is already implied by the schema. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as creating an issue in a specific GitHub repository using the specific verbs 'Abre un issue' (open/create an issue). It distinguishes from siblings like close_issue, create_pull_request, and create_repository by focusing solely on issue creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: when the user wants to report a problem, suggest a task, or open an issue. However, it does not mention when not to use it (e.g., for closing issues) nor does it explicitly name alternatives, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_pull_requestA
Abre un pull request en un repositorio de GitHub entre dos ramas. Usa este tool cuando el usuario quiera 'hacer un PR', 'crear un pull request' o 'fusionar cambios de una rama a otra'. Requiere la rama origen (head), la rama destino (base) y un título.
| Name | Required | Description | Default |
|---|---|---|---|
| base | Yes | Nombre de la rama destino de la fusión. Ejemplo: main. | |
| body | No | Descripción del pull request en Markdown (opcional). | |
| head | Yes | Nombre de la rama origen con los cambios. Ejemplo: feature/nueva-funcionalidad. | |
| repo | Yes | Nombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto. | |
| owner | Yes | Usuario o organización de GitHub dueña del repositorio. Ejemplo: shakatoti1618. | |
| title | Yes | Título del pull request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states that the tool creates a pull request and mentions required parameters, but it does not disclose behavioral traits like side effects (e.g., triggering CI), permissions needed, or that the branches must exist. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first states the core purpose, the second gives usage triggers and required parameters. Fully front-loaded, zero wasted words, and structured for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers the essential context: what it does, when to use it, and the core required inputs. It omits return value and error behavior, but given the simplicity of the operation and the rich schema, it is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minor value by grouping head and base as 'rama origen' and 'rama destino', but it does not provide meaning beyond the schema's already-complete field descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly opens with 'Abre un pull request' (opens a pull request), specifying the verb, resource (pull request), and scope (between two branches in a GitHub repo). This distinguishes it from sibling tools like create_issue or create_commit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists user intents that should trigger this tool ('hacer un PR', 'crear un pull request', 'fusionar cambios de una rama a otra'), which is clear when-to-use guidance. However, it does not mention when not to use it or name alternative tools for exclusion, stopping short of full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_repositoryA
Crea un nuevo repositorio en la cuenta autenticada de GitHub. Usa este tool cuando el usuario pida crear, inicializar o agregar un repositorio nuevo. Devuelve el nombre, la URL y si es privado. Si no se indica privacidad, se crea público.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Nombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto. | |
| autoInit | No | Si es true, inicializa el repositorio con un README y un commit inicial. | |
| isPrivate | No | Si es true, crea un repositorio privado. Por defecto es público. | |
| description | No | Descripción breve del repositorio (opcional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the operation occurs on the authenticated account, returns the name/URL/private status, and defaults to public if privacy is not specified. This covers key behavioral traits, though it lacks explicit error or idempotency details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and every sentence earns its place: purpose, usage trigger, return values, and default behavior. It is front-loaded with the core action and free of fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 4 parameters, no output schema, and no annotations, the description provides essential context: action, usage, return values, and default privacy. Minor gaps such as not mentioning potential naming conflicts or authentication prerequisites are acceptable given the brief description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter thoroughly. The description adds marginal value by reinforcing the default privacy behavior, but it does not introduce meaning beyond what the schema already provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it creates a new repository in the authenticated GitHub account, using a specific verb and resource. It distinguishes from siblings like create_issue and create_pull_request, which target different resource types, and also notes return values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Usa este tool cuando el usuario pida crear, inicializar o agregar un repositorio nuevo', providing clear when-to-use guidance. It does not mention when-not-to-use or explicitly name alternative tools, but the when-to-use is strong enough to guide selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_commitsA
Lista los commits recientes de un repositorio de GitHub. Usa este tool cuando el usuario pregunte 'qué commits hay', quiera ver el historial o las últimas modificaciones de un repo. Devuelve el sha, mensaje, autor y fecha de cada commit.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Nombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto. | |
| owner | Yes | Usuario o organización de GitHub dueña del repositorio. Ejemplo: shakatoti1618. | |
| perPage | No | Cantidad de commits a devolver por página (máx. 100). Por defecto 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It mentions the return fields and 'recent' commits, but does not explicitly state read-only nature, pagination behavior, or auth requirements. Adequate but with gaps in depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: first describes the action, second gives usage triggers, third describes return values. Each sentence earns its place, front-loaded with the primary purpose, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with 3 parameters and no output schema, the description covers what it returns and when to use it. It lacks explicit pagination detail and read-only confirmation, but the schema's perPage parameter and sibling context fill some gaps. Overall sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so each parameter is already well-documented (owner, repo, perPage). The description does not add extra parameter semantics beyond returning fields, which are not parameters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool lists recent commits from a GitHub repository, with a specific verb 'Lista' and resource, and even specifies returned fields (sha, mensaje, autor, fecha). This clearly distinguishes it from sibling tools like list_repositories and list_issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly gives use cases: when the user asks 'what commits are there', wants to see history, or latest modifications. It does not mention exclusions or alternatives, but the guidance is clear and contextually relevant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_issuesA
Lista los issues de un repositorio de GitHub, filtrando por estado (open, closed o all). Usa este tool cuando el usuario pregunte 'qué issues hay', quiera ver las tareas o problemas de un repo. Devuelve número, título, estado y URL de cada issue.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | Yes | Nombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto. | |
| owner | Yes | Usuario o organización de GitHub dueña del repositorio. Ejemplo: shakatoti1618. | |
| state | No | Filtro de issues por estado. Por defecto 'open'. | |
| perPage | No | Cantidad de issues a devolver por página (máx. 100). Por defecto 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It states what the tool returns (number, title, state, and URL of each issue), which is useful because there is no output schema. It does not mention potential side effects, but as a read-only listing tool, the absence is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, consisting of three sentences that each serve a distinct purpose: stating the action, providing usage guidance, and listing return fields. There is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the fully documented schema, the description is complete enough. It covers what the tool does, when to use it, and what it returns. It does not explicitly mention pagination or default state, but these are covered in the schema, so the description is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with each parameter described. The tool description does not add extra parameter-level detail beyond the schema; it only mentions the state filter, which is already in the schema. Baseline of 3 is appropriate since schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool lists issues from a GitHub repository and filters by state (open, closed, all). It uses a specific verb ('Lista') and resource ('issues de un repositorio de GitHub'), and distinguishes itself from sibling tools like create_issue and close_issue by focusing on listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides a usage trigger: 'Usa este tool cuando el usuario pregunte "qué issues hay"'. This gives clear when-to-use guidance, though it does not mention when not to use it or alternative tools explicitly. It is still strong for practical use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_repositoriesA
Lista los repositorios del usuario autenticado en GitHub. Usa este tool cuando el usuario pregunte 'qué repositorios tengo', quiera ver su lista de repos o enumerar sus proyectos. Devuelve nombre, visibilidad, descripción y URL de cada repositorio.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Número de página a consultar. Por defecto 1. | |
| perPage | No | Cantidad de repositorios a devolver por página (máx. 100). Por defecto 30. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden of behavioral disclosure. It does disclose that the tool returns specific fields (name, visibility, description, URL) and implies authentication is required by stating 'authenticated user'. However, it does not explicitly mention that the operation is read-only, nor discuss rate limits or pagination behavior beyond what the schema already provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences that front-load the core function first, followed by usage examples and return fields. Every sentence adds value with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema, the description covers the purpose, when to use it, and return fields. It does not explicitly mention pagination or the distinction between public/private repos, but the schema covers pagination parameters, and the tool's simplicity means the description is largely sufficient. A brief note on pagination or authentication failure would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% coverage with detailed descriptions for both page and perPage, including defaults and bounds. The description adds no additional parameter semantics, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists the authenticated user's GitHub repositories, using a specific verb ('Lista') and resource ('repositorios del usuario autenticado'). It also provides scope (authenticated user) and examples of user queries that should trigger this tool, effectively distinguishing it from sibling tools like list_issues or create_repository.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool: when the user asks 'what repositories do I have', wants to see their repo list, or enumerate their projects. However, it does not mention when not to use it or provide alternative tool names, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct resource and action: repository creation, issue creation, repository listing, commit creation, issue listing, issue closing, pull request creation, and commit listing. There is no overlap or ambiguity between tool purposes.
All tool names follow a consistent verb_noun pattern: create_repository, create_issue, list_repositories, create_commit, list_issues, close_issue, create_pull_request, list_commits. The convention is uniform, with singular nouns after 'create' and plural nouns after 'list'.
With 8 tools, the server is well-scoped for GitHub operations. The count falls within the ideal 3-15 range, and each tool covers a distinct common task without redundancy.
The tool set covers core creation and listing workflows for repositories, issues, commits, and pull requests, plus closing issues. However, it lacks common operations such as updating issues (beyond closing), merging pull requests, and getting single-item details, leaving notable gaps in lifecycle coverage.
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 Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Create, deploy, and operate MCP servers directly from your GitHub repositories.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
- AlicenseBqualityAmaintenanceA 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.486Apache 2.0
- AlicenseBqualityBmaintenanceMCP server that exposes GitHub operations as tools for AI agents, enabling code search, issue management, and PR review.12MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI agents to directly manage GitHub repositories, including PRs, issues, and code search, using natural language.MIT
- FlicenseNot gradedqualityBmaintenanceMCP server that enables AI agents to perform GitHub operations like creating repositories, issues, and commits through natural language.
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