Servidor MCP (asistentes de IA)
El servidor MCP de sol2flow permite que los asistentes de IA trabajen con tus tableros y tareas: «¿qué tengo hoy?», «crea una tarea para el error de inicio de sesión y asígnasela a Ben», «mueve PRD-12 a Hecho y registra 1 h 30 min». Habla el Model Context Protocol, que entienden Claude Desktop, Claude Code, Cursor, VS Code y muchos otros asistentes.
El servidor usa la API REST con tu clave de API personal. Así que el asistente puede hacer exactamente lo que tú puedes hacer en la aplicación, nada más: tus roles, el acceso de la clave (Acceso completo o Solo lectura), el plan de tu organización y el interruptor API REST del espacio se aplican exactamente igual que en la API.
Qué necesitas
- Una clave de API: menú de la cuenta (abajo a la izquierda) → Claves de API → Crear clave de API (Claves de API). Elige Acceso completo si el asistente debe cambiar cosas, Solo lectura si solo debe consultar. La clave se muestra una vez: cópiala.
- La API REST debe estar disponible: en sol2flow cloud, el plan de tu organización la incluye; en tu propia instancia, un administrador tiene activado Permitir claves de API (Ajustes de la instancia); y el espacio tiene API REST activado (Ajustes → Espacio de trabajo → Acceso e integraciones, Espacios de trabajo).
- Una de estas opciones:
- sol2flow cloud: nada más. Usa el servidor alojado en
https://mcp.sol2flow.com/mcp. - En tu ordenador: Node.js 22 o posterior. Tu asistente inicia el servidor con
npx -y @sol2flow/mcp; funciona para sol2flow cloud y para tu propia instancia. - Tu propia instancia: el servidor como contenedor Docker junto a sol2flow (Autoalojamiento).
- sol2flow cloud: nada más. Usa el servidor alojado en
Conecta tu asistente
Sustituye sf_… por tu clave. Para tu propia instancia, añade SOL2FLOW_URL con su dirección (por ejemplo
https://flow.example.com); sin ella, el servidor usa sol2flow cloud.
Claude Code
# el servidor alojado (sol2flow cloud)
claude mcp add --transport http sol2flow https://mcp.sol2flow.com/mcp --header "Authorization: Bearer sf_…"
# o en tu ordenador, para cualquier instancia
claude mcp add sol2flow --env SOL2FLOW_URL=https://flow.example.com --env SOL2FLOW_API_KEY=sf_… -- npx -y @sol2flow/mcp
Claude Desktop
Settings → Developer → Edit Config abre claude_desktop_config.json. Añade:
{
"mcpServers": {
"sol2flow": {
"command": "npx",
"args": ["-y", "@sol2flow/mcp"],
"env": { "SOL2FLOW_URL": "https://app.sol2flow.com", "SOL2FLOW_API_KEY": "sf_…" }
}
}
}
Reinicia Claude Desktop. Las herramientas de sol2flow aparecen en el menú de herramientas de un chat nuevo.
Cursor
En ~/.cursor/mcp.json (todos los proyectos) o .cursor/mcp.json (un proyecto), o bien la misma entrada mcpServers
que para Claude Desktop, o bien el servidor alojado:
{
"mcpServers": {
"sol2flow": { "url": "https://mcp.sol2flow.com/mcp", "headers": { "Authorization": "Bearer sf_…" } }
}
}
VS Code
En .vscode/mcp.json (o MCP: Open User Configuration para todos los espacios de trabajo). VS Code pide la clave una
vez y la guarda en su almacén de secretos, así que no queda escrita en el archivo:
{
"inputs": [{ "type": "promptString", "id": "sol2flow-key", "description": "sol2flow API key", "password": true }],
"servers": {
"sol2flow": {
"type": "http",
"url": "https://mcp.sol2flow.com/mcp",
"headers": { "Authorization": "Bearer ${input:sol2flow-key}" }
}
}
}
En tu ordenador, en su lugar: "type": "stdio", "command": "npx", "args": ["-y", "@sol2flow/mcp"], "env": { "SOL2FLOW_URL": "https://flow.example.com", "SOL2FLOW_API_KEY": "${input:sol2flow-key}" }.
Otros asistentes
Cualquier cliente MCP funciona: o bien inicia npx -y @sol2flow/mcp con las variables de entorno SOL2FLOW_API_KEY (y
SOL2FLOW_URL), o bien se conecta a un servidor HTTP (https://mcp.sol2flow.com/mcp o el tuyo) con la cabecera
Authorization: Bearer sf_….
Los conectores de Claude.ai y ChatGPT (en el navegador) inician sesión con OAuth en lugar de una clave. Llegará en una versión posterior; hasta entonces, usa uno de los asistentes de arriba.
Autoalojamiento
Con tu propio sol2flow, puedes ejecutar el servidor HTTP a su lado, para que todos en tu instancia se conecten a una sola
dirección con su propia clave. La imagen es ghcr.io/sol2flow/mcp (amd64 y arm64). Por ejemplo, en el archivo de Docker
Compose que ejecuta sol2flow (cuyo servicio se llama app):
services:
mcp:
image: ghcr.io/sol2flow/mcp:latest
restart: unless-stopped
read_only: true
environment:
SOL2FLOW_URL: http://app:3000 # sol2flow tal como lo alcanza este contenedor
ALLOWED_HOSTS: mcp.example.com # el nombre de host al que se conecta la gente
TRUST_PROXY_HOPS: '1' # un proxy inverso delante
FORWARD_CLIENT_IP: 'true'
ports: ['127.0.0.1:3005:3000']
Ponlo detrás de tu proxy inverso con HTTPS (como el propio sol2flow, consulta Proxy inverso);
la gente usa entonces https://mcp.example.com/mcp.
| Ajuste | Por defecto | Qué hace |
|---|---|---|
SOL2FLOW_URL | https://app.sol2flow.com | Tu sol2flow. Lo fijas tú: nadie puede dirigir el servidor a otro sitio |
ALLOWED_HOSTS | — | Los nombres de host (o host:puerto) a los que responde el servidor, separados por comas. Defínelos: protegen contra el DNS rebinding |
ALLOWED_ORIGINS | solo localhost | Asistentes en el navegador: los orígenes que pueden llamar al servidor (* para todos). Los asistentes de escritorio y de línea de comandos no lo necesitan |
TRUST_PROXY_HOPS | 0 | El número de proxies delante, para encontrar la dirección IP de la persona en X-Forwarded-For |
FORWARD_CLIENT_IP | false | Pasar esa dirección IP a sol2flow, para que sus límites y «Último uso desde» vean a la persona, no al servidor |
SOL2FLOW_WORKSPACE | — | Un espacio por defecto (su slug) |
READ_ONLY | false | Ocultar todas las herramientas que cambian algo |
LOG_LEVEL | info | debug añade una línea por petición a la API |
LOG_FILE | — | Escribir también el registro en archivos diarios junto a esta ruta (p. ej. /data/logs/mcp.log; monta /data/logs con escritura para el usuario 1001) |
SENTRY_DSN | — | Seguimiento de errores (Sentry, Bugsink o GlitchTip); o SENTRY_DSN_FILE |
El contenedor se ejecuta como usuario 1001, funciona con un sistema de archivos de solo lectura, responde a
GET /healthz y tiene una comprobación de salud. No guarda datos: puedes ejecutar varios, reiniciarlo o sustituirlo en
cualquier momento.
Qué puede hacer el asistente
| Herramienta | Qué hace |
|---|---|
whoami | Tu cuenta, la clave, la versión de sol2flow y tus espacios |
list_workspaces, list_boards, get_board | Espacios, tableros, y un tablero con sus listas y tareas |
search | Tableros y tareas por nombre, clave (PRD-12) o texto, como la búsqueda de la aplicación |
list_tasks | Tareas por tablero, lista, responsable, etiqueta, texto, vencimiento o último cambio |
get_task | Una tarea con su descripción, checklist, vínculos y últimos comentarios |
list_labels, list_people | Etiquetas y miembros del espacio |
list_time_entries, get_timer | Tiempo registrado y tu temporizador en marcha |
list_notifications, list_my_invitations | Tus notificaciones e invitaciones pendientes |
create_task, update_task, move_task | Crear, cambiar (campos, etiquetas, responsables, lista) y mover tareas, también a otro tablero |
archive_task, unarchive_task | Archivar una tarea y recuperarla |
add_comment, add_checklist_items, update_checklist_item | Comentarios y checklists |
link_tasks, unlink_tasks | Bloquea, bloqueada por, relacionada con, duplica |
log_time, start_timer, stop_timer, update_time_entry | Control de tiempo |
mark_notifications_read, respond_to_invitation | Notificaciones e invitaciones |
create_board, create_list, create_label | Tableros, listas y etiquetas |
No hay ninguna herramienta para borrar: archivar es la vía segura y se puede deshacer. El uso compartido, los miembros, los webhooks, las importaciones y los adjuntos se quedan en la aplicación.
Incluye dos prompts listos, que muchos asistentes muestran como comandos: plan_my_day (un plan del día a partir de tus tareas, vencimientos y notificaciones) y board_standup (qué se movió en un tablero, qué está en curso, bloqueado o vencido).
Cómo referirse a las cosas: tú y el asistente podéis usar lo que ves en la aplicación. Las tareas por su clave
(PRD-12, también la clave antigua de una tarea movida a otro tablero) o su enlace; los tableros por clave o nombre; las
listas y etiquetas por nombre; las personas como «me», por nombre de usuario o por nombre. Las descripciones y los
comentarios son Markdown en ambos sentidos.
El espacio por defecto: si estás en un solo espacio, el asistente usa siempre ese. Con varios, los recorre todos para
una clave de tarea y si no, pregunta cuál; o define uno por defecto con SOL2FLOW_WORKSPACE (en tu ordenador) o
?workspace=<slug> al final de la dirección HTTP (https://mcp.sol2flow.com/mcp?workspace=acme).
Modo de solo lectura
Para que un asistente solo consulte, usa una clave de Solo lectura: cada cambio se rechaza con un mensaje claro. A
partir de sol2flow 1.8, un servidor en tu ordenador también reconoce la clave de solo lectura y oculta las herramientas
que cambian algo, para que el asistente ni lo intente. Puedes ocultarlas tú mismo para cualquier clave: READ_ONLY=true
(en tu ordenador) o ?read_only=1 al final de la dirección HTTP.
Límites de la API
Cada llamada a una herramienta es una o varias peticiones a la API, y cuentan como cualquier otro uso de la API: 600
peticiones cada 10 minutos por clave, de ellas como mucho 120 cambios, y en sol2flow cloud las peticiones diarias a la
API de tu plan. La mayoría de las herramientas usan una petición; get_task usa tres (la tarea, sus vínculos y
comentarios), get_board de dos a cuatro, create_task y update_task algunas más para buscar listas, etiquetas y
personas. Buscar una clave de tarea o un nombre de tablero cuesta una búsqueda la primera vez; el resultado se recuerda
10 minutos. Cuando se alcanza un límite, el asistente sabe cuánto debe esperar.
Solución de problemas
El asistente recibe un mensaje con el que puede actuar y normalmente te dice qué pasa. Los más comunes (los mensajes están en inglés):
| El mensaje dice | Qué hacer |
|---|---|
| «sol2flow refused the API key» | La clave es incorrecta, caducó o se revocó. Crea una nueva y actualízala en tu asistente |
| «No sol2flow API key is configured» | Define SOL2FLOW_API_KEY, o la cabecera Authorization: Bearer para el servidor HTTP |
| «API keys are switched off on this sol2flow instance» | Un administrador desactivó Permitir claves de API (Ajustes de la instancia) |
| «API access is switched off for this workspace» | Un administrador del espacio activa API REST en Acceso e integraciones |
| «The organization's plan doesn't include the REST API» | Un propietario o administrador de la organización mejora el plan |
| «The organization's workspaces are read-only» | La suscripción está impagada o terminó; leer sigue funcionando |
| «This API key is read-only» | Usa una clave con Acceso completo, o déjala en solo lectura a propósito |
| «You don't have permission for this» | Tu rol no lo permite, p. ej. los lectores y los invitados no pueden editar |
| «Not found, or you don't have access to it» | Revisa la clave o el nombre; sol2flow nunca dice si algo existe cuando no puedes abrirlo |
| «The task is archived and read-only» | Recupérala primero del archivo (el asistente puede, con unarchive_task) |
| «sol2flow's rate limit is reached» / «API requests per day» | Espera el tiempo indicado |
| «may or may not have been applied» | Un cambio no recibió respuesta a tiempo. Revisa la tarea antes de volver a pedirlo: los cambios nunca se repiten automáticamente |
| «This sol2flow instance … is too old» | La instancia necesita una actualización para esa herramienta |
| Las herramientas no aparecen | Reinicia el asistente después de cambiar su configuración; comprueba que npx (Node.js 22+) está instalado |
Privacidad
- El servidor MCP no guarda nada: ni claves, ni tareas, ni contenido. Cada petición al servidor alojado trae su propia clave y se olvida en cuanto se responde.
- Su registro contiene el nombre de la herramienta, el resultado, la duración, la dirección IP de la que vino la petición (servidor HTTP) y los primeros 8 caracteres de la clave (la parte pública que aparece en la lista de claves de API); nunca la clave, lo que pidió el asistente ni lo que respondió sol2flow.
- Lo que el asistente envía a su proveedor de IA queda entre tú y ese proveedor: el servidor MCP solo responde a las preguntas del asistente, con lo que tu clave puede ver. Usa una clave de Solo lectura, o limita lo que pides, si eso importa para un espacio.