Skip to main content
Glama
shakatoti1618-wq

shakatoti1618-agent

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

  1. Arquitectura

  2. Tools disponibles

  3. Requisitos

  4. Obtener el GitHub Token

  5. Instalación

  6. Configuración en Antigravity

  7. Verificar que funciona (MCP Inspector)

  8. Ejemplos de prompts

  9. Estructura del proyecto

  10. Errores y troubleshooting

  11. Testing

  12. Extras implementados


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

create_repository

Crea un repositorio

name*, description, isPrivate, autoInit

create_issue

Abre un issue

owner, repo, title*, body

list_repositories

Lista repos del usuario

perPage, page

create_commit

Crea/actualiza un archivo (commit)

owner, repo, path, message, content*, branch

list_issues

Lista issues de un repo

owner, repo, state, perPage

close_issue

Cierra un issue

owner, repo, issueNumber*

create_pull_request

Crea un PR entre ramas

owner, repo, title, head, base*, body

list_commits

Lista commits recientes

owner, repo, perPage

* = 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

  1. Ve a GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic).

  2. Generate new token (classic).

  3. Da un nombre (ej. mcp-agent), expiración, y marca los scopes:

    Scope

    Para qué sirve

    repo

    Repositorios, issues, commits, PRs

    user

    Información del usuario autenticado

    admin:org

    Operaciones sobre organizaciones

  4. 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 build

Configuració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 build antes, o usa "command": "npx", "args": ["tsx", "src/index.ts"] para desarrollo. El dist/ se genera con npm run build.

Verificar que funciona (MCP Inspector)

npx @modelcontextprotocol/inspector node dist/index.js

Con 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 mi-proyecto con una descripción breve y que sea privado."

Crear issue

"Abre un issue en shakatoti1618/mi-proyecto con el título Fix: no carga la página y una descripción."

Listar repos

"¿Qué repositorios tengo?"

Commit

"Agrega el archivo docs/README.md con el contenido # Documentación al repo shakatoti1618/mi-proyecto, con mensaje Agrega documentación."

Listar issues

"Muéstrame los issues abiertos de shakatoti1618/mi-proyecto."

Cerrar issue

"Cierra el issue número 3 de shakatoti1618/mi-proyecto."

Crear PR

"Crea un pull request de feature/login hacia main en shakatoti1618/mi-proyecto con título Implementa login."

Ver commits

"¿Cuáles son los últimos commits de shakatoti1618/mi-proyecto?"

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

VALIDATION

Input inválido (Zod)

"El nombre del repositorio debe tener al menos 3 caracteres."

AUTHENTICATION

Token inválido / sin scope (401/403)

"Tu token no tiene permisos para esta operación."

API

GitHub respondió mal (404, 422, 500)

"El repositorio [x] no fue encontrado. Verifica el nombre e intenta de nuevo."

RATE_LIMIT

Límite de requests (429/403)

"Se alcanzó el límite de solicitudes a la API de GitHub. Espera e intenta de nuevo."

NETWORK

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"

.env no existe o vacío

Copiar .env.example.env y pegar el token

403 en todas las operaciones

Token sin el scope repo

Regenerar el token marcando repo, user, admin:org

401 Bad credentials

Token inválido/revocado

Generar un token nuevo

El agente no responde o responde mal

El server quedó colgado o dist/ desactualizado

npm run build y reiniciar el server en Antigravity

No se ve ningún tool

dist/index.js no existe

npm run build

El protocolo se rompe (errores raros de parsing)

Algo escribió en stdout (un console.log accidental)

Buscar y reemplazar por el logger

429 repetidos

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 watch
  • 40 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 tools
close_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesNombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto.
ownerYesUsuario o organización de GitHub dueña del repositorio. Ejemplo: shakatoti1618.
issueNumberYesNúmero del issue a cerrar. Ejemplo: 12.

TDQS

A3.8/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesRuta del archivo dentro del repositorio. Ejemplo: docs/README.md.
repoYesNombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto.
ownerYesUsuario o organización de GitHub dueña del repositorio. Ejemplo: shakatoti1618.
branchNoRama sobre la que se realiza el commit. Por defecto 'main'.main
contentYesContenido del archivo en texto plano (no codificado).
messageYesMensaje del commit. Ejemplo: 'Agrega sección de instalación'.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoCuerpo del issue en Markdown. Describe el problema o la tarea (opcional).
repoYesNombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto.
ownerYesUsuario o organización de GitHub dueña del repositorio. Ejemplo: shakatoti1618.
titleYesTítulo corto y descriptivo del issue. Ejemplo: 'Fix: error al iniciar sesión'.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseYesNombre de la rama destino de la fusión. Ejemplo: main.
bodyNoDescripción del pull request en Markdown (opcional).
headYesNombre de la rama origen con los cambios. Ejemplo: feature/nueva-funcionalidad.
repoYesNombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto.
ownerYesUsuario o organización de GitHub dueña del repositorio. Ejemplo: shakatoti1618.
titleYesTítulo del pull request.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto.
autoInitNoSi es true, inicializa el repositorio con un README y un commit inicial.
isPrivateNoSi es true, crea un repositorio privado. Por defecto es público.
descriptionNoDescripción breve del repositorio (opcional).

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesNombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto.
ownerYesUsuario o organización de GitHub dueña del repositorio. Ejemplo: shakatoti1618.
perPageNoCantidad de commits a devolver por página (máx. 100). Por defecto 30.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesNombre del repositorio. Debe tener entre 3 y 100 caracteres, solo letras, números, guiones y puntos. Ejemplo: mi-proyecto.
ownerYesUsuario o organización de GitHub dueña del repositorio. Ejemplo: shakatoti1618.
stateNoFiltro de issues por estado. Por defecto 'open'.
perPageNoCantidad de issues a devolver por página (máx. 100). Por defecto 30.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoNúmero de página a consultar. Por defecto 1.
perPageNoCantidad de repositorios a devolver por página (máx. 100). Por defecto 30.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

A4.1/5.0
Disambiguation5/5

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.

Naming Consistency5/5

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'.

Tool Count5/5

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.

Completeness3/5

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

ActivityMaintained
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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