feat(mcp): servidor MCP para controlar la app desde agentes

Nuevo paquete en mcp-server/ (TypeScript SDK, stdio) que envuelve la API HTTP de Story Studio
y expone 36 tools con prefijo story_ para conducir todo el pipeline: proyectos, idea motriz,
personajes (+assets de imagen), capítulos, guión, pre-escaleta, escaleta, prompts, fondos,
imágenes, vídeos y render. Base URL configurable via STORY_STUDIO_URL (default localhost:3000).

Excluido del build de Next (.dockerignore) — es una herramienta aparte, no se despliega con la app.
Verificado end-to-end contra la app desplegada (list_projects, get_idea_motriz).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Carlos Narro
2026-08-13 02:55:16 +02:00
parent 2c08d47a0f
commit 5aa5129865
9 changed files with 2452 additions and 0 deletions

75
mcp-server/README.md Normal file
View File

@@ -0,0 +1,75 @@
# Story Studio MCP Server
Servidor **MCP** (Model Context Protocol) para controlar [Story Studio](https://story-studio.carlosnarro.com) desde agentes: crear proyectos y conducir todo el pipeline de producción de series animadas IA (idea motriz → personajes → capítulos → guión → escaleta → prompts → fondos → imágenes → vídeos → render).
Envuelve la **API HTTP** de la app; no accede a la BD directamente.
## Requisitos
- Node.js ≥ 18
- Una instancia de Story Studio accesible (local en `npm run dev`, o la desplegada).
## Instalar y compilar
```bash
cd mcp-server
npm install
npm run build # genera dist/
```
## Configuración
| Variable | Default | Descripción |
|----------|---------|-------------|
| `STORY_STUDIO_URL` | `http://localhost:3000` | Base URL de la app. Local: `http://localhost:3000`. Prod: `https://story-studio.carlosnarro.com`. |
> La app **no tiene autenticación**; el server hereda ese modelo. Apunta `STORY_STUDIO_URL` al entorno que quieras controlar.
## Uso con Claude Code / clientes MCP
Transporte **stdio**. Ejemplo de registro (`.mcp.json` o config del cliente):
```json
{
"mcpServers": {
"story-studio": {
"command": "node",
"args": ["C:/Users/carlo/Proyectos/story-studio/mcp-server/dist/index.js"],
"env": { "STORY_STUDIO_URL": "http://localhost:3000" }
}
}
}
```
O en desarrollo con recarga: `command: "npx"`, `args: ["tsx", ".../src/index.ts"]`.
## Herramientas
Prefijo `story_`. Lectura (`readOnlyHint`) vs generación (efectos, LLM/imagen/vídeo).
**Proyecto e idea**: `story_list_projects`, `story_get_project`, `story_create_project`,
`story_get_idea_motriz`, `story_generate_idea_motriz`, `story_refine_idea_motriz`.
**Personajes**: `story_get_personajes`, `story_generate_personajes`, `story_add_personaje`,
`story_improve_personajes`, y assets de imagen: `story_get_character_assets`,
`story_generate_asset_prompts`, `story_generate_base_image`, `story_lock_base_image`,
`story_generate_all_variations`.
**Capítulo y pipeline**: `story_list_capitulos`, `story_create_capitulo`,
`story_get_guion` / `story_generate_guion`,
`story_get_pre_escaleta` / `story_generate_pre_escaleta`,
`story_get_escaleta` / `story_generate_escaleta`,
`story_get_prompts` / `story_generate_prompts`,
`story_get_fondos` / `story_refresh_fondos` / `story_generate_fondo` / `story_generate_all_fondos`,
`story_get_imagenes` / `story_generate_plano_image` / `story_generate_all_images`,
`story_get_videos` / `story_generate_plano_video`,
`story_render_chapter` / `story_get_render_status`.
## Orden típico del pipeline
1. `story_create_project``story_generate_idea_motriz``story_generate_personajes`
2. (opcional) assets de personaje: `story_generate_asset_prompts``story_generate_base_image``story_lock_base_image``story_generate_all_variations`
3. `story_create_capitulo``story_generate_guion``story_generate_pre_escaleta``story_generate_escaleta``story_generate_prompts`
4. `story_refresh_fondos``story_generate_all_fondos``story_generate_all_images``story_generate_plano_video``story_render_chapter`
Las tools de generación pueden tardar (LLM/imagen); el server usa timeouts amplios.