Skip to main content
Glama

Servidor MCP de GitHub

Mecanografiado Protocolo de contexto modeloVersión LicenciaEstado GitHub

Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona herramientas para interactuar con la API de GitHub. Este servidor permite a los agentes LLM gestionar repositorios, incidencias, solicitudes de incorporación de cambios, ramas, archivos y versiones de GitHub mediante una interfaz estandarizada.

Tabla de contenido

Descripción general

github-mcp-server implementa el Protocolo de Contexto de Modelo (MCP), lo que permite una comunicación estandarizada entre LLM y sistemas externos a través de:

  • Clientes : Claude Desktop, IDE y otros clientes compatibles con MCP

  • Servidores : Herramientas y recursos para la gestión de proyectos y la colaboración

  • Agentes LLM : modelos de IA que aprovechan la capacidad de realizar operaciones de GitHub mediante programación.

Actúa como un puente entre los modelos de IA y la API de GitHub, ofreciendo un conjunto de herramientas bien definidas que siguen patrones consistentes y manejan la autenticación, la validación, el manejo de errores y la limitación de velocidad.

Capacidades clave:

  • Integración de la API de GitHub : integración segura y perfecta con la API REST de GitHub

  • Funciones completas de GitHub : gestión completa de repositorios, ramas, problemas, solicitudes de incorporación de cambios y más

  • Arquitectura de características atómicas : Estructura de código modular bien organizada para facilitar el mantenimiento

  • Validación de entrada : validación robusta con esquemas Zod para todas las operaciones

  • Manejo de errores : categorización y generación de informes de errores consistentes

  • Limitación de velocidad : gestión de límite de velocidad de la API de GitHub integrada

  • Enfoque en el rendimiento : Operaciones optimizadas y formato de respuesta

Arquitectura y componentes

Arquitectura del sistema central:

flowchart TB subgraph API["API Layer"] direction LR MCP["MCP Protocol"] Val["Validation"] Rate["Rate Limiting"] MCP --> Val --> Rate end subgraph Features["Feature Modules"] direction LR Repo["Repository Management"] Branch["Branch Management"] Issue["Issue Management"] PR["Pull Request Management"] File["File Management"] Release["Release Management"] Repo <--> Branch Repo <--> Issue Repo <--> PR Repo <--> File Branch <--> PR end subgraph Services["Services Layer"] direction LR GitHub["GitHub Service"] Mapper["Response Mapper"] RateLimiter["Rate Limiter"] GitHub <--> RateLimiter GitHub <--> Mapper end Rate --> Repo Rate --> Branch Rate --> Issue Rate --> PR Rate --> File Rate --> Release Repo --> GitHub Branch --> GitHub Issue --> GitHub PR --> GitHub File --> GitHub Release --> GitHub classDef layer fill:#2d3748,stroke:#4299e1,stroke-width:3px,rx:5,color:#fff classDef component fill:#1a202c,stroke:#a0aec0,stroke-width:2px,rx:3,color:#fff classDef api fill:#3182ce,stroke:#90cdf4,stroke-width:2px,rx:3,color:#fff classDef features fill:#319795,stroke:#81e6d9,stroke-width:2px,rx:3,color:#fff classDef services fill:#2f855a,stroke:#9ae6b4,stroke-width:2px,rx:3,color:#fff class API,Features,Services layer class MCP,Val,Rate api class Repo,Branch,Issue,PR,File,Release features class GitHub,Mapper,RateLimiter services

Componentes principales:

  • Capa de protocolo MCP : gestiona la comunicación con los asistentes de IA

  • Capa de validación : garantiza la integridad de los datos mediante la validación del esquema.

  • Servicio GitHub : Integración principal con la API REST de GitHub

  • Limitador de velocidad : evita que se agote el límite de velocidad de la API

  • Módulos de funciones : Operaciones de GitHub específicas del dominio

  • Manejo de errores : sistema integral de registro y manejo de errores

Características

Gestión de repositorios

  • Crear, enumerar, obtener : cree nuevos repositorios, enumere repositorios de usuarios y obtenga información detallada del repositorio

  • Validación y configuración : validar la configuración del repositorio y administrar las opciones de configuración

Gestión de sucursales

  • Crear, eliminar, enumerar : gestión completa del ciclo de vida de las sucursales con validación segura

  • Soporte para ramas protegidas : filtrado y operaciones para ramas protegidas

Gestión de problemas

  • Crear y listar : crea problemas detallados con etiquetas y enumera problemas con opciones de filtrado

  • Seguimiento de estado : Filtrar por estado del problema (abierto, cerrado, todos)

Gestión de solicitudes de extracción

  • Crear, actualizar, fusionar, enumerar : gestión completa del ciclo de vida de las solicitudes de extracción

  • Integración de revisiones y comentarios : agregue revisiones y comentarios a las solicitudes de extracción

  • Opciones de fusión : Compatibilidad con diferentes estrategias de fusión (fusión, squash, rebase)

Gestión de archivos

  • Crear y actualizar archivos : agregue y modifique el contenido del repositorio con mensajes de confirmación

  • Compatibilidad con codificación Base64 : maneja contenido de archivos tanto de texto como binarios

Gestión de versiones

  • Crear lanzamientos : crea lanzamientos etiquetados con opciones personalizables

  • Soporte para borradores y prelanzamientos : Soporte para flujos de trabajo de borradores y prelanzamientos

Instalación

Prerrequisitos

  • Node.js (v16 o más reciente)

  • Un token de acceso personal de GitHub con los permisos adecuados

Configuración

  1. Clonar el repositorio:

    git clone https://github.com/cyanheads/github-mcp-server.git cd github-mcp-server
  2. Instalar dependencias:

    npm install
  3. Crea un archivo .env en la raíz del proyecto con tu token de GitHub:

    GITHUB_TOKEN=your_github_personal_access_token LOG_LEVEL=info SERVER_NAME=github-mcp-server
  4. Construir el proyecto:

    npm run build
  5. Iniciar el servidor:

    node build/index.js

Configuración

El servidor se puede configurar a través de variables de entorno:

Variable de entorno

Descripción

Por defecto

GITHUB_TOKEN

Token de acceso personal de GitHub (obligatorio)

-

LOG_LEVEL

Nivel de registro (depuración, información, advertencia, error, fatal)

información

SERVER_NAME

Nombre del servidor MCP

servidor github-mcp

SERVER_VERSION

Versión del servidor MCP

0.1.0

API_TIMEOUT_MS

Tiempo de espera para llamadas API en milisegundos

10000

RATE_LIMITING_ENABLED

Si la limitación de velocidad está habilitada

verdadero

RATE_LIMITING_MIN_REMAINING

Solicitudes mínimas restantes antes de la limitación

100

RATE_LIMITING_RESET_BUFFER_MS

Amortiguador de tiempo para agregar al tiempo de restablecimiento del límite de velocidad

5000

Configuración del cliente MCP

Añade a la configuración de tu cliente MCP:

{ "mcpServers": { "github": { "command": "node", "args": ["/path/to/github-mcp-server/build/index.js"], "env": { "GITHUB_TOKEN": "your_github_personal_access_token", "LOG_LEVEL": "info", "SERVER_NAME": "github-mcp-server" } } } }

Estructura del proyecto

Este proyecto sigue un patrón de arquitectura orientado a características atómicas:

/src /configuration // Application configuration /dependencyInjection // Tool registry and DI container /features // Feature modules organized by domain /repositoryManagement /resources // Read operations /modifications // Write operations /branchManagement /issueManagement /pullRequestManagement /fileManagement /releaseManagement /services // External service integrations /githubAccess // GitHub API client and utilities /types // Core type definitions /utilities // Helper functions and utilities

Cada dominio de características se divide en:

  • Recursos : Operaciones de lectura que no modifican datos

  • Modificaciones : escribe operaciones que crean, actualizan o eliminan datos.

Cada operación está contenida en su propio directorio con:

  • Archivo de implementación de la operación

  • Archivo de definiciones de tipos

  • Exportar archivo de índice

Herramientas

GitHub MCP Server proporciona un conjunto completo de herramientas para interactuar con GitHub:

Herramientas de gestión de repositorios

Herramienta

Descripción

get_repository

Obtenga información detallada sobre un repositorio específico. Parámetros:

owner

,

repo

list_repositories

Lista de repositorios para el usuario autenticado. Parámetros:

type

(opcional),

sort

(opcional).

create_repository

Crear un nuevo repositorio de GitHubParámetros:

name

,

description

(opcional),

private

(opcional)

Herramientas de gestión de sucursales

Herramienta

Descripción

list_branches

Listar ramas en un repositorioParámetros:

owner

,

repo

,

protected

(opcional),

per_page

(opcional)

create_branch

Crear una nueva ramaParámetros:

owner

,

repo

,

branch

,

sha

delete_branch

Eliminar una ramaParámetros:

owner

,

repo

,

branch

Herramientas de gestión de problemas

Herramienta

Descripción

create_issue

Crear un nuevo problema en un repositorioParámetros:

owner

,

repo

,

title

,

body

(opcional),

labels

(opcional)

list_issues

Enumerar problemas en un repositorioParámetros:

owner

,

repo

,

state

(opcional),

labels

(opcional)

Herramientas de gestión de solicitudes de extracción

Herramienta

Descripción

create_pull_request

Crear una nueva solicitud de extracción Parámetros:

owner

,

repo

,

title

,

head

,

base

,

body

(opcional)

merge_pull_request

Fusionar una solicitud de extracción Parámetros:

owner

,

repo

,

pull_number

,

commit_title

(opcional),

commit_message

(opcional),

merge_method

(opcional)

update_pull_request

Actualizar una solicitud de extracción existenteParámetros:

owner

,

repo

,

pull_number

,

title

(opcional),

body

(opcional),

state

(opcional),

base

(opcional),

maintainer_can_modify

(opcional)

list_pull_requests

Enumerar solicitudes de extracción en un repositorioParámetros:

owner

,

repo

,

state

(opcional),

head

(opcional),

base

(opcional),

sort

(opcional),

direction

(opcional)

Herramientas de gestión de archivos

Herramienta

Descripción

update_file

Crear o actualizar un archivo en un repositorioParámetros:

owner

,

repo

,

path

,

message

,

content

,

sha

(opcional),

branch

(opcional)

Herramientas de gestión de versiones

Herramienta

Descripción

create_release

Crear un nuevo lanzamientoParámetros:

owner

,

repo

,

tag_name

,

name

(opcional),

body

(opcional),

draft

(opcional),

prerelease

(opcional)

Desarrollo

Estructura del proyecto

El proyecto sigue estrictas convenciones de nomenclatura y estructura de directorio:

  • Nombre de archivo: action.entity.type.ts (por ejemplo, create.repository.operation.ts )

  • Cada módulo tiene un propósito claramente definido

  • Los tipos se ubican junto con su implementación.

  • Todas las exportaciones se centralizan a través de archivos de índice

Guiones

  • npm run build - Construir el proyecto

  • npm run watch : vigila los cambios y reconstruye

  • npm run inspector : ejecuta la herramienta de inspección MCP

  • npm run clean : limpieza de artefactos de compilación

  • npm run rebuild : limpia y reconstruye el proyecto

  • npm run tree : genera una representación del árbol de directorios

Manejo de errores

El servidor implementa una estrategia integral de manejo de errores:

  • Objetos de error estandarizados : formato de error consistente con categorización

  • Validación de entrada : prevalidación mediante esquemas Zod

  • Protección de limitación de velocidad : gestión automática de los límites de velocidad de la API de GitHub

  • Categorías de errores :

    • Errores de red (problemas de conectividad)

    • Errores de autenticación (problemas con el token)

    • Errores de validación (entrada no válida)

    • Errores de la API de GitHub (problemas específicos de la API)

    • Errores del sistema (fallos inesperados)

  • Registro detallado : registro estructurado de todas las operaciones y errores

Contribuyendo

¡Agradecemos sus contribuciones! No dude en enviar una solicitud de incorporación de cambios.

  1. Bifurcar el repositorio

  2. Crea tu rama de funciones ( git checkout -b feature/amazing-feature )

  3. Confirme sus cambios ( git commit -m 'Add some amazing feature' )

  4. Empujar a la rama ( git push origin feature/amazing-feature )

  5. Abrir una solicitud de extracción

Licencia

Licencia Apache 2.0


-
security - not tested
-
license - not tested
-
quality - not tested

Related MCP Servers

  • A
    security
    -
    license
    A
    quality
    A Model Context Protocol server that enables AI models to interact with GitHub's API, allowing for repository creation and management with descriptions, topics, and website URLs through natural language commands.
    Last updated -
  • -
    security
    -
    license
    -
    quality
    A Model Context Protocol server that enables AI assistants to perform GitHub operations including repository management, file operations, issue tracking, and pull request creation.
    Last updated -
    1
  • -
    security
    -
    license
    -
    quality
    Model Context Protocol server that enables interaction with GitHub repositories, issues, pull requests, and search functionality through natural language.
    Last updated -
    1
  • A
    security
    A
    license
    A
    quality
    A Model Context Protocol server that enables LLMs to interact with Git repositories, providing tools to read, search, and manipulate Git repositories through commands like status, diff, commit, and branch management.
    Last updated -
    12
    MIT License

View all related MCP servers

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/cyanheads/github-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server