Servidor
- URL del servidor
https://app.musael.com/api/mcp?lang=es- Transporte
- Streamable HTTP, respuestas JSON sin estado. Envía mensajes JSON-RPC con POST; GET y DELETE responden 405.
- Nombre del servidor
musael
Autenticación
Cada solicitud necesita la cabecera Authorization: Bearer <token>. Sin token, o con uno revocado, caducado o incorrecto, el servidor responde 401 con una cabecera WWW-Authenticate que apunta a sus metadatos de OAuth.
Inicio de sesión con OAuth
Para ChatGPT, Claude, Cursor, VS Code y otros clientes que se conectan iniciando sesión. El cliente descubre todo a partir de la respuesta 401, siguiendo la especificación de autorización de MCP:
- Metadatos del recurso protegido (RFC 9728):
https://app.musael.com/.well-known/oauth-protected-resource/api/mcp - Metadatos del servidor de autorización (RFC 8414):
https://app.musael.com/.well-known/oauth-authorization-server - Registro dinámico de clientes (RFC 7591): solo clientes públicos, sin secreto; direcciones de redirección en HTTPS, HTTP solo en loopback, o un esquema de app.
- Código de autorización con PKCE (solo S256). El escritor inicia sesión, elige Solo lectura o Leer y añadir y los proyectos, y luego permite o cancela.
- Los tokens de acceso duran una hora; los tokens de actualización duran 90 días y cambian en cada uso.
- Ámbitos: read y suggest (se muestran al escritor como Leer y añadir).
Token de acceso personal
Para clientes configurados a mano, como Codex, Claude Code o un script. El escritor crea el token en Musael, en Ajustes → Apps conectadas, eligiendo un nombre, los proyectos, el acceso y cuándo caduca.
- Los tokens empiezan por sti_ y se muestran una sola vez; Musael solo guarda un hash de ellos.
- Una cuenta puede tener hasta 20 tokens activos. Revocar desactiva un token de inmediato.
- Envíalo en la cabecera Authorization. Nunca lo pongas en la URL.
Acceso y límites
- Cada llamada actúa como el escritor que se conectó, dentro del acceso que tenga en ese momento, sobre los proyectos elegidos para la conexión.
- Ninguna herramienta modifica ni borra el texto del escritor. Las herramientas que añaden crean actos, capítulos, escenas o entradas del Mundo nuevos; suggest_edit deja una propuesta que el escritor acepta o rechaza en Musael.
- Todas las herramientas aparecen siempre en la lista. Una herramienta que el plan o la conexión no permiten responde con el motivo y no hace nada.
- Hasta 300 llamadas cada cinco minutos por token. Las respuestas de más de 200.000 caracteres se cortan, con una nota para leer un capítulo o una escena cada vez.
Herramientas
15 herramientas. Leer el texto del libro y proponer cambios están incluidos en el plan Press.
| Herramienta | Qué hace | Plan | Acceso |
|---|---|---|---|
list_projects | Los proyectos que esta conexión puede ver, con su espacio de trabajo, el rol del escritor, las escenas y el último cambio. Úsala primero: todas las demás herramientas necesitan un id de proyecto. | Todos los planes | Lectura |
get_profile | La cuenta de Musael conectada: un id que nunca cambia, el nombre y el correo electrónico. | Todos los planes | Lectura |
get_outline | La estructura de un proyecto: libros, actos, capítulos con sinopsis, escenas en orden de lectura con estado, PDV y palabras, y las tareas abiertas. | Todos los planes | Lectura |
create_project | Un proyecto nuevo a partir de una idea, con actos, capítulos, escenas vacías con sinopsis y entradas del Mundo. | Todos los planes | Leer y añadir |
add_to_plan | Actos, capítulos y escenas nuevos en un proyecto existente. | Todos los planes | Leer y añadir |
add_world_entries | Personajes, lugares, objetos y facciones nuevos. Un nombre que ya existe se deja como está. | Todos los planes | Leer y añadir |
read_scene | Una escena en Markdown, con su capítulo, estado, PDV, lugar y sinopsis. | Press | Lectura |
read_chapter | Todas las escenas de un capítulo, en orden, en Markdown. | Press | Lectura |
search_project | Palabras en las escenas y en el Mundo, con fragmentos breves. | Press | Lectura |
list_world | Las entradas del Mundo por tipo, con otros nombres, etiquetas y el comienzo de sus notas. | Press | Lectura |
get_world_entry | Una entrada del Mundo completa: notas, relaciones, datos registrados y las escenas que la mencionan. | Press | Lectura |
get_timeline | Los eventos del Mundo en el orden de la historia, con la escena que muestra cada uno, marcando los que se cuentan fuera de orden. | Press | Lectura |
get_style_report | El informe de estilo de la app sobre una escena, hecho con reglas fijas, sin IA. | Press | Lectura |
get_reader_stats | Los lectores del libro publicado capítulo a capítulo, para el propietario y los editores. | Press | Lectura |
suggest_edit | Una propuesta de sustitución para un pasaje, o un comentario sobre él. El texto solo cambia si el escritor lo acepta. | Press | Leer y añadir |
Desplázate hacia los lados para ver toda la tabla.
Ejemplos
Define MUSAEL_TOKEN con un token de acceso personal. Tras initialize, envía notifications/initialized y luego lista o llama a las herramientas.
Inicializar
curl https://app.musael.com/api/mcp?lang=es \
-H "Authorization: Bearer $MUSAEL_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"example","version":"1.0.0"}}}'Listar las herramientas
curl https://app.musael.com/api/mcp?lang=es \
-H "Authorization: Bearer $MUSAEL_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}'
curl https://app.musael.com/api/mcp?lang=es \
-H "Authorization: Bearer $MUSAEL_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'Llamar a una herramienta
curl https://app.musael.com/api/mcp?lang=es \
-H "Authorization: Bearer $MUSAEL_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"list_projects","arguments":{}}}'Codex
# ~/.codex/config.toml
[mcp_servers.musael]
url = "https://app.musael.com/api/mcp?lang=es"
bearer_token_env_var = "MUSAEL_TOKEN"Claude Code
claude mcp add --transport http --scope user musael https://app.musael.com/api/mcp?lang=es --header "Authorization: Bearer $MUSAEL_TOKEN"Sin token
HTTP/2 401
www-authenticate: Bearer realm="Musael", resource_metadata="https://app.musael.com/.well-known/oauth-protected-resource/api/mcp"
{"error":"TOKEN_INVALID"}
