Git

Herramientas para leer, buscar y manipular repositorios Git.

Documentación

mcp-server-git: Un servidor MCP de Git

Descripción general

Un servidor de Protocolo de Contexto de Modelos (MCP) para la interacción y automatización de repositorios Git. Este servidor proporciona herramientas para leer, buscar y manipular repositorios Git mediante Modelos de Lenguaje de Gran Tamaño.

Fuente: https://github.com/modelcontextprotocol/servers/tree/main/src/git

Requiere MCP Python SDK 1.x (mcp>=1.29.0,<2). El SDK 2.0 renombró las APIs que este servidor utiliza. La migración a v2 está en curso.

Ten en cuenta que mcp-server-git se encuentra actualmente en desarrollo temprano. La funcionalidad y las herramientas disponibles están sujetas a cambios y expansión a medida que continuamos desarrollando y mejorando el servidor.

Herramientas

  1. git_status

    • Muestra el estado del árbol de trabajo
    • Entrada:
      • repo_path (cadena): Ruta al repositorio Git
    • Devuelve: Estado actual del directorio de trabajo como salida de texto
  2. git_diff_unstaged

    • Muestra los cambios en el directorio de trabajo que aún no están preparados
    • Entradas:
      • repo_path (cadena): Ruta al repositorio Git
      • context_lines (número, opcional): Número de líneas de contexto a mostrar (predeterminado: 3)
    • Devuelve: Salida de diff de los cambios no preparados
  3. git_diff_staged

    • Muestra los cambios que están preparados para confirmar
    • Entradas:
      • repo_path (cadena): Ruta al repositorio Git
      • context_lines (número, opcional): Número de líneas de contexto a mostrar (predeterminado: 3)
    • Devuelve: Salida de diff de los cambios preparados
  4. git_diff

    • Muestra las diferencias entre ramas o confirmaciones
    • Entradas:
      • repo_path (cadena): Ruta al repositorio Git
      • target (cadena): Rama o confirmación de destino para comparar
      • context_lines (número, opcional): Número de líneas de contexto a mostrar (predeterminado: 3)
    • Devuelve: Salida de diff comparando el estado actual con el destino
  5. git_commit

    • Registra cambios en el repositorio
    • Entradas:
      • repo_path (cadena): Ruta al repositorio Git
      • message (cadena): Mensaje de confirmación
    • Devuelve: Confirmación con el nuevo hash de confirmación
  6. git_add

    • Añade el contenido de archivos al área de preparación
    • Entradas:
      • repo_path (cadena): Ruta al repositorio Git
      • files (cadena[]): Matriz de rutas de archivos a preparar
    • Devuelve: Confirmación de los archivos preparados
  7. git_reset

    • Deshace la preparación de todos los cambios preparados
    • Entrada:
      • repo_path (cadena): Ruta al repositorio Git
    • Devuelve: Confirmación de la operación de reinicio
  8. git_log

    • Muestra los registros de confirmaciones con filtrado de fechas opcional
    • Entradas:
      • repo_path (cadena): Ruta al repositorio Git
      • max_count (número, opcional): Número máximo de confirmaciones a mostrar (predeterminado: 10)
      • start_timestamp (cadena, opcional): Marca de tiempo de inicio para filtrar confirmaciones. Acepta formato ISO 8601 (por ejemplo, '2024-01-15T14:30:25'), fechas relativas (por ejemplo, 'hace 2 semanas', 'ayer') o fechas absolutas (por ejemplo, '2024-01-15', '15 ene 2024')
      • end_timestamp (cadena, opcional): Marca de tiempo de fin para filtrar confirmaciones. Acepta formato ISO 8601 (por ejemplo, '2024-01-15T14:30:25'), fechas relativas (por ejemplo, 'hace 2 semanas', 'ayer') o fechas absolutas (por ejemplo, '2024-01-15', '15 ene 2024')
    • Devuelve: Matriz de entradas de confirmación con hash, autor, fecha y mensaje
  9. git_create_branch

    • Crea una nueva rama
    • Entradas:
      • repo_path (cadena): Ruta al repositorio Git
      • branch_name (cadena): Nombre de la nueva rama
      • base_branch (cadena, opcional): Rama base desde la que crear (por defecto, la rama actual)
    • Devuelve: Confirmación de la creación de la rama
  10. git_checkout

  • Cambia de rama
  • Entradas:
    • repo_path (cadena): Ruta al repositorio Git
    • branch_name (cadena): Nombre de la rama a la que cambiar
  • Devuelve: Confirmación del cambio de rama
  1. git_show
  • Muestra el contenido de una confirmación
  • Entradas:
    • repo_path (cadena): Ruta al repositorio Git
    • revision (cadena): La revisión (hash de confirmación, nombre de rama, etiqueta) a mostrar
  • Devuelve: Contenido de la confirmación especificada
  1. git_branch
  • Lista las ramas de Git
  • Entradas:
    • repo_path (cadena): Ruta al repositorio Git.
    • branch_type (cadena): Si listar ramas locales ('local'), ramas remotas ('remote') o todas las ramas ('all').
    • contains (cadena, opcional): El hash de confirmación que la rama debe contener. No pases nada a este parámetro si no se especifica un hash de confirmación
    • not_contains (cadena, opcional): El hash de confirmación que la rama NO debe contener. No pases nada a este parámetro si no se especifica un hash de confirmación
  • Devuelve: Lista de ramas

Instalación

Usando uv (recomendado)

Cuando se usa uv no se necesita ninguna instalación específica. Usaremos uvx para ejecutar directamente mcp-server-git.

Usando PIP

Alternativamente, puedes instalar mcp-server-git mediante pip:

pip install mcp-server-git

Después de la instalación, puedes ejecutarlo como un script usando:

python -m mcp_server_git

Configuración

Uso con Claude Desktop

Añade esto a tu claude_desktop_config.json:

Usando uvx
"mcpServers": {
  "git": {
    "command": "uvx",
    "args": ["mcp-server-git", "--repository", "path/to/git/repo"]
  }
}
Usando docker
  • Nota: reemplaza '/Users/username' con una ruta a la que quieras que esta herramienta tenga acceso
"mcpServers": {
  "git": {
    "command": "docker",
    "args": ["run", "--rm", "-i", "--mount", "type=bind,src=/Users/username,dst=/Users/username", "mcp/git"]
  }
}
Usando instalación con pip
"mcpServers": {
  "git": {
    "command": "python",
    "args": ["-m", "mcp_server_git", "--repository", "path/to/git/repo"]
  }
}

Uso con VS Code

Para una instalación rápida, usa uno de los botones de instalación con un clic a continuación...

Install with UV in VS Code Install with UV in VS Code Insiders

Install with Docker in VS Code Install with Docker in VS Code Insiders

Para la instalación manual, puedes configurar el servidor MCP usando uno de estos métodos:

Método 1: Configuración de usuario (recomendado) Añade la configuración a tu archivo de configuración MCP a nivel de usuario. Abre la Paleta de Comandos (Ctrl + Shift + P) y ejecuta MCP: Open User Configuration. Esto abrirá tu archivo mcp.json de usuario donde puedes añadir la configuración del servidor.

Método 2: Configuración del espacio de trabajo Alternativamente, puedes añadir la configuración a un archivo llamado .vscode/mcp.json en tu espacio de trabajo. Esto te permitirá compartir la configuración con otros.

Para más detalles sobre la configuración de MCP en VS Code, consulta la documentación oficial de MCP de VS Code.

{
  "servers": {
    "git": {
      "command": "uvx",
      "args": ["mcp-server-git"]
    }
  }
}

Para la instalación con Docker:

{
  "mcp": {
    "servers": {
      "git": {
        "command": "docker",
        "args": [
          "run",
          "--rm",
          "-i",
          "--mount", "type=bind,src=${workspaceFolder},dst=/workspace",
          "mcp/git"
        ]
      }
    }
  }
}

Uso con Zed

Añade a tu settings.json de Zed:

Usando uvx
"context_servers": [
  "mcp-server-git": {
    "command": {
      "path": "uvx",
      "args": ["mcp-server-git"]
    }
  }
],
Usando instalación con pip
"context_servers": {
  "mcp-server-git": {
    "command": {
      "path": "python",
      "args": ["-m", "mcp_server_git"]
    }
  }
},

Uso con Zencoder

  1. Ve al menú de Zencoder (...)
  2. En el menú desplegable, selecciona Agent Tools
  3. Haz clic en Add Custom MCP
  4. Añade el nombre (es decir, git) y la configuración del servidor desde abajo, y asegúrate de pulsar el botón Install
Usando uvx
{
    "command": "uvx",
    "args": ["mcp-server-git", "--repository", "path/to/git/repo"]
}

Depuración

Puedes usar el inspector de MCP para depurar el servidor. Para instalaciones con uvx:

npx @modelcontextprotocol/inspector uvx mcp-server-git

O si has instalado el paquete en un directorio específico o estás desarrollando en él:

cd path/to/servers/src/git
npx @modelcontextprotocol/inspector uv run mcp-server-git

Ejecutar tail -n 20 -f ~/Library/Logs/Claude/mcp*.log mostrará los registros del servidor y puede ayudarte a depurar cualquier problema.

Desarrollo

Si estás haciendo desarrollo local, hay dos formas de probar tus cambios:

  1. Ejecuta el inspector de MCP para probar tus cambios. Consulta Depuración para las instrucciones de ejecución.

  2. Prueba usando la aplicación de escritorio de Claude. Añade lo siguiente a tu claude_desktop_config.json:

Docker

{
  "mcpServers": {
    "git": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--mount", "type=bind,src=/Users/username/Desktop,dst=/projects/Desktop",
        "--mount", "type=bind,src=/path/to/other/allowed/dir,dst=/projects/other/allowed/dir,ro",
        "--mount", "type=bind,src=/path/to/file.txt,dst=/projects/path/to/file.txt",
        "mcp/git"
      ]
    }
  }
}

UVX

{
"mcpServers": {
  "git": {
    "command": "uv",
    "args": [
      "--directory",
      "/<path to mcp-servers>/mcp-servers/src/git",
      "run",
      "mcp-server-git"
    ]
    }
  }
}

Compilación

Compilación de Docker:

cd src/git
docker build -t mcp/git .

Licencia

Este servidor MCP está licenciado bajo la Licencia MIT. Esto significa que eres libre de usar, modificar y distribuir el software, sujeto a los términos y condiciones de la Licencia MIT. Para más detalles, consulta el archivo LICENSE en el repositorio del proyecto.