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
-
Crea u obtén un token de acceso para tu cuenta de Github: Guía
-
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
-
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.
- Entradas requeridas:
-
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 (ascodesc).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,createdoupdated).
- Entradas requeridas:
-
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 (ascodesc).sort(optional string, default:best match): Campo de clasificación (puede ser uno de:committer-dateoauthor-date).
- Entradas requeridas:
-
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.
- Entradas requeridas:
-
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 (ascodesc).sort(optional string, default:best match): Campo de clasificación (puede ser uno de:followers,repositoriesojoined).
- Entradas requeridas:
-
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.
- Entradas requeridas:
-
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 (ascodesc).sort(optional string, default:best match): Campo de clasificación (puede ser uno de:createdoupdated).
- Entradas requeridas:
-
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 (ascodesc).sort(optional string, default:created): Campo de clasificación (puede ser uno de:created,commentsoupdated).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.
- Entradas requeridas:
-
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.
- Entradas requeridas:
-
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 (ascodesc).sort(optional string, default:created): Campo de clasificación (puede ser uno de:created,popularity,long-runningoupdated).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).
- Entradas requeridas:
-
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.
- Entradas requeridas:
Ejemplos de uso
Algunos ejemplos de prompts que puedes usar para interactuar con Github:
- "modelcontextprotocol" → ejecuta la herramienta
search_repositoriespara encontrar repositorios donde se menciona modelcontextprotocol. - "¿Cuál es el issue 739 en el repositorio modelcontextprotocol servers?" → ejecuta la herramienta
get_issuepara encontrar el issue 739 del repositorio modelcontextprotocol servers. - "¿Cuál es el PR 717 en el repositorio modelcontextprotocol servers?" → ejecuta la herramienta
get_pull_requestpara encontrar el PR 717 del repositorio modelcontextprotocol servers.
Desarrollo
- Instala las dependencias:
pnpm install
- Configura el token de acceso de Github en
.env:
GITHUB_PERSONAL_ACCESS_TOKEN=<your_personal_github_access_token>
- Ejecuta localmente con watch:
pnpm dev
- Compila el servidor:
pnpm build
- Depuración local con inspector:
pnpm inspector