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.

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.7.tar.gz (30.4 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.7-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rhodecode_mcp_server-1.0.7.tar.gz
  • Upload date:
  • Size: 30.4 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.7.tar.gz
Algorithm Hash digest
SHA256 22a832cdb2ef710e117322009dafc05466fab4b5a5894cc8f34d91ed3c789513
MD5 156e4aa663da39cbd5317c70babb6555
BLAKE2b-256 488dd13548ef6a34c28d49966149cd9db54af784f28a384e270c91929fda6ac8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rhodecode_mcp_server-1.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 94b9aaec789976fc7ce091e19fca1a19e7a98cf181579b5f7d01e5e72f4913c6
MD5 347932f3e04d00c5f01ced799cfb6ead
BLAKE2b-256 39851983d5b5da400a0a5def5386da5bef063aa62beccf33663dbb86f151b685

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