Skip to main content
Glama
PedroValve7

UiPath Orchestrator MCP Server

by PedroValve7
README.md
# Servidor MCP para UiPath Orchestrator

Este servidor conecta un cliente MCP (como Claude) con **UiPath Orchestrator**
para poder listar carpetas, procesos, robots y trabajos, y disparar la
ejecución de un proceso — todo en lenguaje natural.

⚠️ **Aclaración importante:** esto habla con *Orchestrator* (la parte cloud
que gestiona y dispara robots), **no con UiPath Studio**. Studio, el programa
donde diseñas el workflow, no tiene una API para esto — por eso el primer
paso es tener una cuenta de Orchestrator, aunque sea gratis.

---

## Paso 1 — Crear una cuenta gratis de Orchestrator (Community Edition)

Si ya usas UiPath Studio local, probablemente iniciaste sesión con una cuenta
de UiPath — esa misma cuenta ya te da acceso a un Orchestrator gratis en la nube:

1. Entra a **https://cloud.uipath.com** e inicia sesión (o "Sign Up" si nunca
   te registraste — es gratis, plan **Community**).
2. Una vez adentro, verás la URL con el nombre de tu organización, algo así:
   `https://cloud.uipath.com/TU_ORGANIZACION/DefaultTenant/orchestrator_/...`
   Ese `TU_ORGANIZACION` es tu `UIPATH_ORG_NAME`.
3. (Opcional pero recomendado para probar) Desde Studio, publica tu proceso
   piloto a Orchestrator: **Design → Publish → Orchestrator**. Así vas a tener
   al menos un proceso real para listar y ejecutar.

## Paso 2 — Crear una External Application (credenciales OAuth2)

Esto es lo que te da el `client_id` y `client_secret` para que el servidor
se autentique sin usar tu usuario/contraseña.

1. En Orchestrator, ve a **Admin → External Applications** (o busca
   "External Applications" en el buscador de la interfaz).
2. Click en **Add Application**.
3. Tipo de aplicación: **Confidential Application**.
4. En **Scopes**, agrega el scope de Orchestrator `OR.Default` con permisos
   de al menos: `Folders.Read`, `Releases.Read`, `Jobs.Read`, `Jobs.Create`,
   `Robots.Read` (puedes marcar más si quieres, pero con esto alcanza para
   el piloto).
5. Guarda y copia el **App ID** (`client_id`) y el **App Secret**
   (`client_secret`) — el secret solo se muestra una vez.
6. Verifica que esa aplicación tenga un **rol asignado** (ej. "Automation
   User") en la carpeta donde publicaste tu proceso: **Manage Access** dentro
   de esa carpeta → asignar la external app.

## Paso 3 — Configurar el proyecto

```bash
cd uipath-mcp-server
python3 -m venv .venv
source .venv/bin/activate        # En Windows: .venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
```

Abre `.env` y completa `UIPATH_ORG_NAME`, `UIPATH_CLIENT_ID` y
`UIPATH_CLIENT_SECRET` con lo que copiaste en el Paso 2.

## Paso 4 — Probar localmente (sin conectarlo a Claude todavía)

La forma más rápida de verificar que todo funciona es con el **MCP
Inspector**, una interfaz web que viene incluida:

```bash
mcp dev server.py
```

Esto abre un enlace local en tu navegador donde puedes:
- Ver las 5 herramientas disponibles (`listar_carpetas`, `listar_procesos`, etc.)
- Ejecutarlas manualmente con botones y ver la respuesta cruda del API

Empieza siempre por **`listar_carpetas`** — de ahí sacas el `folder_id` que
piden las demás herramientas.

Si algo falla, el mensaje de error te va a decir si el problema fue en la
**autenticación** (revisa client_id/secret) o en la **API** (revisa que la
external app tenga el rol asignado en esa carpeta).

## Paso 5 — Conectarlo a Claude Desktop (opcional, uso local)

Si usas la app de escritorio de Claude, puedes registrarlo directamente:

```bash
mcp install server.py --name "UiPath Orchestrator" --env-file .env
```

Esto lo agrega a la configuración de Claude Desktop automáticamente, junto con tus
variables de entorno del `.env`.

## Paso 6 — Conectarlo a Claude en el navegador (URL pública)

El campo "Servidores MCP" que viste en la web de Claude pide una **URL
pública** (no `localhost`). Eso requiere desplegar este servidor en algún
lugar accesible por internet (un VPS, Render, Railway, etc.) usando
transporte SSE/HTTP en vez de stdio. Es un paso aparte, con sus propias
consideraciones de seguridad (no vas a querer exponer tu Orchestrator sin
protección) — armamos eso cuando hayas probado que todo funciona local.

## Herramientas incluidas

| Herramienta | Qué hace |
|---|---|
| `listar_carpetas` | Lista las carpetas del Orchestrator (punto de partida) |
| `listar_procesos(folder_id)` | Lista procesos publicados en una carpeta |
| `listar_robots(folder_id)` | Lista robots de una carpeta |
| `listar_trabajos(folder_id, top)` | Lista los últimos trabajos (jobs) |
| `iniciar_trabajo(folder_id, release_key)` | Dispara la ejecución de un proceso |