Github MCP Server

Se integra con GitHub, permitiendo que los LLMs interactúen con repositorios, issues y pull requests a través de la API de GitHub.

Documentación

Github MCP Server

Un Model Context Protocol Servidor para Github.

Proporciona integración con Github a través de MCP, permitiendo que los LLMs interactúen con él.

Documentación de Github REST Api

Instalación

Instalación manual

  1. Crea u obtén un token de acceso para tu cuenta de Github: Guía

  2. Añade la configuración del servidor a Claude Desktop:

    • MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: Consulta esta guía
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "github-mcp-server"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "your_personal_github_access_token"
      }
    }
  }
}

Componentes

Herramientas

  1. search_repositories: Busca un repositorio en GitHub.

    • Entradas requeridas:
      • query (string): La consulta para buscar el repositorio.
      • page (number, default: 30, max: 100): Número de página para la paginación.
      • per_page (number, default: 30, max: 100): Número de resultados por página.
  2. search_issues: Busca issues de un repositorio.

    • Entradas requeridas:
      • query (string): La consulta para buscar el repositorio.
      • page (number, default: 1): Número de página para la paginación.
      • per_page (number, default: 30, max: 100): Número de resultados por página.
      • order (optional string, default: desc): Orden de clasificación (asc o desc).
      • sort (optional string, default: best match): Campo de clasificación (puede ser uno de: comments, reactions, reactions-+1, reactions--1, reactions-smile, reactions-thinking_face, reactions-heart, reactions-tada, interactions, created o updated).
  3. search_commits: Busca commits de un repositorio.

    • Entradas requeridas:
      • query (string): La consulta para buscar el repositorio.
      • page (number, default: 1): Número de página para la paginación.
      • per_page (number, default: 30, max: 100): Número de resultados por página.
      • order (optional string, default: desc): Orden de clasificación (asc o desc).
      • sort (optional string, default: best match): Campo de clasificación (puede ser uno de: committer-date o author-date).
  4. search_code: Busca código de un repositorio.

    • Entradas requeridas:
      • query (string): La consulta para buscar el repositorio.
      • page (number, default: 1): Número de página para la paginación.
      • per_page (number, default: 30, max: 100): Número de resultados por página.
  5. search_users: Busca usuarios de un repositorio.

    • Entradas requeridas:
      • query (string): La consulta para buscar el repositorio.
      • page (number, default: 1): Número de página para la paginación.
      • per_page (number, default: 30, max: 100): Número de resultados por página.
      • order (optional string, default: desc): Orden de clasificación (asc o desc).
      • sort (optional string, default: best match): Campo de clasificación (puede ser uno de: followers, repositories o joined).
  6. search_topics: Busca temas.

    • Entradas requeridas:
      • query (string): La consulta para buscar el repositorio.
      • page (number, default: 1): Número de página para la paginación.
      • per_page (number, default: 30, max: 100): Número de resultados por página.
  7. search_labels: Busca etiquetas en un repositorio.

    • Entradas requeridas:
      • query (string): La consulta para buscar el repositorio.
      • page (number, default: 1): Número de página para la paginación.
      • per_page (number, default: 30, max: 100): Número de resultados por página.
      • order (optional string, default: desc): Orden de clasificación (asc o desc).
      • sort (optional string, default: best match): Campo de clasificación (puede ser uno de: created o updated).
  8. list_repositories_issues: Lista issues de un repositorio.

    • Entradas requeridas:
      • owner (string): El propietario del repositorio.
      • repo (string): El nombre del repositorio.
      • page (optional number, default: 1): Número de página para la paginación.
      • per_page (optional number, default: 30, max: 100): Número de resultados por página.
      • direction (optional string, default: desc): Dirección de clasificación (asc o desc).
      • sort (optional string, default: created): Campo de clasificación (puede ser uno de: created, comments o updated).
      • since (optional string): Resultados actualizados por última vez después de la hora dada (formato ISO 8601: YYYY-MM-DDTHH:MM:SSZ.).
      • labels (optional string): Nombres de etiquetas separados por comas. Ejemplo: bug,ui,@high.
      • milestone (optional string): Número de hito.
      • assignee (optional string): Nombre del usuario asignado (* para todos).
      • creator (optional string): El usuario que creó el issue. (* para todos).
      • mentioned (optional string): Un usuario que se menciona en el issue.
  9. get_issue: Obtén un issue de un repositorio.

    • Entradas requeridas:
      • owner (string): El propietario del repositorio.
      • repo (string): El nombre del repositorio.
      • issue_number (number): El número del issue.
  10. list_repositories_pull_requests: Lista pull requests de un repositorio.

    • Entradas requeridas:
      • owner (string): El propietario del repositorio.
      • repo (string): El nombre del repositorio.
      • page (optional number, default: 1): Número de página para la paginación.
      • per_page (optional number, default: 30, max: 100): Número de resultados por página.
      • direction (optional string, default: desc): Dirección de clasificación (asc o desc).
      • sort (optional string, default: created): Campo de clasificación (puede ser uno de: created, popularity, long-running o updated).
      • head (optional string): Filtra pulls por usuario head u organización head y nombre de rama en el formato user:ref-name u organization:ref-name (Por ejemplo: github:new-script-format o octocat:test-branch).
      • base (optional string): Filtra pulls por nombre de rama base. (Por ejemplo: gh-pages).
  11. get_pull_request: Obtén un pull request de un repositorio.

    • Entradas requeridas:
      • owner (string): El propietario del repositorio.
      • repo (string): El nombre del repositorio.
      • pull_request_number (number): El número del pull request.

Ejemplos de uso

Algunos ejemplos de prompts que puedes usar para interactuar con Github:

  1. "modelcontextprotocol" → ejecuta la herramienta search_repositories para encontrar repositorios donde se menciona modelcontextprotocol.
  2. "¿Cuál es el issue 739 en el repositorio modelcontextprotocol servers?" → ejecuta la herramienta get_issue para encontrar el issue 739 del repositorio modelcontextprotocol servers.
  3. "¿Cuál es el PR 717 en el repositorio modelcontextprotocol servers?" → ejecuta la herramienta get_pull_request para encontrar el PR 717 del repositorio modelcontextprotocol servers.

Desarrollo

  1. Instala las dependencias:
pnpm install
  1. Configura el token de acceso de Github en .env:
GITHUB_PERSONAL_ACCESS_TOKEN=<your_personal_github_access_token>
  1. Ejecuta localmente con watch:
pnpm dev
  1. Compila el servidor:
pnpm build
  1. Depuración local con inspector:
pnpm inspector