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:
75
mcp-server/README.md
Normal file
75
mcp-server/README.md
Normal 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.
|
||||
Reference in New Issue
Block a user