Ir al contenido

Servidor MCP

Bordio habla Model Context Protocol (MCP), así que un asistente de IA puede leer y modificar tu trabajo directamente, en lugar de que copies cosas de un lado a otro.

https://api.bordio.com/mcp

La autenticación es OAuth: apruebas la conexión en el navegador y no pegas ninguna clave. Las claves de API son para integraciones de servidor y aquí no funcionan.

Tres cosas deciden si la conexión funcionará. Compruébalas primero: casi todas las configuraciones fallidas se deben a una de ellas, no a un problema del cliente.

  • Un espacio de trabajo de equipo. Los espacios personales no tienen integraciones en ningún plan y no se pueden conectar.
  • Un plan de pago o una prueba activa. La prueba funciona por completo y no requiere tarjeta. En el plan gratuito, o cuando los pagos se detienen, la conexión se crea pero cada llamada a una herramienta se rechaza.
  • Ser miembro, no invitado. Los invitados no pueden autorizar una aplicación para un espacio de trabajo. Pide a un administrador que te haga miembro.

Las reglas se comprueban en cada llamada, no solo al conectar — consulta requisitos de plan y espacio de trabajo.

Todos los clientes de abajo usan la misma URL. Nunca copias un token: el cliente abre el navegador, inicias sesión en Bordio y apruebas el acceso, y él guarda el resultado.

Settings → Connectors → Add custom connector → pega la URL. Aprueba en la ventana del navegador que se abre.

Terminal window
claude mcp add --transport http bordio https://api.bordio.com/mcp

Después ejecuta /mcp, elige bordio y selecciona Authenticate. Para iniciar sesión sin abrir una sesión de trabajo, ejecuta claude mcp login bordio.

Añade el servidor a ~/.cursor/mcp.json (disponible en todas partes) o a .cursor/mcp.json (solo este proyecto):

{
"mcpServers": {
"bordio": {
"url": "https://api.bordio.com/mcp"
}
}
}

Cursor detecta el cambio e inicia el acceso por navegador la primera vez que lo usas.

Añade el servidor a .vscode/mcp.json:

{
"servers": {
"bordio": {
"type": "http",
"url": "https://api.bordio.com/mcp"
}
}
}
Terminal window
codex mcp add bordio --url https://api.bordio.com/mcp
codex mcp login bordio

login abre el navegador y guarda el resultado. Codex se registra en Bordio sobre la marcha, así que no hace falta obtener antes un client id; si tu versión pregunta cómo registrarse, elige el registro dinámico (--oauth-client-registration dcr).

Las versiones antiguas atienden los servidores por URL con la pila MCP anterior, donde el acceso por OAuth no se ejecuta. Si login falla o el servidor no llega a conectarse, añade esto a ~/.codex/config.toml y vuelve a intentarlo:

experimental_use_rmcp_client = true

Lo mismo desde el archivo, si prefieres editarlo directamente:

[mcp_servers.bordio]
url = "https://api.bordio.com/mcp"

Cualquiera que admita servidores MCP remotos por HTTP y pueda completar el acceso OAuth — Windsurf, Zed y demás — funciona igual: dale la URL y aprueba en el navegador.

n8n, Make, Zapier y tus propios scripts son otro caso, y MCP no es la herramienta adecuada para ellos.

Iniciar sesión aquí significa que una persona aprueba el acceso en un navegador, y el token resultante le pertenece. Una automatización que se ejecuta a las tres de la madrugada no tiene a nadie que abra un navegador, y no hay forma de emitirle una credencial MCP permanente: Bordio no entrega credenciales de cliente OAuth para uso autoservicio.

Para automatizaciones usa la API REST con una clave secreta: está hecha justo para esto — una credencial de larga duración, sin navegador y sin caducidad que vigilar. Todo lo que un asistente hace por MCP está disponible allí.

Si escribes un cliente en lugar de usar uno, no hay nada que registrar a mano. Bordio implementa la cadena de descubrimiento que define la especificación MCP, así que un cliente conforme lo encuentra todo a partir de la URL del endpoint:

  • Metadatos del recurso protegido en /.well-known/oauth-protected-resource/mcp — apuntan al servidor de autorización;
  • Metadatos del servidor de autorización en /.well-known/oauth-authorization-server — endpoints, permisos y métodos admitidos;
  • Client ID Metadata Documents (el método que la especificación prefiere ahora): publica un documento JSON que describa tu cliente y pasa su URL HTTPS como client_id. Lo descargamos, comprobamos que el client_id de dentro coincide con la URL de la que viene y validamos tus redirect URI contra él;
  • Registro dinámico de clientes en /oauth/register, como alternativa para clientes que no admiten lo anterior.

PKCE es obligatorio, solo S256. Las URI de retorno de loopback (http://127.0.0.1/... y http://localhost/...) se aceptan con cualquier puerto, como necesitan los clientes nativos.

Sea cual sea la vía, la pantalla de aprobación muestra a la persona el dominio al que volverá su código de autorización: es la única afirmación sobre tu aplicación que puede verificar, así que procura que sea un dominio reconocible. Consulta aprobar una aplicación.

Una vez conectado, pregunta con lenguaje natural: «qué tengo hoy», «crea una tarea para renovar el certificado SSL, para el viernes», «qué cerró el equipo la semana pasada».

Área Qué puede hacer el asistente
Tareas Listar y filtrar, leer una tarea con sus subtareas y comentarios, crear, actualizar, cerrar, eliminar
Subtareas Listar, crear, actualizar, eliminar
Eventos Listar y leer eventos del calendario, crearlos y actualizarlos, gestionar participantes
Papelera Ver lo eliminado y recuperar una tarea o un evento: eliminar no es definitivo
Agenda Todo dentro de un rango de fechas — reuniones, vencimientos y trabajo planificado — en una sola lista ordenada
Resumen Recuentos de un periodo, por estado y por responsable, sin listar cada registro
Comentarios Leer y escribir comentarios en tareas y eventos
Registro de tiempo Leer y registrar tiempo dedicado
Proyectos, miembros, etiquetas Leer la estructura del espacio de trabajo; archivar y desarchivar proyectos; gestionar etiquetas
Definiciones Estados y tipos de tarea, tipos de evento, estados de proyecto, campos personalizados

Todo lo que el asistente alcanza por MCP lo hace con tus permisos. Nunca verá un proyecto que tú no puedas ver.

Nada de lo que hace aquí es permanente. Eliminar una tarea o un evento los manda a la papelera, de donde se recuperan durante 30 días; los proyectos se archivan, no se eliminan. No existe ninguna herramienta que destruya un registro de forma definitiva — consulta eliminar y restaurar.

El servidor incluye tres instrucciones. En Claude Desktop aparecen como comandos que puedes elegir, así que no tienes que inventar la frase:

Instrucción Qué hace
Qué tengo hoy Reuniones, vencimientos y trabajo planificado de hoy en una lista ordenada, señalando qué merece atención primero
Resolver lo atrasado Agrupa las tareas vencidas y propone una fecha nueva para cada una: nada cambia hasta que confirmas
Cerrar mi semana Qué se terminó, qué se retrasó y qué espera para la semana siguiente

Cada una acepta un nombre de proyecto opcional para acotar.

Algunos clientes permiten adjuntar un recurso a la conversación en lugar de pedir al asistente que lo busque. Bordio expone cuatro:

bordio://workspace
bordio://project/{project_id}
bordio://task/{task_id}
bordio://event/{event_id}

Úsalos cuando ya sabes de qué registro hablas: el asistente trabaja directamente con él en vez de buscarlo. Las listas se quedan del lado de las herramientas, donde viven los filtros y la paginación.

La pantalla de aprobación muestra exactamente lo que pide la aplicación, y concedes los permisos por espacio de trabajo. Si perteneces a varios, eliges uno al aprobar: la conexión nunca va más allá del que elegiste.

El asistente solo ve las herramientas que cubren sus permisos: si una conexión se aprobó solo para lectura, las herramientas de escritura no se rechazan, sencillamente no se ofrecen.

Permiso Qué cubre
tasks:read / tasks:write Tareas, subtareas y sus comentarios
events:read / events:write Eventos de calendario, sus participantes y sus comentarios
projects:read / projects:write Proyectos y su configuración: estados, tipos, campos personalizados
time_logs:read / time_logs:write Tiempo registrado
tags:read / tags:write Etiquetas
members:read Otras personas del espacio de trabajo, incluidas sus direcciones de correo
profile:read Tu propio nombre y dirección de correo
offline_access Seguir conectado sin volver a preguntarte cada hora

Vale la pena pedir profile:read incluso para un asistente de solo lectura: sin él nada puede responder a «qué tengo hoy», porque el asistente no sabe cuál de los miembros del espacio de trabajo eres.

Un cliente que pide un permiso que no puede tener no recibe un error: ese permiso se descarta, los demás se conceden y la pantalla de aprobación muestra lo que realmente se dará. Lee la lista concedida en la respuesta del token en lugar de dar por hecho que recibiste todo lo que pediste.

Puedes revisar y revocar conexiones en cualquier momento en Perfil → Integraciones → Aplicaciones con acceso a Bordio. La revocación surte efecto de inmediato.

Conectarse está abierto a cualquiera: la pantalla de aprobación aparece para cualquier espacio de trabajo del que seas miembro, sea cual sea el plan. Lo que el plan limita es usar la conexión: se comprueba cada llamada, no solo la primera.

Situación Qué ocurre
Espacio de equipo con un plan con integraciones Todo funciona
Espacio de equipo en periodo de prueba Todo funciona, sin tarjeta
Espacio de equipo donde un pago falló pero el proveedor sigue reintentando Sigue funcionando: un cobro que no pasó a la primera no es una decisión de dejar el producto
Espacio de equipo en plan gratuito, o cuando los pagos se han detenido definitivamente La conexión se mantiene, pero cada llamada devuelve workspace_plan_required hasta que se resuelva el plan
Espacio personal No se puede conectar: integrations_unavailable, en cualquier plan
Eres invitado en el espacio de trabajo No puedes autorizar una aplicación para él: guest_access_denied. Pide a un administrador que te haga miembro

La comprobación en cada llamada es deliberada: una aprobación concedida mientras el plan estaba activo no sigue funcionando cuando caduca. Y al revés: en cuanto el plan vuelve, la conexión existente funciona de nuevo sin reconectar nada.

Una conexión cubre un espacio de trabajo. Lo eliges en la pantalla de aprobación y la conexión nunca lo sobrepasa. Para trabajar con otro, revoca la conexión en Perfil → Integraciones → Aplicaciones con acceso a Bordio y autoriza de nuevo eligiendo el otro.

Límite Valor
Llamadas a herramientas de lectura 180 / minuto
Llamadas a herramientas de escritura 60 / minuto
Peticiones al endpoint, incluidos los mensajes de protocolo 300 / minuto
Una llamada a herramienta 30 segundos
Una respuesta 128 KB

Los mensajes de protocolo — conectarse, listar herramientas — no consumen el presupuesto de llamadas. La lectura es más generosa que en la API REST porque una sola pregunta suele convertirse en una cadena corta de llamadas.

Si una respuesta supera el límite de tamaño, la llamada se rechaza con una indicación para acotar la petición en vez de recortarse en silencio: un asistente que trabaja con una lista truncada sacará conclusiones de datos que no sabe que están incompletos.

Qué ves Qué significa
El cliente pide autenticarse una y otra vez y la aprobación siempre funciona El token se rechaza después de emitirse. Comprueba en Perfil → Integraciones → Aplicaciones con acceso a Bordio que la conexión no esté revocada ni bloqueada, luego quita el servidor del cliente y añádelo de nuevo.
workspace_plan_required en cada llamada El espacio está en plan gratuito o los pagos se detuvieron. La conexión está bien y se reanuda en cuanto vuelva el plan.
integrations_unavailable El espacio que aprobaste es personal. Conecta uno de equipo.
guest_access_denied Eres invitado allí. Los invitados no pueden autorizar aplicaciones: pide a un administrador que te haga miembro.
connection_blocked Un administrador detuvo esta conexión. Es reversible: pídele que la restablezca. Volver a aprobar no sirve mientras el bloqueo siga.
El asistente dice que una tarea no existe y tú la ves La conexión actúa con tus permisos y en un espacio de trabajo. Un registro de otro espacio, o de un proyecto en el que no estás, está realmente fuera de su alcance.
Una herramienta de escritura no aparece La conexión se aprobó sin ese permiso. Revoca y vuelve a aprobar concediéndolo.
Las llamadas empiezan a fallar tras una ráfaga de actividad Has alcanzado el límite por minuto. El error indica cuánto esperar.

Cualquier aplicación puede conectarse: MCP permite que una aplicación se registre sola y no lo restringimos. Tampoco se concede nada a escondidas: la aplicación recibe exactamente los permisos que la persona aprobó, y nada más.

Lo que muestra la pantalla de aprobación es lo que realmente se puede comprobar:

Se muestra Por qué es fiable
El nombre y el logotipo de la aplicación Los envía la propia aplicación si se registró sola, o se toman del documento de metadatos de tu dominio.
El dominio al que vuelve el código No se puede falsificar sin controlar ese dominio. Para clientes de escritorio y editores, la pantalla indica que el código vuelve al propio equipo de la persona.
La lista de permisos Exactamente lo que se concederá.

No hay cola de revisión ni solicitud que presentar: una aplicación que publica un documento de metadatos en su propio dominio aparece bajo ese dominio. A los clientes conocidos — Claude, Slack, Cursor, Codex y VS Code entre ellos — les ponemos además el nombre y el logotipo, para que se reconozcan de un vistazo.

El asistente recibe los fallos como respuestas normales, así que puede corregirse y volver a intentarlo: una tarea a la que no llega vuelve como «no encontrada», no como un servidor roto.

Situación Qué ocurre
Sin sesión iniciada o aprobación caducada El cliente te pide autenticarte de nuevo
A la aplicación le falta un permiso La llamada se rechaza y se le indica al cliente qué permiso falta
Límite de peticiones alcanzado La llamada se rechaza indicando cuánto esperar
Registro no encontrado o fuera de tu acceso Se le indica al asistente que el registro no está disponible
  • Autenticación — claves de API para integraciones de servidor
  • Límites — límites de la API REST
  • Errores — el catálogo completo de errores