Servidor Git MCP
Un servidor MCP (Protocolo de Contexto de Modelo) que proporciona herramientas para interactuar con repositorios Git. Permite a los LLM y agentes de IA realizar operaciones Git como clonar, confirmar, enviar, extraer, ramificar, comparar, registrar, establecer estado y más mediante el estándar MCP.
Construido sobre la cyanheads/mcp-ts-template
, este servidor sigue una arquitectura modular:
Nota para el desarrollador : este repositorio incluye un archivo .clinerules que sirve como hoja de trucos para desarrolladores para su agente de codificación LLM con referencia rápida para los patrones de base de código, ubicaciones de archivos y fragmentos de código.
Tabla de contenido
| Descripción general | Características | Instalación |
| Configuración | Estructura del proyecto |
| Herramientas | Recursos | Desarrollo | Licencia |
Descripción general
¡Potencie a sus agentes de IA y herramientas de desarrollo con una integración perfecta de Git!
El servidor Git MCP actúa como un puente que permite que las aplicaciones (clientes MCP) que entienden el Protocolo de contexto de modelo (MCP), como los asistentes de IA avanzados (LLM), las extensiones IDE o los scripts personalizados, interactúen de forma directa y segura con los repositorios Git locales.
En lugar de scripts complejos o CLI manual, sus herramientas pueden aprovechar este servidor para:
- Automatice los flujos de trabajo de Git : clone repositorios, cree ramas, prepare cambios, confirme trabajos, envíe actualizaciones y administre etiquetas mediante programación.
- Obtenga información sobre el repositorio : verifique el estado, vea registros, compare cambios e inspeccione objetos Git sin salir de la aplicación host.
- Integre Git en el desarrollo impulsado por IA : permita que los LLM administren el control de versiones como parte de sus tareas de codificación o refactorización.
Basado en la robusta mcp-ts-template
, este servidor proporciona una forma estandarizada, segura y eficiente de exponer la funcionalidad de Git mediante el estándar MCP. Esto se logra mediante la ejecución segura de la herramienta de línea de comandos git
estándar instalada en el sistema mediante el módulo child_process
de Node.js, lo que garantiza la compatibilidad y aprovecha al máximo la potencia de Git.
Características
Utilidades principales (desde plantilla)
Aprovecha las robustas utilidades proporcionadas por la mcp-ts-template
:
- Registro : registro estructurado y configurable (rotación de archivos, consola, notificaciones MCP) con redacción de datos confidenciales.
- Manejo de errores : procesamiento de errores centralizado, tipos de errores estandarizados (
McpError
) y registro automático. - Configuración : Carga de variable de entorno (
dotenv
). - Validación/saneamiento de entrada : utiliza
zod
para la validación del esquema y la lógica de saneamiento personalizada (crucial para las rutas). - Contexto de solicitud : seguimiento y correlación de operaciones a través de identificadores de solicitud únicos.
- Seguridad de tipos : tipado fuerte impuesto por los esquemas TypeScript y Zod.
- Opción de transporte HTTP : servidor Express integrado con SSE, administración de sesiones y compatibilidad con CORS.
Operaciones de Git
- Ejecución directa de Git CLI : interactúa con Git ejecutando de forma segura la herramienta de línea de comandos
git
estándar a través dechild_process
de Node.js, lo que garantiza la compatibilidad total y el acceso a las funciones de Git. - Cobertura integral de comandos : expone una amplia gama de comandos Git como herramientas MCP (consulte la sección Herramientas ).
- Interacción del repositorio : admite verificación de estado, ramificación, preparación, confirmación, búsqueda, extracción, envío, comparación, registro, restablecimiento, etiquetado y más.
- Administración del directorio de trabajo : permite configurar y borrar un directorio de trabajo específico de la sesión para la persistencia del contexto en múltiples operaciones de Git.
- Características de seguridad : incluye controles y requiere confirmación explícita para operaciones potencialmente destructivas como
git clean
ygit reset --hard
. - Firma de confirmaciones : Admite la firma GPG o SSH para confirmaciones verificadas, controlada mediante la variable de entorno
GIT_SIGN_COMMITS
y la configuración de Git del servidor. Incluye un parámetro de herramienta opcional para recurrir a confirmaciones sin firmar en caso de fallo de firma.
Instalación
Prerrequisitos
- Node.js (>=18.0.0)
- npm (viene con Node.js)
- Git instalado y accesible en la RUTA del sistema.
Instalar mediante npm
- Instalar el paquete globalmente:
Instalar desde la fuente
- Clonar el repositorio:
- Instalar dependencias:
- Construir el proyecto:Esto compila el código TypeScript a JavaScript en el directorio
dist/
y hace que el punto de entrada sea ejecutable.
Configuración
Variables de entorno
Configure el servidor mediante variables de entorno. Cree un archivo .env
en la raíz del proyecto (cópielo de .env.example
) o configúrelo en su entorno.
Variable | Descripción | Por defecto |
---|---|---|
MCP_TRANSPORT_TYPE | Mecanismo de transporte: stdio o http . | stdio |
MCP_HTTP_PORT | Puerto del servidor HTTP (si MCP_TRANSPORT_TYPE=http ). Reintentar el siguiente puerto si está ocupado. | 3010 |
MCP_HTTP_HOST | Dirección de host del servidor HTTP (si MCP_TRANSPORT_TYPE=http ). | 127.0.0.1 |
MCP_ALLOWED_ORIGINS | Lista separada por comas de orígenes permitidos para CORS (si MCP_TRANSPORT_TYPE=http ). | (ninguno) |
MCP_LOG_LEVEL | Nivel de registro ( debug , info , notice , warning , error , crit , alert , emerg ). Heredado de la plantilla. | info |
GIT_SIGN_COMMITS | Configurar como "true" para habilitar los intentos de firma de las confirmaciones realizadas con la herramienta git_commit . Requiere la configuración de Git/clave del servidor (ver más abajo). | false |
MCP_AUTH_SECRET_KEY | Clave secreta para firmar/verificar tokens de autenticación (requerida si la autenticación se habilita en el futuro). | '' |
Configuración del cliente MCP
Agregue a la configuración de su cliente MCP (por ejemplo, cline_mcp_settings.json
):
Estructura del proyecto
La base del código sigue una estructura modular dentro del directorio src/
:
Para obtener un árbol de archivos detallado, ejecute npm run tree
o consulte docs/tree.md .
Herramientas
El servidor Git MCP proporciona un conjunto de herramientas para interactuar con repositorios Git, a las que se puede llamar a través del Protocolo de contexto de modelo.
Nombre de la herramienta | Descripción | Argumentos clave |
---|---|---|
git_add | Etapas de archivos o patrones específicos. | path? files? |
git_branch | Administra las ramas (enumerar, crear, eliminar, renombrar, mostrar las actuales). | path? mode , ¿ branchName? ¿ newBranchName? ¿ startPoint? ¿ force? ¿ all? ¿ remote? |
git_checkout | Cambia de rama o restaura archivos del árbol de trabajo. | path? branchOrPath , newBranch? ¿ force? |
git_cherry_pick | Aplica los cambios introducidos por confirmaciones existentes. | path? commitRef , mainline? ¿ strategy? ¿ noCommit? ¿ signoff? |
git_clean | Elimina archivos no rastreados. Requiere force: true . | path? force ?, dryRun? ¿ directories? ¿ ignored? |
git_clear_working_dir | Borra el directorio de trabajo específico de la sesión. | (ninguno) |
git_clone | Clona un repositorio en una ruta absoluta especificada. | repositoryUrl , targetPath , ¿ branch? ¿ depth? ¿ quiet? |
git_commit | Confirma cambios programados. Admite la anulación por parte del autor y el control de firma. | path? message , author? ¿ allowEmpty? ¿ amend? ¿ forceUnsignedOnFailure? |
git_diff | Muestra cambios entre confirmaciones, árbol de trabajo, etc. | path? commit1? ¿ commit2? ¿ staged? ¿ file? |
git_fetch | Descarga objetos y referencias de otros repositorios. | path? remote? prune? ¿ tags? all? |
git_init | Inicializa un nuevo repositorio Git en la ruta absoluta especificada. El valor predeterminado es 'main' para la rama inicial. | path , ¿ initialBranch? ¿ bare? ¿ quiet? |
git_log | Muestra registros de confirmación. | path? ¿ maxCount? ¿ author? ¿ since? ¿ until? ¿ branchOrFile? |
git_merge | Fusiona la rama especificada en la rama actual. | path? branch ?, commitMessage? ¿ noFf? ¿ squash? ¿ abort? |
git_pull | Obtiene y se integra con otro repositorio o rama local. | path? ¿ remote? branch? ¿ rebase? ¿ ffOnly? |
git_push | Actualiza referencias remotas utilizando referencias locales. | path? remote? ¿ branch? ¿ remoteBranch? ¿ force? ¿ forceWithLease? ¿ setUpstream? ¿ tags? delete? |
git_rebase | Vuelve a aplicar confirmaciones sobre otra punta base. | path? mode? upstream? ¿ branch? ¿ interactive? ¿ strategy? ¿ strategyOption? onto? |
git_remote | Administra repositorios remotos (enumerar, agregar, eliminar, mostrar). | path? mode , name? url? |
git_reset | Restablece el HEAD actual a un estado especificado. Admite los modos suave, mixto y duro. USE "duro" CON PRECAUCIÓN . | path? mode? ¿ commit? |
git_set_working_dir | Establece el directorio de trabajo predeterminado. Opcionalmente, se puede inicializar el repositorio si no está presente. Requiere una ruta absoluta. | path , validateGitRepo? initializeIfNotPresent? |
git_show | Muestra información sobre los objetos Git (confirmaciones, etiquetas, etc.). | path? ref , ¿ filePath? |
git_stash | Administra los cambios almacenados (enumerar, aplicar, extraer, soltar, guardar). | path? mode , ¿ stashRef? ¿ message? |
git_status | Obtiene el estado del repositorio (rama, preparado, modificado, archivos no rastreados). | path? |
git_tag | Administra etiquetas (lista, crear anotadas/ligeras, eliminar). | path? mode ?, tagName? ¿ message? ¿ commitRef? ¿ annotate? |
git_worktree | Administra árboles de trabajo de Git (enumerar, agregar, eliminar, mover, podar). | path? ?, mode , worktreePath? ¿ commitish? newBranch? ¿ force? ¿ detach? ¿ newPath? verbose? ¿ dryRun? expire? |
Nota: El parámetro path
para la mayoría de las herramientas tiene como valor predeterminado el directorio de trabajo de la sesión si se configura mediante git_set_working_dir
.
Recursos
Los recursos de MCP no están implementados en esta versión (v2.0.12).
Esta versión se centra en la implementación refactorizada de las herramientas Git, basada en la última mcp-ts-template
y el SDK de MCP v1.12.0. Las funciones de recursos, previamente disponibles, se han eliminado temporalmente durante esta importante actualización.
Si necesita acceso a recursos MCP (por ejemplo, para leer el contenido del archivo directamente a través del servidor), utilice la versión estable v1.2.4 .
Es posible que el desarrollo futuro vuelva a introducir capacidades de recursos en una versión posterior.
Nota: Esta versión (v2.0.0) se centra en la refactorización y actualización de las herramientas principales de Git basadas en el último SDK de MCP. Las funciones de recursos de MCP no están implementadas en esta versión. Para acceder a los recursos, utilice la versión v1.2.4 .
Desarrollo
Construir y probar
Licencia
Este proyecto está licenciado bajo la Licencia Apache 2.0: consulte el archivo de LICENCIA para obtener más detalles.
You must be authenticated.
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Un servidor de protocolo de contexto de modelo que permite que los modelos de lenguaje grandes interactúen con los repositorios de Git a través de una API robusta, que admite operaciones como la inicialización del repositorio, la clonación, el almacenamiento de archivos, la confirmación y la gestión de ramas.
- Tabla de contenido
- Descripción general
- Características
- Instalación
- Configuración
- Estructura del proyecto
- Herramientas
- Recursos
- Desarrollo
- Licencia
Related Resources
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server for Git repository interaction and automation. This server provides tools to read, search, and manipulate Git repositories via Large Language Models.Last updated -1252,147PythonMIT License
- AsecurityFlicenseAqualityA 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 -1JavaScript
- AsecurityAlicenseAqualityA Model Context Protocol server that enables interaction with GitLab accounts to manage repositories, merge requests, code reviews, and CI/CD pipelines through natural language.Last updated -412TypeScriptMIT License
- AsecurityAlicenseAqualityA Model Context Protocol server that helps large language models process code repositories by providing file tree generation, code merging, and code analysis capabilities.Last updated -314JavaScriptMIT License