Desarrolladores
Servidor MCP Pro
El servidor MCP de Tylode permite que los asistentes de IA compatibles con el Model Context Protocol (Claude, Cursor, VS Code y muchos más) trabajen con tu Tylode: buscar, leer páginas, crear y mover tarjetas, apuntar filas en una base de datos, cambiar eventos, contestar chats y enviar correo interno, todo pidiéndolo con tus palabras.
Qué te da
- 53 herramientas que cubren espacios de trabajo, páginas, bases de datos, tableros, calendario, pizarras, presentaciones, búsqueda, chats, correo interno, Mi unidad y notificaciones.
- El mismo acceso que tú. El asistente ve exactamente lo que ves tú en la app y nada más, porque cada herramienta llama a la API REST con tu token.
- Sin código. Añades el servidor a tu asistente una vez y luego le pides cosas como «¿Qué tengo en el calendario esta semana?».
Requisitos
- Una cuenta en Pro o Premium. El plan se comprueba en cada petición.
- Desde Claude o ChatGPT, nada más: te conectas con tu cuenta de Tylode (mira Claude y ChatGPT, sin instalar nada).
- Desde los demás clientes, un token de acceso personal. Créalo en Ajustes → API y webhooks → API y plugins → Tokens de acceso personal (mira Autenticación). Ponle un nombre como «MCP local» para reconocerlo y revocarlo después.
URL y transporte
| URL | https://app.tylode.com/api/mcp |
| Transporte | Streamable HTTP, sin estado (cada petición va por su cuenta, sin sesión) |
| Autenticación | Inicio de sesión con OAuth 2.1 (Claude, ChatGPT y cualquier cliente que lo admita) o Authorization: Bearer tylode_pat_xxx |
| Nombre del servidor | tylode |
Las respuestas llegan como JSON normal, no como un flujo. Los clientes que solo hablan stdio pueden conectarse con el puente mcp-remote, que verás más abajo.
Configurarlo
Claude y ChatGPT, sin instalar nada
Solo necesitas la dirección https://app.tylode.com/api/mcp:
- Claude (web, escritorio y móvil): en Ajustes → Conectores, añade un conector personalizado, ponle de nombre Tylode y pega la dirección.
- ChatGPT: en los ajustes de Conectores (o Apps), crea uno nuevo con esa dirección y autenticación OAuth. Según tu plan, ChatGPT puede pedirte que actives antes el modo desarrollador.
Al conectar, se abre Tylode: entra con tu cuenta (si no lo estabas), revisa los permisos que pide el asistente y pulsa Autorizar. La pantalla te dice a qué dominio vas a volver (claude.ai, chatgpt.com…): si no es el del asistente que acabas de conectar, cancela.
El asistente solo ve las herramientas de los permisos que autorizas. Los permisos de borrar salen aparte, en También puede borrar, sin marcar: el asistente solo puede borrar lo que marques. Si lo conectaste antes de que existieran algunos permisos (como las bases de datos, subir archivos a Mi unidad o borrar), conserva los que autorizaste entonces: para darle los nuevos, desconéctalo, vuelve a conectarlo y autoriza otra vez. Hasta entonces, tampoco puede cambiar tarjetas, elementos de pizarras ni lo que hay dentro de las diapositivas (antes esos permisos solo dejaban crear): te pedirá que lo vuelvas a conectar. Puedes quitarle el acceso cuando quieras en Ajustes → API y webhooks → API y plugins → Aplicaciones conectadas a tu cuenta.
Con un token personal
En los ejemplos que siguen, cambia tylode_pat_xxx por tu token. Si el cliente permite leerlo de una variable de entorno, hazlo así en vez de escribir el token en el archivo.
Claude Code
Ejecuta:
claude mcp add --transport http tylode https://app.tylode.com/api/mcp --header "Authorization: Bearer tylode_pat_xxx"Así se añade al proyecto actual. Añade --scope user para tenerlo en todos tus proyectos. Luego escribe /mcp dentro de Claude Code para comprobar que tylode está conectado y ver sus herramientas.
Claude Desktop
Lo más fácil es añadir Tylode como conector, sin token (mira arriba). Si prefieres usar un token personal, conecta Claude Desktop a través de mcp-remote. Necesitas tener Node.js instalado.
- En Claude Desktop, abre Settings → Developer → Edit Config. Se abre
claude_desktop_config.json(en macOS está en~/Library/Application Support/Claude/y en Windows, en%APPDATA%\Claude\). - Añade Tylode dentro de
mcpServers:
{
"mcpServers": {
"tylode": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://app.tylode.com/api/mcp",
"--header",
"Authorization:${TYLODE_AUTH_HEADER}"
],
"env": {
"TYLODE_AUTH_HEADER": "Bearer tylode_pat_xxx"
}
}
}
}- Cierra Claude Desktop del todo y vuelve a abrirlo. Las herramientas de Tylode aparecen en el menú de herramientas de la caja de chat.
Escribir Authorization:${TYLODE_AUTH_HEADER} sin espacio, con todo el valor Bearer … dentro de la variable, evita un problema que tienen algunos clientes en Windows con los espacios dentro de los argumentos.
Cursor
Añade Tylode a ~/.cursor/mcp.json (todos los proyectos) o a .cursor/mcp.json dentro de un proyecto:
{
"mcpServers": {
"tylode": {
"url": "https://app.tylode.com/api/mcp",
"headers": {
"Authorization": "Bearer ${env:TYLODE_TOKEN}"
}
}
}
}Define TYLODE_TOKEN en el perfil de tu terminal o en las variables de entorno del sistema y reinicia Cursor. Comprueba la conexión en la sección MCP de los ajustes de Cursor. Si prefieres no usar una variable, escribe el token directamente, pero entonces no subas el archivo al repositorio.
VS Code
Crea .vscode/mcp.json en tu proyecto (o ejecuta MCP: Open User Configuration para todos los proyectos). VS Code te pide el token la primera vez y lo guarda de forma segura:
{
"inputs": [
{
"type": "promptString",
"id": "tylode-token",
"description": "Tylode personal access token",
"password": true
}
],
"servers": {
"tylode": {
"type": "http",
"url": "https://app.tylode.com/api/mcp",
"headers": {
"Authorization": "Bearer ${input:tylode-token}"
}
}
}
}Arranca el servidor desde el propio archivo (VS Code muestra una acción Start encima) y usa las herramientas desde Copilot Chat en modo agente.
Otros clientes MCP
Cualquier cliente compatible con Streamable HTTP y cabeceras personalizadas funciona con la URL y la cabecera de la tabla de arriba. El JSON equivalente en la mayoría de clientes es:
{
"mcpServers": {
"tylode": {
"url": "https://app.tylode.com/api/mcp",
"headers": { "Authorization": "Bearer tylode_pat_xxx" }
}
}
}En los clientes que solo admiten stdio, usa el puente como comando del servidor:
TYLODE_TOKEN=tylode_pat_xxx npx -y mcp-remote https://app.tylode.com/api/mcp --header "Authorization: Bearer ${TYLODE_TOKEN}"Para probar el servidor a mano, llama a una herramienta con curl. La cabecera Accept tiene que incluir JSON y flujos de eventos:
curl https://app.tylode.com/api/mcp \
-H "Authorization: Bearer tylode_pat_xxx" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_workspaces","arguments":{}}}'{
"result": {
"content": [
{
"type": "text",
"text": "[{\"id\":\"7c1e2a4b-3f5d-4e8a-9b21-6d0f5c8e1a37\",\"name\":\"Acme\",\"slug\":\"acme\",\"plan\":\"pro\",\"role\":\"owner\",\"frozen\":false}]"
}
]
},
"jsonrpc": "2.0",
"id": 1
}Con "method":"tools/list" obtienes todas las herramientas con su esquema de entrada.
Herramientas
Cada herramienta devuelve el data de la API como texto JSON. Cuando la API rechaza una llamada, la herramienta devuelve un resultado de error con el código y el mensaje (por ejemplo Error 404: …), y normalmente el asistente te lo explica.
| Herramienta | Parámetros | Qué hace |
|---|---|---|
list_workspaces | ninguno | Lista tus espacios con su ID, nombre, plan, tu rol y si están congelados. Los asistentes la llaman primero para conseguir el workspace_id que piden las demás. |
list_pages | workspace_id | Lista las páginas de un espacio (sin contenido). |
create_page | workspace_id, title?, parent_page_id? | Crea una página, o una subpágina si indicas la madre. |
get_page | id | Devuelve una página con su título y su contenido en JSON de bloques. |
update_page | id, title?, content? (lista de bloques) | Cambia el título de una página o sustituye su contenido. |
delete_page | page_id | Mueve una página, con sus subpáginas, a la papelera. Se puede recuperar. |
list_databases | workspace_id | Lista las bases de datos de un espacio con sus columnas (ID, nombre, tipo y, en las de selección, sus opciones). |
list_database_rows | database_id | Devuelve las filas de una base de datos. Las claves de properties son los IDs de las columnas; los nombres salen de list_databases. |
add_database_row | database_id, properties (columna → valor) | Añade una fila. Las columnas van por nombre o ID y las selecciones, por la etiqueta de la opción. |
update_database_row | database_id, row_id, properties (columna → valor) | Cambia solo las celdas que mandas; el resto de la fila se queda como está. null o "" vacía una celda. |
delete_database_row | database_id, row_id | Borra una fila de una base de datos. No se puede recuperar. |
list_boards | workspace_id | Lista los tableros de un espacio. |
list_cards | board_id | Devuelve las listas (columnas) de un tablero y sus tarjetas, con el list_id de cada una. |
create_card | board_id, title, description?, list_id? | Crea una tarjeta. Sin list_id, va a la primera lista del tablero. |
update_card | board_id, card_id, title?, description?, list_id?, due_date?, start_date? | Cambia el título, la descripción o las fechas (YYYY-MM-DD, o null para quitarlas) de una tarjeta, o la mueve a otra lista del mismo tablero, al final. |
delete_card | board_id, card_id | Borra una tarjeta. No se puede recuperar. |
delete_board | board_id | Mueve un tablero, con sus listas y tarjetas, a la papelera. Se puede recuperar. |
list_calendar_events | workspace_id, from?, to? | Lista los eventos del calendario, opcionalmente entre dos fechas ISO 8601. Si das un intervalo, los eventos recurrentes se despliegan en sus repeticiones. |
create_calendar_event | workspace_id, title, start_at, end_at?, all_day?, description? | Crea un evento en el calendario del espacio. |
update_calendar_event | event_id, title?, description?, start_at?, end_at?, all_day? | Cambia un evento. Solo cambia lo que mandas; end_at admite null para quitar la hora de fin. |
delete_calendar_event | event_id | Borra un evento; si se repite, todas sus fechas. No se puede recuperar. |
list_whiteboards | workspace_id | Lista las pizarras de un espacio. |
create_whiteboard | workspace_id, name? | Crea una pizarra vacía. |
list_whiteboard_elements | whiteboard_id | Devuelve los elementos de una pizarra (notas, textos, formas…) con su posición y su tamaño. |
create_whiteboard_element | whiteboard_id, type (sticky, text, rectangle o ellipse), content?, x?, y? | Añade una nota, un texto o una forma a una pizarra. |
update_whiteboard_element | whiteboard_id, element_id, x?, y?, width?, height?, content?, style? | Mueve un elemento o le cambia el tamaño, el texto o el estilo. El estilo se junta con el que tenía. |
delete_whiteboard_element | whiteboard_id, element_id | Borra un elemento de una pizarra. No se puede recuperar. |
delete_whiteboard | whiteboard_id | Mueve una pizarra a la papelera. Se puede recuperar. |
list_presentations | ninguno | Lista tus presentaciones y las que te han compartido. |
create_presentation | name? | Crea una presentación personal con una diapositiva en blanco. No lleva workspace_id. |
list_slides | presentation_id | Lista las diapositivas de una presentación, en orden. |
create_slide | presentation_id | Añade una diapositiva en blanco al final de una presentación. |
list_slide_elements | presentation_id, slide_id | Devuelve los elementos de una diapositiva (textos, formas, imágenes). |
add_slide_element | presentation_id, slide_id, type? (text, rectangle o ellipse), content?, x?, y?, width?, height?, style? | Añade un texto (si no dices type), un rectángulo o una elipse a una diapositiva. |
update_slide_element | presentation_id, slide_id, element_id, x?, y?, width?, height?, content?, style? | Lo mismo que update_whiteboard_element, en una diapositiva. |
delete_slide_element | presentation_id, slide_id, element_id | Borra un elemento de una diapositiva. No se puede recuperar. |
delete_slide | presentation_id, slide_id | Borra una diapositiva con todo lo que tiene. No se puede recuperar. |
delete_presentation | presentation_id | Mueve una presentación a la papelera. Se puede recuperar. |
search_workspace | workspace_id, q, limit? | Busca a la vez en páginas, tableros, pizarras, presentaciones, correo y mensajes, por relevancia. limit de 1 a 50, 20 por defecto. |
list_chats | workspace_id | Lista las conversaciones en las que estás. |
read_chat | conversation_id, limit? | Devuelve los últimos mensajes de una conversación, del más antiguo al más reciente. limit de 1 a 200, 50 por defecto. |
send_chat_message | conversation_id, body, reply_to_message_id?, mentions? (IDs de usuario) | Envía un mensaje a una conversación que ya existe, en tu nombre. |
list_mail_threads | workspace_id, archived? ("true" o "all") | Lista los hilos del correo interno. Por defecto, solo los no archivados. |
read_mail_thread | thread_id | Devuelve el asunto de un hilo y todos sus mensajes. |
send_mail | workspace_id, subject, body, recipient_ids (IDs de usuario) | Empieza un hilo nuevo de correo interno, en tu nombre. |
reply_mail_thread | thread_id, body | Responde a un hilo, en tu nombre. |
update_mail_thread | thread_id, is_read?, archived? | Marca un hilo como leído o no leído, o lo archiva o lo devuelve a la bandeja de entrada. Solo cambia tu estado, no el de los demás participantes. |
list_drive | workspace_id, folder_id? | Lista carpetas y archivos de Mi unidad. Sin folder_id, el nivel principal. La papelera no aparece nunca. |
get_drive_file | file_id | Devuelve los datos de un archivo y un enlace de descarga que caduca a los 10 minutos. |
upload_drive_file | workspace_id, filename, content_base64, mime_type?, folder_id? | Sube un archivo de hasta 3 MB a Mi unidad, en la raíz o en una carpeta. Cuenta para el espacio de tu plan y solo admite los tipos de archivo que admite la app. |
delete_drive_file | file_id | Mueve un archivo de Mi unidad a su papelera. Se puede recuperar. |
list_notifications | workspace_id, include_read? | Lista tus notificaciones sin leer (menciones, respuestas, tarjetas asignadas, páginas compartidas); todas, con include_read. |
mark_notifications_read | workspace_id | Marca como leídas todas tus notificaciones del espacio. |
Los parámetros con ? son opcionales. Los detalles de cada llamada están en la referencia de la API: páginas, bases de datos, tableros, calendario, chats, correo y notificaciones, y pizarras, presentaciones, búsqueda y Mi unidad.
Las herramientas de borrar (delete_…) solo aparecen con un conector si autorizas su permiso :delete, que en la pantalla de autorización sale sin marcar; con un token personal, el asistente las ve todas. Lo que tiene papelera en la app (páginas, tableros, pizarras, presentaciones y archivos de Mi unidad) va a la papelera y se puede recuperar; las tarjetas, los eventos, las filas, las diapositivas y los elementos se borran del todo. Mira Borrar: papelera o para siempre.
Ejemplos de peticiones
- «Lista mis espacios de Tylode y dime cuáles están en Pro.»
- «Busca "presupuesto Q4" en Acme y resúmeme lo que dice la página.»
- «¿Qué tengo en el calendario la semana que viene? Agrúpalo por días.»
- «Crea una tarjeta "Preparar la demo" en el tablero Lanzamiento, en la lista "En curso", con los pasos en la descripción.»
- «Lee los últimos 30 mensajes del chat Equipo de producto y prepárame una respuesta a la pregunta sobre la fecha de salida. Enséñamela antes de enviarla.»
- «Mueve la tarjeta "Preparar la demo" a la lista "Hecho" y ponle fecha de vencimiento el viernes.»
- «Apunta en la tabla Movimientos un gasto de 12,40 en Comida con la fecha de hoy.»
- «Crea una página "Retro 23 de septiembre" con apartados para lo que fue bien, lo que no y las acciones.»
- «¿Tengo notificaciones sin leer? Dime cuáles necesitan respuesta y luego márcalas como leídas.»
- «Busca en Mi unidad el PDF del contrato firmado y dame el enlace de descarga.»
Límites de uso
El servidor MCP comparte el límite de la API: 60 peticiones por minuto y usuario. Cada llamada a una herramienta cuenta como 1 petición (la llamada a la API que hace por dentro), salvo list_cards, que cuenta 2 (lee las listas y las tarjetas), así que un asistente puede hacer unas 60 por minuto. Conectarse y listar las herramientas no gastan de esas 60: tienen su propio límite, holgado (120 por minuto). Otros scripts que usen tus tokens en el mismo minuto tiran de las mismas 60. Mira Límites de uso.
Seguridad
- El token tiene acceso completo a tu cuenta. Con él, un asistente puede leer todo lo que puedes leer tú y escribir en tu nombre: crear páginas, cambiar tarjetas y filas, subir archivos a Mi unidad, enviar mensajes de chat y correo.
- Guarda el token en privado. Mejor en variables de entorno o en la entrada segura del cliente, y no subas a un repositorio archivos de configuración que lo contengan.
- Revisa lo que hace el asistente. La mayoría de clientes piden aprobación antes de cada llamada a una herramienta; déjalo activado para las que escriben o envían.
- Con un conector, concede solo lo que necesites. El asistente no ve las herramientas de los permisos que no le das. Deja sin marcar los permisos de borrar si no le hacen falta.
- Con un token personal, el asistente también puede borrar. Ve todas las herramientas, las de borrar incluidas. Si tu cliente pide aprobación antes de cada llamada, no la quites para las
delete_…. - Usa un token para cada asistente. Si se filtra o dejas de usar el asistente, revócalo en Ajustes → API y webhooks → API y plugins y no se rompe nada más.
- Mira lo que ha hecho. En esa misma pantalla, Lo que han hecho tus apps y tokens lista cada cosa que una app conectada o un token ha creado, cambiado o borrado en tu nombre (por ejemplo, «Claude · Borró una tarjeta»), durante 90 días.
- Cuidado con el contenido que no has escrito tú. Una página o un mensaje de otra persona podría llevar instrucciones dirigidas al asistente. Revisa antes de aprobar las acciones que te proponga después de leerlo.
Solución de problemas
| Problema | Qué revisar |
|---|---|
401 | El token es incorrecto, está revocado o le falta el prefijo Bearer . Con mcp-remote, revisa el argumento --header y la variable. |
403 | Tu cuenta no está en Pro ni en Premium. Con un conector de Claude o ChatGPT, la conexión funciona pero cada herramienta contesta con este aviso hasta que tengas Pro. |
429 | Has llegado a 60 peticiones en este minuto (unas 30 llamadas a herramientas). Espera al minuto siguiente. |
406 en un cliente propio | La petición tiene que enviar Accept: application/json, text/event-stream. |
| El servidor no aparece en Claude Desktop | Comprueba que el JSON es válido, que Node.js está instalado y que cerraste Claude Desktop del todo antes de volver a abrirlo. |
| Faltan herramientas | Con un conector, el asistente solo ve las de los permisos que autorizaste. Las de borrar solo salen si marcaste su permiso. Si lo conectaste antes de que existieran (bases de datos, subir archivos, borrar), desconéctalo, vuelve a conectarlo y autoriza otra vez. |
| Listas vacías | El asistente ha usado un workspace_id equivocado. Pídele que llame antes a list_workspaces o dile el nombre del espacio. |
| Falla una herramienta que escribe | Puede que el espacio esté congelado para ti o que tu rol sea de solo lectura. La misma acción fallaría en la app. |
Páginas relacionadas
- Autenticación: crea y revoca tokens.
- Asistente de IA: el asistente integrado de Tylode, sin configurar nada.
- Plataforma para desarrolladores: la API REST que hay detrás de cada herramienta.