Servidor MCP de 2Mind

Documentación

Servidor MCP de 2Mind

Conecta un asistente de IA a tu memoria de 2Mind mediante el Model Context Protocol. Esta página cubre la configuración, los permisos, el modelo de aprobación y todas las herramientas.

Resumen

El servidor MCP de 2Mind es un servidor MCP remoto. Da a un asistente herramientas para buscar y leer tus notas, listar tus colecciones y tareas, y pedir cambios en ellas. Funciona con la misma cuenta y los mismos datos que las apps de 2Mind.

La lectura es inmediata. La escritura nunca es silenciosa: cada herramienta de escritura crea una solicitud de aprobación, y el cambio se aplica solo cuando tú lo apruebas, salvo que hayas permitido a esa conexión aplicar cambios reversibles por su cuenta.

El servidor usa el transporte Streamable HTTP en modo sin estado. Cada petición es un único POST con un token bearer de OAuth; no hay sesiones ni flujo de eventos que mantener abierto.

Conectar

Necesitas una cuenta de 2Mind y un asistente que pueda añadir un servidor MCP remoto. Usa esta URL del servidor:

URL del servidor
https://api.use2mind.com/mcp

Claude

Abre los ajustes de conectores, elige añadir un conector personalizado, ponle un nombre como 2Mind y pega la URL del servidor. En organizaciones, puede que un propietario tenga que añadirlo primero.

ChatGPT

Activa el modo desarrollador y crea un conector nuevo con la URL del servidor y autenticación OAuth. El modo desarrollador depende de tu plan de ChatGPT y de los ajustes del espacio de trabajo.

Otros clientes

Apunta el cliente a la URL del servidor. Encuentra por sí mismo el servidor de autorización a partir de los metadatos OAuth del servidor; no hay nada más que configurar.

Qué pasa al conectarlo

  1. Tu asistente abre la página de inicio de sesión de 2Mind en el navegador.
  2. Inicias sesión con Google, con correo y contraseña, o con Apple en dispositivos Apple.
  3. Revisas lo que pide la app y eliges un nivel de acceso.
  4. Vuelves a tu asistente y aparecen las herramientas de 2Mind.

Niveles de acceso

Cuando el asistente pide acceso de escritura, la pantalla de consentimiento te deja elegir. El nivel que elijas se comprueba en cada llamada, no solo al conectar.

«Read only»: solo lectura (predeterminado)
Buscar, leer y listar. Las herramientas de escritura ni siquiera aparecen para esta conexión.
«Read and make changes»: lectura y cambios
Añade las herramientas que piden cambios. Cada cambio sigue pasando por aprobación.

Autenticación y permisos

El servidor solo acepta tokens de acceso OAuth 2.0 enviados en la cabecera Authorization como token bearer. No hay claves de API, y ningún token se pasa nunca como argumento de una herramienta.

Una petición sin token válido recibe 401 con una cabecera WWW-Authenticate que apunta a los metadatos del recurso protegido. Desde ahí el cliente encuentra el servidor de autorización e inicia un flujo de código de autorización con PKCE.

  • POST https://api.use2mind.com/mcp
  • GET https://api.use2mind.com/.well-known/oauth-protected-resource
  • issuer https://auth.use2mind.com
PermisoPermiteHerramientas
notes:readBuscar, listar y leer notas completas; listar etiquetas.
collections:readListar y leer colecciones; listar etiquetas.
todos:readListar tareas con filtros.
notes:writePedir crear, editar, etiquetar, mover y borrar notas.
todos:writePedir crear, editar, reordenar y borrar tareas.
collections:writePedir crear, editar, ordenar y archivar colecciones.

Inicia sesión con el mismo método que usas en la app. Las cuentas no se unen entre proveedores de inicio de sesión; otro proveedor o una dirección de reenvío privado de Apple puede crear una cuenta de 2Mind aparte y vacía.

Cómo funcionan los cambios

Ninguna herramienta de escritura cambia tus datos por sí sola. Lee la versión actual de lo que modifica, prepara un plan exacto y crea una solicitud de aprobación. La respuesta es una operación que puedes seguir.

  1. El asistente crea una solicitudLlama a una herramienta de escritura con un requestId que él mismo genera. El servidor responde con una operación en pending_approval y un resumen de una línea del cambio.
  2. Recibes una notificaciónTe llega una notificación al teléfono. Ahí apruebas o rechazas el cambio; el asistente nunca aprueba en tu nombre.
  3. Se aplica el cambioAl aprobarlo, el cambio se aplica y queda registrado para poder deshacerlo más tarde. Las solicitudes sin respuesta caducan a las 24 horas.
  4. El asistente comprueba el resultadoLlama a get_operation con el operationId para ver si el cambio se aplicó, se rechazó, falló o caducó.

Ejemplo

Llamada a la herramienta

{
  "name": "create_todo",
  "arguments": {
    "requestId": "3f6c2a9e-8b1d-4c7a-9e2f-5a1b7d4c8e60",
    "collectionId": "b2e4d6f8-1a3c-4e5f-8a7b-9c0d1e2f3a4b",
    "content": "Pedir cita con el dentista",
    "dueDate": "2026-10-02T09:00:00+03:00"
  }
}

Resultado

{
  "operationId": "c81f0e2a-6d4b-4a9e-b3c7-1f2e3d4c5b6a",
  "action": "create_todo",
  "status": "pending_approval",
  "summary": "Añadir la tarea «Pedir cita con el dentista» a Recados",
  "approvalUrl": "https://api.use2mind.com/connect/approvals/c81f0e2a-6d4b-4a9e-b3c7-1f2e3d4c5b6a",
  "expiresAt": "2026-10-01T09:00:00.000Z"
}

El objeto de operación

operationIdIdentificador que se pasa a get_operation.
actionLa herramienta que creó la solicitud.
statusEn qué punto está la solicitud; consulta la tabla de abajo.
summaryUna línea escrita por el servidor que describe exactamente qué cambiará.
approvalUrlUna página protegida con inicio de sesión donde también se puede revisar la solicitud.
expiresAtCuándo caduca una solicitud sin respuesta.
commandLogIdSe rellena al aplicarse. Úsalo con undo_command.
resultEl resultado de un cambio aplicado, como el id de una nota nueva.

Valores de estado

pending_approvalEsperando a que la apruebes o la rechaces.
appliedAprobada y aplicada.
failedAprobada, pero no se pudo aplicar, por ejemplo porque el elemento cambió entretanto.
rejectedLa rechazaste.
expiredSin respuesta en 24 horas. No cambió nada.

Aplicar sin preguntar

En «Connected apps», cada conexión tiene un interruptor «Apply changes without asking», desactivado por defecto. Si está activado, los cambios reversibles de esa conexión se aplican al momento y se devuelven como applied. delete_entry y delete_todo siguen esperando tu aprobación. Cada cambio sigue registrándose y se puede deshacer.

Deshacer

El asistente puede deshacer un cambio aplicado con undo_command, usando commandLogId y version, o puedes hacerlo tú desde «Recent changes» con un toque. Si el elemento se editó después del cambio, se rechaza el deshacer, así que nunca sobrescribe tu trabajo más reciente.

Referencia de herramientas

Una conexión solo lista las herramientas que su nivel de acceso permite. Toda herramienta de escritura recibe un requestId: reintentar con el mismo requestId devuelve la misma operación en lugar de crear un segundo cambio.

Lectura

Solo lecturaPermiso: notes:read

Busca en tus notas una palabra clave o un tema y devuelve hasta 20 resultados con su id, título y enlace.

ParámetroTipoObligatorioDescripción
querystringSíLa palabra clave o el tema que se busca.1–2000 caracteres

fetch

Solo lecturaPermiso: notes:read

Lee una nota completa por su id. Una nota muy larga llega por partes; pasa el nextId devuelto para leer la siguiente.

ParámetroTipoObligatorioDescripción
idstringSíUn id de nota de search, o un nextId de un fetch anterior para continuar una nota larga.hasta 80 caracteres

list_entries

Solo lecturaPermiso: notes:read

Lista tus notas, las más recientes primero, con filtro opcional por colección, etiqueta, un texto contenido en el título o el cuerpo, o un rango de fechas de creación. Cada fila incluye un fragmento, todas las colecciones de la nota y sus etiquetas. Paginado.

ParámetroTipoObligatorioDescripción
collectionIduuidNoSolo notas de esta colección.
tagstringNoSolo notas con esta etiqueta, sin distinguir mayúsculas.1–100 caracteres
containsstringNoSolo notas cuyo título o cuerpo contiene este texto, sin distinguir mayúsculas.1–200 caracteres
createdAfterstring (date-time)NoSolo notas creadas en este momento o después. ISO 8601 con desfase de zona horaria.
createdBeforestring (date-time)NoSolo notas creadas en este momento o antes. ISO 8601 con desfase de zona horaria.
limitintegerNoCuántos elementos devolver por página.1–50 · predeterminado 20
cursorstring (date-time)NoEl valor nextCursor de la página anterior.

list_collections

Solo lecturaPermiso: collections:read

Lista tus colecciones en tu orden guardado, con tipo, colección superior, estado de archivo y si contiene tareas. Paginado.

ParámetroTipoObligatorioDescripción
limitintegerNoCuántos elementos devolver por página.1–50 · predeterminado 20
cursorstringNoEl valor nextCursor de la página anterior.hasta 100 caracteres
includeArchivedbooleanNoDevolver también las colecciones archivadas. Ocultas por defecto.

get_collection

Solo lecturaPermiso: collections:read

Lee una colección por su id: los mismos campos que list_collections, más su última modificación, cuántas notas contiene y cuántas de sus tareas siguen pendientes.

ParámetroTipoObligatorioDescripción
collectionIduuidSíLa colección que se lee.

list_todos

Solo lecturaPermiso: todos:read

Lista tus tareas, con filtro opcional por colección, estado o rango de fechas de vencimiento. Paginado.

ParámetroTipoObligatorioDescripción
collectionIduuidNoSolo tareas de esta colección.
completedbooleanNoSolo tareas completadas (true) o pendientes (false).
dueAfterstring (date-time)NoSolo tareas que vencen en este momento o después. ISO 8601 con desfase de zona horaria.
dueBeforestring (date-time)NoSolo tareas que vencen en este momento o antes. ISO 8601 con desfase de zona horaria.
limitintegerNoCuántos elementos devolver por página.1–50 · predeterminado 20
cursorstringNoEl valor nextCursor de la página anterior.hasta 100 caracteres

list_tags

Solo lecturaPermiso: notes:read · collections:read

Lista tu vocabulario de etiquetas con cuántas notas y colecciones lleva cada una, las más usadas primero. Las notas y las colecciones comparten un solo vocabulario.

ParámetroTipoObligatorioDescripción

Notas

create_entry

Requiere aprobaciónPermiso: notes:write

Pide una nota nueva en una colección existente. La colección siempre se elige de forma explícita.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
collectionIduuidSíLa colección donde se crea la nota. Se obtiene con list_collections.
contentstringSíEl cuerpo de la nota.1–20.000 caracteres
titlestring o nullNoEl título de la nota. null lo elimina.hasta 500 caracteres
tagsstring[]NoEtiquetas de la nota nueva, sin #. Reutiliza nombres de list_tags cuando puedas.hasta 10 elementos

update_entry

Requiere aprobaciónPermiso: notes:write

Pide cambiar el título, el cuerpo o las etiquetas de una nota.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
entryIduuidSíLa nota que se cambia.
titlestring o nullNoEl título de la nota. null lo elimina.hasta 500 caracteres
contentstring o nullNoEl cuerpo de la nota.hasta 20.000 caracteres
tagsstring[]NoEl conjunto completo y nuevo de etiquetas, sin #. Lo que no se incluya se elimina; [] las elimina todas. Omítelo para no tocar las etiquetas.hasta 10 elementos

move_entry

Requiere aprobaciónPermiso: notes:write

Pide un nuevo conjunto de colecciones para una nota. La nota sale de cualquier colección no incluida, junto con las tareas que creó allí.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
entryIduuidSíLa nota que se cambia.
collectionIdsuuid[]SíEl conjunto completo y nuevo de colecciones de la nota.1–5 elementos
primaryCollectionIduuidNoLa colección principal. Debe estar en collectionIds; por defecto, la primera.

delete_entry

Siempre requiere aprobaciónPermiso: notes:write

Pide borrar una nota y las tareas vinculadas. Siempre requiere aprobación.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
entryIduuidSíLa nota que se cambia.

Tareas

create_todo

Requiere aprobaciónPermiso: todos:write

Pide una tarea nueva al final de una lista de tareas.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
collectionIduuidSíUna colección cuyo carriesTodos es true en list_collections.
contentstringSíEl texto de la tarea.1–2000 caracteres
dueDatestring (date-time) o nullNoLa fecha de vencimiento, ISO 8601 con desfase de zona horaria. null la borra.

update_todo

Requiere aprobaciónPermiso: todos:write

Pide cambiar el texto, el estado o la fecha de vencimiento de una tarea.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
todoIduuidSíLa tarea que se cambia.
contentstring o nullNoEl texto de la tarea.hasta 20.000 caracteres
isCompletedbooleanNoMarcar la tarea como hecha (true) o pendiente (false).
dueDatestring (date-time) o nullNoLa fecha de vencimiento, ISO 8601 con desfase de zona horaria. null la borra.

delete_todo

Siempre requiere aprobaciónPermiso: todos:write

Pide borrar una tarea. Siempre requiere aprobación.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
todoIduuidSíLa tarea que se cambia.

reorder_todos

Requiere aprobaciónPermiso: todos:write

Pide un nuevo orden para las tareas de una colección, la más importante primero. Basta con nombrar las tareas que se mueven; el resto conserva su orden detrás de ellas.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
collectionIduuidSíLa colección cuyas tareas se reordenan. Cada id debe pertenecer a ella.
orderedIdsuuid[]SíIds de tareas en el nuevo orden, de list_todos. Las tareas no nombradas conservan su orden detrás de estas.1–100 elementos

Colecciones

create_collection

Requiere aprobaciónPermiso: collections:write

Pide una colección nueva y vacía de un tipo dado, con etiquetas opcionales. El tipo no se puede cambiar después y los nombres son únicos dentro de la misma colección superior.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
namestringSíEl nombre de la colección, único dentro de la misma colección superior.1–200 caracteres
typestringnotetodo_listplanidearesearcheventgenericSíEl tipo de colección. todo_list contiene tareas; las demás contienen notas.
descriptionstring o nullNoUna descripción breve. null la borra.hasta 2000 caracteres
parentIduuid o nullNoCrearla dentro de esta colección. Omítelo o usa null para el nivel superior.
tagsstring[]NoEtiquetas de la colección nueva, sin #. Las colecciones que comparten etiqueta se muestran como relacionadas.hasta 5 elementos

update_collection

Requiere aprobaciónPermiso: collections:write

Pide renombrar una colección, cambiar su descripción o sus etiquetas, o moverla dentro de otra colección. El tipo no se puede cambiar.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
collectionIduuidSíLa colección que se cambia.
namestringNoEl nombre de la colección, único dentro de la misma colección superior.1–200 caracteres
descriptionstring o nullNoUna descripción breve. null la borra.hasta 2000 caracteres
parentIduuid o nullNoMoverla dentro de esta colección. null la mueve al nivel superior.
tagsstring[]NoEl conjunto completo y nuevo de etiquetas, sin #. Lo que no se incluya se elimina; [] las elimina todas. Omítelo para no tocar las etiquetas.hasta 5 elementos

reorder_collections

Requiere aprobaciónPermiso: collections:write

Pide un nuevo orden para tus colecciones, la más importante primero.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
orderedIdsuuid[]SíIds de colección en el nuevo orden, obtenidos de list_collections.1–50 elementos

archive_collection

Requiere aprobaciónPermiso: collections:write

Pide archivar una colección. Se conserva intacta y se oculta de la lista predeterminada.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
collectionIduuidSíLa colección que se cambia.

unarchive_collection

Requiere aprobaciónPermiso: collections:write

Pide sacar una colección del archivo.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
collectionIduuidSíLa colección que se cambia.

Operaciones

undo_command

Requiere aprobaciónPermiso: notes:write · todos:write · collections:write

Pide deshacer un cambio que ya se aplicó.

ParámetroTipoObligatorioDescripción
requestIduuidSíUn UUID que genera el asistente. Reutilizarlo devuelve la operación existente.
commandLogIduuidSíEl commandLogId de la operación aplicada.
versionintegerSíLa versión del cambio que se deshace.1 o más

get_operation

Solo lecturaPermiso: Cualquier permiso de 2Mind

Lee el estado y el resultado de una solicitud creada por una herramienta de escritura. Solo devuelve solicitudes de la misma conexión.

ParámetroTipoObligatorioDescripción
operationIduuidSíEl operationId que devolvió una herramienta de escritura.

list_operations

Solo lecturaPermiso: Cualquier permiso de 2Mind

Lista las solicitudes creadas por esta conexión, las más recientes primero, con filtro opcional por estado. Cada fila es la misma operación que devuelve get_operation. Paginado.

ParámetroTipoObligatorioDescripción
statusstringpending_approvalappliedfailedrejectedexpiredNoSolo solicitudes en este estado.
limitintegerNoCuántos elementos devolver por página.1–50 · predeterminado 20
cursorstring (date-time)NoEl valor nextCursor de la página anterior.

Peticiones de ejemplo

No necesitas nombrar herramientas. Pregunta con naturalidad y el asistente las elige:

  • ¿Qué guardé sobre la reforma de la cocina el mes pasado?
  • Resume mis notas de la colección Investigación.
  • ¿Qué tareas me vencen esta semana?
  • Añade «renovar el pasaporte» a mi lista Recados, para el viernes.
  • Crea una colección Ideas de viaje y mueve allí mis notas sobre Lisboa.

Límites y errores

Cada conexión puede hacer hasta 60 peticiones por minuto. Los errores de protocolo llegan como respuestas HTTP; los problemas de una llamada concreta llegan como errores de herramienta que el asistente puede leer.

RespuestaSignificadoQué hacer
401 invalid_tokenFalta el token, ha caducado o se revocó la conexión.Vuelve a conectar 2Mind en tu asistente e inicia sesión de nuevo.
403 invalid_originLa petición vino de una página web que no puede llamar al servidor.Usa un asistente o cliente compatible en lugar de una página web.
429 rate_limitedLa conexión superó las 60 peticiones en un minuto.Espera el tiempo indicado en Retry-After, 60 segundos, y vuelve a intentarlo.
isError: trueLa llamada llegó al servidor pero no se pudo completar, por ejemplo por falta de permiso, datos no válidos o un elemento que cambió.Lee el texto del error. El asistente suele poder corregir los datos o volver a leer el elemento y reintentar.

Límites de tamaño

  • search: consultas de hasta 2.000 caracteres, hasta 20 resultados.
  • list_collections y list_todos: 20 elementos por página por defecto, 50 como máximo.
  • Notas: cuerpo de hasta 20.000 caracteres, título de hasta 500.
  • Una nota puede estar en hasta 5 colecciones a la vez.
  • Etiquetas: hasta 10 por nota y 5 por colección, nombres de hasta 100 caracteres.

Planes

El servidor MCP está incluido en los planes Plus y Pro. Conectar un asistente no cambia lo que incluye tu plan en las apps.

Solución de problemas

Mi asistente puede leer pero no hacer cambios.

La conexión está en solo lectura. Cambiar el nivel requiere un nuevo consentimiento: revoca la conexión en «Connected apps», vuelve a conectar y elige «Read and make changes».

El asistente dijo que hizo un cambio, pero no pasó nada.

Probablemente el cambio espera tu aprobación. Revisa la notificación en tu teléfono. Las solicitudes sin respuesta caducan a las 24 horas.

Veo una cuenta vacía después de conectar.

Seguramente iniciaste sesión con un método distinto al de la app. Desconecta y vuelve a conectar con el mismo inicio de sesión que usas en 2Mind.

Mi asistente me pide iniciar sesión una y otra vez.

La conexión se revocó o su inicio de sesión caducó. Quita 2Mind del asistente y vuelve a añadirlo.

¿Puede un asistente borrar mis notas sin preguntar?

No. delete_entry y delete_todo siempre esperan tu aprobación, incluso con «Apply changes without asking» activado.

¿Cómo desconecto un asistente?

Revócalo en «Connected apps». El acceso se corta al instante. También puedes quitar el conector en los ajustes del propio asistente.