zyta-expedientes-mcp
# zyta-expedientes-mcp (Clio)
Servidor MCP (stdio) para **Clio** (Expedientes): portales judiciales (PJN, MEV, CABA) y causas sin portal.
## Arquitectura
| Componente | Rol |
|------------|-----|
| **Zyta-be** | Login JWT, device flow OAuth, perfil usuario |
| **expedientes-api** | Portales, listado, sync, CRUD causas sin portal, actuaciones cursor |
| **Zyta-expedientes** (web) | Página `/mcp-device` para autorizar el agente |
El MCP autentica contra **Zyta-be** y consulta **expedientes-api** con el mismo Bearer JWT.
## Configuración en Cursor
```json
{
"mcpServers": {
"zyta-expedientes": {
"command": "npx",
"args": ["-y", "zyta-expedientes-mcp@latest"],
"env": {
"ZYTA_API_BASE_URL": "http://localhost:3333",
"EXPEDIENTES_API_BASE_URL": "http://localhost:8788",
"ZYTA_EXPEDIENTES_APP_URL": "http://localhost:8892"
}
}
}
}
```
En producción:
```env
ZYTA_API_BASE_URL=https://zyta-be-production.up.railway.app
EXPEDIENTES_API_BASE_URL=https://zyta-expedientes-api-production.up.railway.app
ZYTA_EXPEDIENTES_APP_URL=https://dashboard.zyta.app
```
Opcional en Railway (Zyta-be): `MCP_DEVICE_VERIFICATION_BASE_URL=https://dashboard.zyta.app`
## Herramientas
| Tool | Descripción |
|------|-------------|
| `zyta_expedientes_login` | Device flow / email / token manual |
| `zyta_expedientes_disconnect` | Cierra sesión del agente |
| `zyta_expedientes_whoami` | Usuario actual |
| `zyta_expedientes_auth_status` | Estado + URLs |
| `zyta_expedientes_portales_status` | PJN / MEV / CABA / INPI conectados |
| `zyta_expedientes_list` | Listar expedientes (filtro por portal) |
| `zyta_expedientes_get` | Leer detalle + actuaciones |
| `zyta_expedientes_create` | Crear causa sin portal |
| `zyta_expedientes_update` | Editar causa sin portal (+ seguimiento opcional) |
| `zyta_expedientes_delete` | Borrar causa sin portal |
| `zyta_expedientes_sync` | Sincronizar portales (sin credenciales) |
| `zyta_expedientes_registrar_actuacion` | Actuación en causa sin portal |
| `zyta_expedientes_honorarios_list` | Honorarios del expediente |
| `zyta_expedientes_honorarios_create` | Alta de honorarios |
| `zyta_expedientes_honorarios_update` | Actualizar honorario |
| `zyta_expedientes_honorarios_delete` | Borrar honorario |
| `zyta_expedientes_tareas_list` | Vencimientos/tareas |
| `zyta_expedientes_tareas_create` | Nueva tarea |
| `zyta_expedientes_tareas_update` | Actualizar tarea |
| `zyta_expedientes_tareas_delete` | Borrar tarea |
| `zyta_expedientes_alertas_list` | Alarmas |
| `zyta_expedientes_alertas_create` | Nueva alarma |
| `zyta_expedientes_alertas_update` | Actualizar alarma |
| `zyta_expedientes_alertas_delete` | Borrar alarma |
Token persistido en `~/.zyta-expedientes-mcp/token`.
## Desarrollo local
```bash
cd Zyta/zyta-expedientes-mcp
npm install
npm run build
npm run dev
```
Smoke test:
1. Levantá Zyta-be, expedientes-api y Zyta-expedientes
2. En Cursor: `zyta_expedientes_login` → autorizá en http://localhost:8892/mcp-device
3. `zyta_expedientes_auth_status` → `hasToken: true`
4. `zyta_expedientes_portales_status`
## Probar el stack completo
Sí, hay que probar los tres servicios juntos:
```bash
# Terminal 1 — monolito (auth)
cd BE/Zyta-be && npm run start:dev
# Terminal 2 — microservicio expedientes
cd Zyta/expedientes-api && npm run dev
# Terminal 3 — front
cd Zyta/Zyta-expedientes && npm run dev
# Terminal 4 — MCP (via Cursor o)
cd Zyta/zyta-expedientes-mcp && npm run dev
```
Sin proxy en Zyta-be todavía, el front y el MCP apuntan **directo** a cada API por URL.
TDQS
Scored across 24 tools
Each tool targets a distinct resource-action pair (e.g., alertas_create vs. alertas_delete). The CRUD groups for expedientes, alertas, honorarios, and tareas are clearly separated, and authentication and status tools are unique.
All tool names follow the pattern zyta_expedientes_<resource>_<action>, with consistent use of snake_case and verb_noun ordering. The only minor variation is registrar_actuacion, which still fits the overall convention.
24 tools is slightly above the typical 3-15 range but still reasonable for a comprehensive legal case management system covering CRUD for multiple sub-resources plus authentication and synchronization. Each tool has a clear purpose.
The tool set covers full CRUD for expedientes, alertas, honorarios, and tareas, plus authentication, portal status, and sync. Minor gaps like document attachment might exist, but core workflows are well-covered.