Skip to main content

MCP Server para interactuar con RhodeCode API - Gestión de repositorios y Pull Requests

Project description

Servidor MCP para RhodeCode

Servidor MCP (Model Context Protocol) que proporciona herramientas para interactuar con la API de RhodeCode.

Configuración

Variables de Entorno

Antes de ejecutar el servidor, configura las siguientes variables de entorno:

# Windows PowerShell
$env:RC_API_URL = "https://tu-instancia.rhodecode.com/_admin/api"
$env:RC_API_TOKEN = "tu_token_de_autenticacion"
$env:RC_TIMEOUT_MS = "8000"  # Opcional, default: 8000
# Linux/macOS
export RC_API_URL="https://tu-instancia.rhodecode.com/_admin/api"
export RC_API_TOKEN="tu_token_de_autenticacion"
export RC_TIMEOUT_MS="8000"  # Opcional, default: 8000

Instalación de Dependencias

Crea un entorno virtual e instala las dependencias:

# Crear entorno virtual
py -3 -m venv .venv

# Activar entorno virtual (PowerShell)
. .\.venv\Scripts\Activate.ps1

# Instalar dependencias
pip install fastmcp requests

Ejecución

python MCPserver.py

El servidor se iniciará en http://0.0.0.0:8000

Pruebas con Cliente

Se incluye un cliente de prueba (client.py) para verificar que todas las herramientas funcionen:

# Pruebas básicas
python client.py

# Pruebas completas con un repositorio existente
python client.py --repo mi-repositorio

# Ver todas las opciones
python client.py --help

Consulta CLIENT_README.md para más detalles sobre el cliente de pruebas.

Herramientas Implementadas

Gestión de Repositorios

1. get_repos

Obtiene la lista de todos los repositorios con filtros opcionales.

Parámetros:

  • root (string, opcional): Nombre del grupo raíz para filtrar
  • traverse (boolean, opcional): Si atravesar subgrupos (default: True)

Ejemplo de uso:

{
  "root": "proyecto-x",
  "traverse": true
}

2. get_repo

Obtiene información detallada de un repositorio específico.

Parámetros:

  • repoid (string, requerido): Nombre o ID del repositorio
  • cache (boolean, opcional): Usar caché (default: True)

Ejemplo:

{
  "repoid": "mi-repositorio"
}

3. create_repo

Crea un nuevo repositorio.

Parámetros requeridos:

  • repo_name (string): Nombre del repositorio (puede incluir grupos con /)
  • repo_type (string): Tipo de repo: hg, git, o svn

Parámetros opcionales:

  • owner (string): Usuario propietario
  • description (string): Descripción
  • private (boolean): Si es privado
  • clone_uri (string): URI para clonar
  • push_uri (string): URI para push
  • landing_rev (string): Revisión de aterrizaje (ej: branch:default)
  • enable_statistics (boolean)
  • enable_locking (boolean)
  • enable_downloads (boolean)
  • copy_permissions (boolean)

Ejemplo:

{
  "repo_name": "proyectos/mi-nuevo-repo",
  "repo_type": "git",
  "description": "Mi nuevo repositorio",
  "private": true
}

4. update_repo

Actualiza la configuración de un repositorio existente.

Parámetros:

  • repoid (string, requerido): Nombre o ID del repositorio
  • Todos los parámetros de create_repo son opcionales para actualizar

Ejemplo:

{
  "repoid": "mi-repositorio",
  "description": "Nueva descripción",
  "private": false
}

5. delete_repo

Elimina un repositorio.

Parámetros:

  • repoid (string, requerido): Nombre o ID del repositorio
  • forks (string, opcional): detach o delete para manejar forks

Ejemplo:

{
  "repoid": "repo-obsoleto",
  "forks": "detach"
}

6. fork_repo

Crea un fork de un repositorio existente.

Parámetros requeridos:

  • repoid (string): Repositorio a bifurcar
  • fork_name (string): Nombre del fork

Parámetros opcionales:

  • owner, description, private, clone_uri, landing_rev, copy_permissions

Ejemplo:

{
  "repoid": "repositorio-original",
  "fork_name": "mi-fork/repositorio-fork",
  "description": "Mi fork para desarrollo"
}

Información de Repositorios

7. get_repo_refs

Obtiene branches, tags, bookmarks del repositorio.

Parámetros:

  • repoid (string, requerido)

Retorna:

  • bookmarks: Diccionario de bookmarks
  • branches: Diccionario de branches
  • branches_closed: Branches cerradas
  • tags: Diccionario de tags

8. get_repo_nodes

Lista archivos y directorios en una ruta específica.

Parámetros:

  • repoid (string, requerido)
  • revision (string, requerido): Revisión (ej: tip, hash, branch)
  • root_path (string, requerido): Ruta (ej: /, src/)
  • ret_type (string, opcional): all, files, dirs
  • details (string, opcional): basic, full
  • max_file_bytes (integer, opcional)

9. get_repo_file

Obtiene el contenido de un archivo específico.

Parámetros:

  • repoid (string, requerido)
  • commit_id (string, requerido)
  • file_path (string, requerido)
  • max_file_bytes (integer, opcional)
  • details (string, opcional): minimal, basic, full
  • cache (boolean, opcional)

10. get_repo_changeset

Información de un commit específico.

Parámetros:

  • repoid (string, requerido)
  • revision (string, requerido)
  • details (string, opcional): basic, extended, full

11. get_repo_changesets

Obtiene un conjunto de commits.

Parámetros:

  • repoid (string, requerido)
  • start_rev (string, requerido)
  • limit (integer, requerido)
  • details (string, opcional): basic, extended, full

Operaciones de Repositorio

12. invalidate_cache

Invalida el caché de un repositorio.

Parámetros:

  • repoid (string, requerido)
  • delete_keys (boolean, opcional): Eliminar claves (default: False)

13. lock_repo

Bloquea o desbloquea un repositorio.

Parámetros:

  • repoid (string, requerido)
  • locked (boolean, opcional): True para bloquear, False para desbloquear
  • userid (string, opcional): Usuario que establece el bloqueo

Sin especificar locked, muestra el estado actual del bloqueo.

14. pull_repo

Ejecuta pull desde una ubicación remota.

Parámetros:

  • repoid (string, requerido)
  • remote_uri (string, opcional): URI remota

15. maintenance

Ejecuta tareas de mantenimiento en el repositorio.

Parámetros:

  • repoid (string, requerido)

Pull Requests

16. create_pr

Crea un Pull Request.

Parámetros:

  • repo_name (string, requerido)
  • source_ref (string, requerido)
  • target_ref (string, requerido)
  • title (string, requerido)
  • description (string, opcional)

Recursos

repos_list

Resource que proporciona una lista normalizada de repositorios.

Estructura del Proyecto

MCPRhodecode/
├── MCPserver.py          # Servidor MCP principal
├── client.py             # Cliente de prueba
├── README.md             # Esta documentación
├── CLIENT_README.md      # Documentación del cliente
├── RESUMEN.md            # Resumen de implementación
├── ejemplos_uso.py       # Ejemplos de uso de las tools
├── requirements.txt      # Dependencias Python
├── .env.example          # Plantilla de configuración
├── .gitignore            # Exclusiones Git
└── .venv/                # Entorno virtual (no incluir en git)

Notas Importantes

  1. Autenticación: Necesitas un token de autenticación válido de RhodeCode con permisos adecuados.

  2. Permisos: Cada operación requiere permisos específicos:

    • Lectura de repos: permisos de lectura
    • Crear repos: permisos de creación
    • Eliminar/actualizar: permisos de admin en el repo
    • Fork: permisos de lectura en el repo original
  3. Grupos de repositorios: Puedes usar / en los nombres para crear repos dentro de grupos:

    • mi-proyecto/backend/api creará el repo api dentro de mi-proyecto/backend
    • Necesitas permisos de escritura en el último grupo
  4. Tareas asíncronas: Algunas operaciones (como create_repo, fork_repo) pueden ejecutarse de forma asíncrona y retornar un task ID.

Referencias

Licencia

Este proyecto es de código abierto. Úsalo según tus necesidades.

Autor

Bruno Izaguirre Martinez de marañon

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rhodecode_mcp_server-1.0.13.tar.gz (32.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rhodecode_mcp_server-1.0.13-py3-none-any.whl (13.4 kB view details)

Uploaded Python 3

File details

Details for the file rhodecode_mcp_server-1.0.13.tar.gz.

File metadata

  • Download URL: rhodecode_mcp_server-1.0.13.tar.gz
  • Upload date:
  • Size: 32.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for rhodecode_mcp_server-1.0.13.tar.gz
Algorithm Hash digest
SHA256 bdf44fe2c38f002f380830f1d5e22602f7d42f6f5ee73f2ec89f77b856cd03dd
MD5 884fa7c1280eac94b061df2cb1765efc
BLAKE2b-256 4462a9726faa9a1dd7cdf23c2d2326919b852c01af23cbd1147b8fb163a672fd

See more details on using hashes here.

File details

Details for the file rhodecode_mcp_server-1.0.13-py3-none-any.whl.

File metadata

File hashes

Hashes for rhodecode_mcp_server-1.0.13-py3-none-any.whl
Algorithm Hash digest
SHA256 bae9822dea6628a25dde380fec1bf5c2d64c72248aabbe40392d784da1932a6f
MD5 4513cd0575be272bca68a994085be1a9
BLAKE2b-256 45a9f5349c72c458f4e489167a5d2242c3d7d87f387723c21a570b9dea364868

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page