Saltar al contenido principal

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).

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.

AjustePor defectoQué hace
SOL2FLOW_URLhttps://app.sol2flow.comTu 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_ORIGINSsolo localhostAsistentes 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_HOPS0El número de proxies delante, para encontrar la dirección IP de la persona en X-Forwarded-For
FORWARD_CLIENT_IPfalsePasar 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_ONLYfalseOcultar todas las herramientas que cambian algo
LOG_LEVELinfodebug 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​

HerramientaQué hace
whoamiTu cuenta, la clave, la versión de sol2flow y tus espacios
list_workspaces, list_boards, get_boardEspacios, tableros, y un tablero con sus listas y tareas
searchTableros y tareas por nombre, clave (PRD-12) o texto, como la búsqueda de la aplicación
list_tasksTareas por tablero, lista, responsable, etiqueta, texto, vencimiento o último cambio
get_taskUna tarea con su descripción, checklist, vínculos y últimos comentarios
list_labels, list_peopleEtiquetas y miembros del espacio
list_time_entries, get_timerTiempo registrado y tu temporizador en marcha
list_notifications, list_my_invitationsTus notificaciones e invitaciones pendientes
create_task, update_task, move_taskCrear, cambiar (campos, etiquetas, responsables, lista) y mover tareas, también a otro tablero
archive_task, unarchive_taskArchivar una tarea y recuperarla
add_comment, add_checklist_items, update_checklist_itemComentarios y checklists
link_tasks, unlink_tasksBloquea, bloqueada por, relacionada con, duplica
log_time, start_timer, stop_timer, update_time_entryControl de tiempo
mark_notifications_read, respond_to_invitationNotificaciones e invitaciones
create_board, create_list, create_labelTableros, 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 diceQué 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 aparecenReinicia 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.