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 |
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues