Notion MCP con dos agentes: clave, hora y conteo en una tabla de competencia
La memoria de Notion es privada y una tabla de equipo pide sus reglas. Probamos 150 filas: qué clave, qué hora y qué conteo guardan Claude Code y Codex.

El 4 de noviembre de 2026, Notion presentó Notion MCP como «un cerebro compartido» para todos tus agentes. Pero esa memoria es una base de datos privada de cada persona, no una tabla de equipo. Si quieres que Claude Code y Codex (con una cuenta de ChatGPT) escriban datos de redes sociales de la competencia en una misma base de Notion, lo difícil sigue en tus manos: qué campo sirve de clave para no duplicar, qué hora cuenta como actualización y qué conteo manda cuando dos fuentes no coinciden.
Nuestra prueba lo deja claro: siete llamadas de listado devolvieron 130 filas y solo 68 (52,3 %) se podían guardar tal cual como «publicación nueva de la marca». De las otras 62, 3 eran videos fijados antiguos, 19 venían de otras cuentas (2 colaboraciones en Instagram y 17 videos ajenos a la cuenta principal en la búsqueda de TikTok) y 40 eran filas de YouTube con fechas relativas como «10d ago». Hicimos 12 llamadas reales a la API de datos de EveryInfra el 8 de noviembre de 2026, entre las 00:17 y las 00:48 (hora de Singapur), una de ellas sin clave y sin cobro, sobre dos marcas de cuidado de la piel, CeraVe y The Ordinary, en TikTok, Instagram y YouTube. Añadimos una búsqueda en español, «cerave piel grasa», que sumó otras 20 filas con un perfil muy distinto: solo 4 eran del último mes. Con precios de catálogo, tres marcas y dos agentes que corren una vez al día cuestan 0,048372 USD por semana en llamadas de datos, unos 0,21 USD al mes.
Este artículo resuelve un trabajo concreto. Un equipo de marca en México, Colombia o España ya usa Claude Code para scripts y Codex, con su cuenta de ChatGPT, para investigar. Las dos herramientas pueden conectarse a Notion MCP y al servidor MCP remoto de EveryInfra. El equipo quiere que cada agente traiga una parte de los datos de la competencia y los escriba en una misma base de Notion, para que el lunes todos abran la misma tabla.
Primero explicamos qué lanzó Notion y dónde están sus límites. Después diseñamos la tabla, mostramos lo que enseñaron los datos reales, damos la configuración de los dos clientes y sumamos el costo semanal. No ejecutamos nada dentro de un espacio de trabajo de Notion. Por eso cada paso del lado de Notion aparece como «ejemplo de configuración», basado en la documentación oficial de Notion, Anthropic y OpenAI. Cada cifra de EveryInfra sale de una respuesta real de la API.

Qué lanzó Notion el 4 de noviembre y qué significa «memoria»
El 4 de noviembre de 2026, la cuenta de Notion en X anunció que ChatGPT, Claude, Muse y Bot ya pueden guardar lo que aprenden en una misma memoria dentro de Notion y usar las mismas habilidades (publicación de Notion en X). El mismo hilo ofrece un texto de configuración para ChatGPT y otro para Claude; a los demás agentes les basta pegar una línea que les pide seguir la guía de configuración de la documentación para desarrolladores y usar Notion como su sistema de contexto.
El Centro de ayuda lo resume en tres ideas. Cada agente conectado puede retomar el trabajo donde lo dejó el anterior. Los agentes guardan tus preferencias, decisiones y detalles de proyecto en una base Memories que solo tú puedes ver y editar. El texto de configuración respeta la estructura actual de tu espacio y pregunta antes de crear o cambiar algo (Centro de ayuda de Notion: Notion MCP).
La función de memoria ya existía desde octubre: las notas del 19 de octubre dicen que la sincronización de memoria empezó a funcionar ese día (notas del 19 de octubre). Lo del 4 de noviembre añadió, sobre todo, textos de configuración.
La documentación para desarrolladores aclara qué es esa memoria. Es una base Memories personal más una página About que la resume, y Notion crea ambas la primera vez que guardas un recuerdo. Tus recuerdos te pertenecen y no dan a ningún cliente acceso a contenido que tú no puedas ver. La memoria por MCP funciona en todos los planes, pero solo con conexiones que actúan como el usuario; no funciona con conexiones que pertenecen al espacio de trabajo (documentación de Notion: memoria personal). Para escribir un recuerdo se llama a notion-create-pages con parent igual a "memory" (referencia de herramientas de páginas).
Dos páginas oficiales no coinciden en un punto. La página del Centro de ayuda sobre Memories dice que funcionan en espacios con Notion AI activado, y Notion AI forma parte de Business y Enterprise (Ver tus Memories de Notion Agent). La documentación para desarrolladores dice «todos los planes». No pudimos probar cada plan. La comprobación segura es sencilla: intenta guardar un recuerdo en tu propio espacio.
Con estas fuentes juntas, la conclusión es clara. La memoria de Notion sirve para cosas como «esta persona quiere los riesgos al principio del informe» o «estas son las marcas del proyecto». No sirve para cientos de publicaciones de la competencia al día que lee todo un equipo. Esos datos van en una base de equipo normal, con campos y reglas que diseñas tú.
| Pregunta | Memories personal de Notion | Base de competencia del equipo (este artículo) |
|---|---|---|
| Quién la ve | Solo tú | El equipo, según permisos de página y de columna |
| Cómo escribe el agente | notion-create-pages con parent: "memory" | notion-create-pages en la base, notion-update-page para cambiar |
| Tipo de conexión | Solo conexiones de usuario | Ambas; los tokens MCP del espacio requieren Business o Enterprise |
| Para qué sirve | Preferencias, decisiones, contexto | Una fila estructurada por publicación |
| Duplicados | Los gestiona Notion | No hay restricción única; el agente busca antes de escribir |
| Probado aquí | No | Lado de datos probado; lado de Notion como ejemplo de configuración |
Por qué los datos de competencia van en una base y no en Memories
Hay tres razones. La primera es la visibilidad: Memories es privada y el agente de un colega no puede leer la tuya, mientras que una tabla de competencia existe para que la lea un grupo. La segunda es la forma de los datos: un recuerdo es un texto corto que completa el contexto al inicio de la siguiente conversación, y una publicación de la competencia es un registro con columnas fijas que se ordena, se filtra y se cuenta por semana, justo lo que hacen bien las bases y vistas de Notion.
La tercera razón es la trazabilidad. El 29 de octubre Notion añadió notion-get-version-changes, que lista qué cambió en una página o base durante un periodo y quién hizo cada cambio, incluidas las ediciones de Notion AI, de los agentes personalizados y de los clientes MCP. El 3 de noviembre llegó notion-restore-version, que devuelve una página o base a un momento anterior (registro de cambios para desarrolladores, referencia de herramientas de historial). Cuando dos agentes escriben en la misma tabla, puedes saber cuál escribió mal y deshacerlo. Una memoria privada no te da nada de eso.
Hay otro detalle que se pasa por alto. Una base de Notion no tiene restricción de clave única. La propiedad ID numera cada fila, pero ese número lo genera Notion y no se puede editar (Centro de ayuda: propiedades de base de datos); empieza en 1 y se asigna a cada página (Centro de ayuda: propiedad Unique ID). No impide que entre un duplicado desde fuera. Si los dos agentes creen que el mismo video de TikTok es nuevo, la tabla tendrá dos filas. Por eso hay que diseñar la búsqueda de duplicados antes de empezar y mantener pequeña cada consulta.
Diseño de campos: 11 campos de datos, cada uno con su origen
La tabla tiene 11 campos de datos. Seguimos tres reglas: guardar solo lo que el informe semanal necesita; que cada campo corresponda a un campo de response_fields en el catálogo de EveryInfra; y que un mismo nombre signifique lo mismo en todas las plataformas. El catálogo es gratuito: GET https://api.everyinfra.com/api/v1/social/catalog devuelve los parámetros, los campos de respuesta y el price_usd de cada capacidad (catálogo de EveryInfra).
| Campo en Notion | Tipo | TikTok (`tiktok/user_videos`, `tiktok/search`) | Instagram (`instagram/user_posts`) | YouTube (`youtube/user_posts`, `youtube/video`) |
|---|---|---|---|---|
| Key (título) | Título | tiktok: + id | instagram: + post_id | youtube: + id |
| Platform | Selección | Valor fijo | Valor fijo | Valor fijo |
| Brand | Selección | Según author_username | Según author_username | Según author_username |
| URL | URL | url | url | url |
| Posted at | Fecha (UTC) | posted_at | posted_at | posted_at de youtube/video |
| Text | Texto, primeros 200 caracteres | text | text | title |
| Views | Número | view_count | Falta en algunas publicaciones | view_count |
| Likes | Número | like_count | like_count | like_count |
| Comments | Número | comment_count | comment_count | comment_count |
| Observed at | Fecha (UTC) | Hora de la llamada | Hora de la llamada | Hora de la llamada |
| Agent | Selección | claude-code | codex | codex |
Tres de estas filas las definimos solo después de ver datos reales; el texto del catálogo no basta. Primero, la columna Key no puede ser de tipo número para los identificadores de TikTok; más abajo explicamos por qué. Segundo, Instagram devuelve dos identificadores: post_id, un código corto de 11 caracteres como DfU4LSwCopm, e id, con la forma «número_número», como 4023087433800911462_260452448, donde la parte tras el guion bajo es la cuenta. Usamos post_id porque coincide con el código de la URL de la publicación y una persona lo puede comprobar a simple vista. Tercero, la hora de publicación de YouTube debe venir de youtube/video, no de la lista del canal.
Un último detalle viene de Notion. Si tu base tiene una columna llamada «URL», Notion MCP la guarda bajo la clave userDefined:URL y, desde el 16 de octubre, lo avisa en la lista warnings de la respuesta (entrada del 16 de octubre del registro de cambios). Cuando el agente actualice esa fila después, debe usar el nombre de clave que vino en la respuesta.
Los datos reales también nos llevaron a añadir columnas de control que el agente calcula con reglas y que no vienen de la API: Count precision (si un conteo es exacto o redondeado), Owned (si la cuenta que publica es la propia marca) y, para la búsqueda en español, First seen (la primera vez que el agente vio la publicación) y Saves, que toma collect_count. Las secciones siguientes muestran por qué.

Llamadas reales: 7 listados, 130 filas y menos del 60 % listas para guardar
Hicimos las llamadas en dos tandas el 8 de noviembre de 2026, entre las 00:18 y las 00:27, hora de Singapur. Repartimos el trabajo como lo haría un equipo: Claude Code se encarga de TikTok, y Codex, con una cuenta de ChatGPT, se encarga de Instagram y YouTube. Elegimos CeraVe y The Ordinary porque las dos marcas tienen cuentas oficiales en las tres plataformas y publican a menudo; una es una marca de farmacia de gran consumo y la otra apunta a quienes leen ingredientes. Todas las llamadas usaron la misma clave de prueba.
| Hora de Singapur | Capacidad | Parámetros | Filas | Cobro | Papel |
|---|---|---|---|---|---|
| 00:18:08 | tiktok/user_videos | username: cerave, limit: 20 | 20 | 0,000556 USD | Claude Code |
| 00:18:28 | tiktok/search | keyword: cerave, content_type: video | 20 | 0,000556 USD | Claude Code |
| 00:18:44 | youtube/user_posts | url: youtube.com/@CeraVe | 20 | 0,000556 USD | Codex |
| 00:19:02 | instagram/user_posts | username: cerave (asíncrona) | 20 | 0,000556 USD | Codex |
| 00:21:58 | tiktok/user_videos (por MCP) | username: theordinary, limit: 10 | 10 | 0,000556 USD | Claude Code |
| 00:25:49 | youtube/video | URL de un video de CeraVe | 1 | 0,000556 USD | Codex |
| 00:26:30 | instagram/user_posts | username: theordinary (asíncrona) | 20 | 0,000556 USD | Codex |
| 00:27:35 | youtube/user_posts | url: youtube.com/@theordinary | 20 | 0,000556 USD | Codex |
| 00:34:09 | tiktok/search | keyword: cerave piel grasa | 20 | 0,000556 USD | Claude Code |
Cada llamada tiene precio fijo: limit 20 y limit 10 cuestan lo mismo, 0,000556 USD. El catálogo marca instagram/user_posts como asíncrona: la petición devuelve de inmediato un 202 y un poll_url, consultamos esa dirección y a las 00:21:47 llegaron 20 filas. Los «7 listados» son todas las llamadas de la tabla salvo la consulta única de youtube/video y la búsqueda en español, que analizamos aparte. Juntos devolvieron 130 filas.
Clasificamos esas 130 filas con una regla fija en un script. Una fila se puede guardar como «publicación nueva de la marca» solo si cumple tres condiciones: la cuenta que publica es la de la marca, is_pinned no es verdadero y posted_at es una hora absoluta en formato ISO 8601.
El gráfico muestra tres tipos de filas que parecen datos pero no se pueden guardar tal cual. El primero son los videos fijados. Los 3 primeros videos del perfil de TikTok de CeraVe están fijados y se publicaron el 10 de febrero, el 24 de febrero y el 31 de agosto de 2026; el de agosto tiene 71,4 millones de vistas. Aparecen al principio de la lista de «videos recientes». Si un agente toma las primeras filas como publicaciones de la semana, presenta un anuncio de agosto como nuevo y suma 71,4 millones de vistas a esta semana. La respuesta trae el campo is_pinned, así que basta con filtrar, pero el agente tiene que saber que debe hacerlo. Las 10 filas de The Ordinary no tenían videos fijados, de modo que revisar una sola cuenta no basta para ver el problema.
El segundo tipo son las publicaciones de otras cuentas. Entre las 20 filas de Instagram de CeraVe, 2 vienen de otras cuentas: un evento conjunto de una cafetería del 6 de noviembre y un video en colaboración con una celebridad del 22 de octubre. Aparecen en el perfil de la marca porque las colaboraciones de Instagram se muestran en las dos cuentas. Decidir si cuentan para el alcance de la marca es una decisión de negocio; en cualquier caso, la tabla necesita una columna que diga «quien publica no es la marca», o el informe sumará a la marca los «me gusta» de otra cuenta.
El tercer tipo son las fechas relativas de YouTube. Las llamadas youtube/user_posts de las dos marcas devolvieron 20 filas cada una y todos los valores de posted_at eran texto relativo como «10d ago», «2w ago», «1mo ago» o «1y ago». No es un error de la API: la lista de videos del canal muestra así las fechas. Pero una tabla que agrupa por semana no puede usar «1mo ago», que puede significar 30 o 59 días. Más abajo explicamos cómo completar ese dato.
La búsqueda en español: «cerave piel grasa» trae contenido que no caduca
La búsqueda con tiktok/search responde a otra pregunta que el listado del perfil. El perfil muestra lo que publica la marca; la búsqueda muestra quién habla de la marca. A las 00:34:09 buscamos «cerave piel grasa» y llegaron 20 videos de 19 cuentas distintas. Solo uno venía de la cuenta de la marca: un video en inglés publicado en Estados Unidos el 1 de julio de 2026, con 158 442 vistas. Los otros 19 eran de creadores.
| Campo de `tiktok/search` | «cerave piel grasa» (20 videos, 00:34:09) | «cerave» (20 videos, 00:18:28) |
|---|---|---|
country | EE. UU. 8, Bolivia 3, México 3, Colombia, España, Guatemala, Honduras, Perú y Ecuador 1 cada uno | EE. UU. 13, Canadá 2, otros 5 países 1 cada uno |
language | es 18, en 2 | en 19, th 1 |
| Publicados en los últimos 30 días | 4 de 20 | 13 de 20 |
| Publicados en los últimos 7 días | 3 de 20 | 12 de 20 |
| Publicación más antigua | 13 de marzo de 2024 | 17 de mayo de 2026 |
| Mediana de vistas | 38 291 | 12 018 |
| Mediana de guardados por cada «me gusta» | 0,47 | 0,09 |
| Videos en común con la otra búsqueda | 0 | 0 |
La diferencia más útil está en las fechas y en los guardados. En español, la búsqueda trae sobre todo videos que siguen vivos durante meses: rutinas para piel grasa, comparaciones de limpiadores, explicaciones de ingredientes. Solo 4 de 20 eran del último mes y el más antiguo tenía casi dos años y ocho meses. Además, la gente los guarda mucho: la mediana de collect_count dividido entre like_count fue 0,47, unas cinco veces más que en la búsqueda «cerave» en inglés. El video con más guardados acumulaba 80 354.
| Tipo de fila | Ejemplo en nuestros datos | Dónde va | Columna que manda |
|---|---|---|---|
| Publicación propia con fecha completa | 68 de 130 filas de listados | Tabla de publicaciones de marca | Posted at |
| Video fijado antiguo | 3 videos de CeraVe en TikTok | No entra | No aplica |
| Colaboración de otra cuenta | 2 filas de Instagram de CeraVe | Tabla de marca con Owned en «no» | Posted at |
| Solo fecha relativa | 40 filas de YouTube | Espera a youtube/video | Posted at, tras completarla |
| Video de creador en la búsqueda | 19 de 20 en «cerave piel grasa» | Tabla de «quién habla de la marca» | First seen |
Esto cambia el diseño de la tabla. Si el agente trata «entró hoy en la tabla» como «se publicó esta semana», el informe del lunes dirá que la conversación sobre la marca creció, cuando en realidad la búsqueda solo trajo videos de 2024 y 2025. Por eso añadimos First seen, la hora en que el agente vio la publicación por primera vez, que nunca cambia después, separada de Posted at. Y añadimos Saves, porque en este tipo de contenido los guardados dicen más que los «me gusta»: un video que la gente guarda es una referencia a la que volverá.
Ninguno de los 20 videos tenía is_ad verdadero y solo uno llevaba una etiqueta de colaboración pagada en hashtags. Que is_ad sea falso no significa que no haya patrocinio: ese campo marca espacios de anuncio en el feed, no publicaciones de creadores pagadas por la marca. La página de búsqueda por palabra clave en TikTok lista todos los campos de cada fila.
La clave para no duplicar: qué identificador y por qué no puede ser un número
Cuando dos agentes escriben en la misma tabla, la mayoría de los duplicados vienen de una misma publicación que devuelven dos capacidades. Nos pasó con las dos llamadas de TikTok de CeraVe en inglés: el resultado de tiktok/user_videos y el de tiktok/search comparten 3 identificadores de video. Si Claude Code escribe primero la lista del perfil y luego la búsqueda sin comprobar, la tabla gana 3 filas de más. La solución es una clave que no cambie entre capacidades: el nombre de la plataforma más el identificador propio de la publicación, por ejemplo tiktok:7704741979216694541. Antes de escribir, el agente busca la clave; si existe, actualiza la fila, y si no, crea una nueva.
El tipo de la clave da más problemas que su contenido. Los identificadores de video de TikTok tienen 19 dígitos; los 40 de las dos llamadas de CeraVe los tienen, y EveryInfra los devuelve como cadenas JSON. El problema llega después. Si un agente decide que «esto es un número» y lo escribe en una propiedad numérica de Notion, o lo trata como número en JavaScript, el valor se rompe. Un número de JavaScript es un doble IEEE 754 y el mayor entero que representa con exactitud es 2^53 − 1, es decir, 9 007 199 254 740 991 (MDN: Number.MAX_SAFE_INTEGER). Un identificador de TikTok de 19 dígitos es unas 850 veces mayor. Nuestro script convirtió los 40 identificadores a doble y de vuelta: 0 de 40 quedaron intactos y los últimos dígitos cambiaron siempre.
Por eso la clave debe ser texto, y la columna de título es el mejor lugar. Los permisos por columna no pueden restringir el título en Notion (Centro de ayuda: acceso a propiedades) y Notion recomienda a los agentes apoyarse en títulos claros y descriptivos (consejos de Notion MCP). En la búsqueda en español no hubo ningún video repetido con el perfil ni con la búsqueda en inglés, pero eso no cambia la regla: el próximo lunes, un video de la marca puede aparecer en las dos listas.
Los 3 videos compartidos mostraron otro problema: el mismo video tiene conteos con distinta precisión según la capacidad. Las dos llamadas se hicieron con solo 20 segundos de diferencia.
| Identificador del video | Vistas en `tiktok/user_videos` | Vistas en `tiktok/search` | «Me gusta» en `tiktok/user_videos` | «Me gusta» en `tiktok/search` |
|---|---|---|---|---|
| 7680224710004722958 (31 ago, fijado) | 71 400 000 | 71 440 950 | 22 900 | 22 850 |
| 7704741979216694541 (5 nov) | 4489 | 4489 | 163 | 163 |
| 7705119448046357774 (6 nov) | 2538 | 2538 | 82 | 82 |
Los conteos pequeños coinciden. En los grandes, la lista del perfil da valores redondeados (71 400 000 y 22 900) y la búsqueda da valores más exactos (71 440 950 y 22 850). Así que «gana la última escritura» es una mala regla: si el lado de Codex actualiza después esa fila con un valor redondeado, el exacto 71 440 950 se convierte en 71 400 000. Proponemos la columna Count precision con dos valores, exacto o redondeado, y una prueba en dos pasos. Primero, si tienes dos lecturas del mismo video, por ejemplo una del perfil y otra de la búsqueda, el valor con menos ceros al final es el exacto y el otro es el redondeado. Segundo, si solo tienes una lectura, mira la forma del número: un conteo de 10 000 o más es redondeado si se puede escribir como K o M con un decimal, como 22 900 (22,9K), 115 700 (115,7K) o 71 400 000 (71,4M).
La prueba de forma tiene un error conocido: un conteo exacto que cae en un número redondo, como 22 000, también parece redondeado. Un video de CeraVe publicado el 17 de octubre de 2026 (UTC) marcó 10 000 vistas en las dos lecturas, y el número solo no dice si es exacto. Un conteo redondeado no reemplaza a uno exacto, salvo que el nuevo sea más de un 1 % mayor. Estas reglas salen de 3 videos compartidos, y solo uno tiene conteos grandes; la muestra es pequeña, así que pruébalas con tus propias marcas antes de confiar en ellas.
La hora de actualización: Observed at, Posted at y el «10d ago» de YouTube
Una tabla que los agentes actualizan una y otra vez necesita dos horas: Posted at dice cuándo se publicó y Observed at dice cuándo el agente leyó los conteos. Leímos el perfil de TikTok de CeraVe dos veces, a las 00:18:08 y a las 00:48:17, con 30 minutos de diferencia. De los 17 videos no fijados, 6 ganaron vistas y el más reciente, del 6 de noviembre, subió un 0,99 %. 3 no cambiaron, y uno de ellos muestra 115 700, un conteo redondeado que oculta pequeños cambios. Los otros 8 perdieron entre un 0,01 % y un 0,07 % de sus vistas.
| Cambio entre las 00:18:08 y las 00:48:17 | Videos | Rango |
|---|---|---|
| Subieron | 6 | +0,01 % a +0,99 % |
| Sin cambio | 3 | 0 % |
| Bajaron | 8 | −0,01 % a −0,07 % |
Que los conteos bajen indica que la plataforma los corrige después, así que «quedarse con el mayor de dos valores» también es mala regla: hay que confiar en la lectura exacta más reciente. Sin Observed at, dos filas con conteos distintos el lunes no dicen nada, porque no se distingue el crecimiento real de dos lecturas hechas a distintas horas.
El problema de Posted at está en YouTube. Como vimos, youtube/user_posts solo da fechas relativas. A las 00:25:49 consultamos un video de CeraVe con youtube/video. La lista del canal decía «10d ago» y la consulta individual devolvió posted_at igual a 2026-10-28T04:00:20+00:00, es decir, el mediodía del 28 de octubre en Singapur, 10 días y 20 horas antes de la llamada: «10d ago» es un valor redondeado hacia abajo.
| Campo | `youtube/user_posts` (00:18:44) | `youtube/video` (00:25:49) |
|---|---|---|
posted_at | «10d ago» | 2026-10-28T04:00:20+00:00 |
| Duración | «0:25» | «00:00:25» |
view_count | 664 | 670 |
Las vistas pasaron de 664 a 670 porque entre las dos lecturas hubo 7 minutos. El campo oficial snippet.publishedAt de la API de YouTube también es una hora ISO 8601 (YouTube Data API: Videos), así que guarda todas las horas como valores ISO 8601 o RFC 3339 en UTC (RFC 3339) y nunca texto como «10d ago», que cambia de significado cada día.
Completar la fecha cuesta muy poco. Cada semana, el lado de Codex llama una vez a youtube/video por cada video nuevo de la lista del canal. Nuestros datos muestran 3 videos normales de CeraVe en las últimas tres semanas («10d», «2w» y «3w ago») y 1 de The Ordinary («3w ago»): unos 0,7 videos por marca y semana, o unos 2 por semana para tres marcas. Calculamos con 3 por semana para dejar margen, unas 13 consultas al mes a 0,000556 USD cada una. La página de video individual de YouTube lista los campos de esa consulta.
notion mcp claude code: ejemplo de configuración del lado de Claude Code
Claude Code necesita dos servidores MCP remotos: Notion y EveryInfra. La configuración oficial de Notion es un comando; después ejecutas /mcp dentro de Claude Code e inicias sesión con OAuth. La opción --scope project escribe la configuración en .mcp.json, en la raíz del proyecto, para que el equipo la comparta (documentación de Notion: conectar Claude Code). EveryInfra usa una clave Bearer en la cabecera. Los servidores HTTP remotos de Claude Code aceptan la opción --header, y los valores ${VAR} de .mcp.json se expanden desde variables de entorno al cargar el archivo (documentación MCP de Claude Code). Lo que sigue es un ejemplo de configuración; no ejecutamos este proyecto dentro de Claude Code.
# Notion: OAuth. Tras añadirlo, ejecuta /mcp en Claude Code para iniciar sesión.
claude mcp add --transport http notion https://mcp.notion.com/mcp --scope project
# EveryInfra: la clave Bearer sale de una variable de entorno, no del repositorio.
export EVERYINFRA_API_KEY=... # guárdala en tu perfil de shell o gestor de secretos
claude mcp add --transport http everyinfra https://api.everyinfra.com/mcp \
--header "Authorization: Bearer ${EVERYINFRA_API_KEY}" --scope project{
"mcpServers": {
"notion": { "type": "http", "url": "https://mcp.notion.com/mcp" },
"everyinfra": {
"type": "http",
"url": "https://api.everyinfra.com/mcp",
"headers": { "Authorization": "Bearer ${EVERYINFRA_API_KEY}" }
}
}
}La documentación de Claude Code avisa de algo importante: una entrada JSON con url pero sin type se trata como servidor local stdio, se omite y aparece un error. Escribe siempre "type": "http" (documentación MCP de Claude Code). Vigila también el número de herramientas. El servidor MCP de EveryInfra tiene 12 y la lista completa de Notion MCP supera las cincuenta (lista de herramientas de Notion MCP). Los dos juntos ocupan bastante contexto; Notion sugiere ejecutar /context para ver cuántos tokens usa cada servidor. Para este trabajo, del lado de EveryInfra bastan dos herramientas: everyinfra_call_api y everyinfra_get_job.
Para ejecutar el trabajo de forma programada hay dos caminos, cada uno con su costo. Las tareas programadas locales de Claude Code Desktop leen los archivos de configuración de tu equipo, así que el .mcp.json con cabecera funciona; pero solo corren mientras la aplicación está abierta y el equipo despierto, y si el equipo duerme esa ejecución se salta (tareas programadas de escritorio). Las tareas programadas en la nube, antes llamadas routines, corren en la nube de Anthropic aunque tu equipo esté apagado; están en los planes Pro, Max, Ultra, Team y Enterprise y se ejecutan como mucho una vez por hora (tareas programadas en la nube). Usan los conectores de tu cuenta de claude.ai. No probamos cómo llevar a esa ejecución un servidor privado con cabecera; depende de tus variables de entorno en la nube y de la configuración del repositorio, así que haz una prueba antes de depender de ella.
notion mcp connector: por qué ChatGPT web no acepta una cabecera y Codex sí
El lado de ChatGPT tiene una trampa más que el de Claude. En ChatGPT web, un servidor MCP propio ahora es un plugin: abres ChatGPT Plugins, pulsas el signo más, eliges Add custom MCP server, escribes un nombre y la URL del servidor, y eliges un método de autenticación. La documentación de OpenAI solo lista tres métodos: OAuth, sin autenticación, y OAuth o sin autenticación combinados (documentación de OpenAI: Add custom MCP server). No hay un campo para una cabecera fija; en el foro de OpenAI ya se preguntó lo mismo cuando salió el modo desarrollador (hilo de la comunidad de OpenAI). El servidor MCP remoto de EveryInfra usa una clave Bearer. Comprobamos /.well-known/oauth-protected-resource y /.well-known/oauth-authorization-server y los dos devuelven 404: hoy el servidor no admite OAuth.
¿Puede conectarse igualmente ChatGPT web? A las 00:17:36 llamamos a tools/call sin clave. El servidor respondió unauthorized y el texto del error indica que la clave puede ir en la cabecera Authorization: Bearer o en el parámetro ?key=, y que no hubo cobro. En teoría, podrías elegir «sin autenticación» en ChatGPT y pegar una URL con ?key=. No lo recomendamos: la clave quedaría visible en la configuración del plugin, en el historial del navegador y en registros, y cualquiera del espacio que vea esa configuración vería la clave. No probamos ese camino en ChatGPT.
El camino más seguro para el lado de ChatGPT es Codex. El Centro de ayuda de OpenAI indica que, si inicias sesión en Codex con una cuenta de ChatGPT, Codex usa los límites de tu plan, y que desde diciembre los planes Plus, Pro y Business comparten un mismo uso entre ChatGPT y Codex (ChatGPT Work and Codex, Understanding ChatGPT and Codex usage limits). La configuración MCP de Codex admite bearer_token_env_var: le das el nombre de una variable de entorno y Codex pone su valor en la cabecera Authorization (documentación MCP de Codex). Para Notion, la documentación de Notion añade [mcp_servers.notion] a ~/.codex/config.toml y luego ejecuta codex mcp login notion para OAuth (documentación de Notion: conectar Codex). Este es el ejemplo de configuración:
# ~/.codex/config.toml (ejemplo de configuración, sin probar)
[mcp_servers.notion]
url = "https://mcp.notion.com/mcp"
[mcp_servers.everyinfra]
url = "https://api.everyinfra.com/mcp"
bearer_token_env_var = "EVERYINFRA_API_KEY"
enabled_tools = ["everyinfra_call_api", "everyinfra_get_job"]
tool_timeout_sec = 120
default_tools_approval_mode = "writes"Dos valores salen de las llamadas reales. El tool_timeout_sec por defecto es 60 segundos y una llamada síncrona de EveryInfra puede esperar hasta 85. Nuestras llamadas síncronas por REST tardaron entre 3,8 y 32,5 segundos (la búsqueda en español, 12,5; la más lenta, youtube/video), y las plataformas lentas pueden pasar de 60, así que usamos 120. Con default_tools_approval_mode = "writes", Codex pide aprobación solo para las herramientas que no están marcadas como de solo lectura. EveryInfra marca everyinfra_call_api con readOnlyHint: false y destructiveHint: true, porque cada llamada cuesta dinero, así que Codex te preguntará cada vez; everyinfra_get_job está marcada como de solo lectura y consultar un trabajo no pide aprobación. ChatGPT web sigue la misma lógica: trata una herramienta sin readOnlyHint como de escritura y pide aprobación, y puedes hacer que recuerde la decisión durante la conversación (documentación de OpenAI). La sección de herramientas de la especificación MCP define estas anotaciones.
| Cliente | Conectar Notion | Conectar EveryInfra (clave Bearer) | Ejecución programada | Estado aquí |
|---|---|---|---|---|
| Claude Code (local) | OAuth con /mcp | --header o headers en .mcp.json | Tarea local de escritorio, equipo despierto | Ejemplo de configuración |
| Codex (cuenta de ChatGPT) | OAuth con codex mcp login notion | bearer_token_env_var | Sin probar | Ejemplo de configuración |
| Plugin de ChatGPT web | App de Notion del directorio, OAuth | Solo «sin autenticación» con ?key=; no recomendado | Sin probar | Sin probar |
| Cualquier cliente hacia EveryInfra | No aplica | Cabecera Bearer | No aplica | 12 llamadas reales |
Un viaje real de ida y vuelta: lo que envía el modelo y lo que vuelve
Con la configuración lista, esto es lo que ocurre a nivel MCP cuando un agente trae el perfil de TikTok de The Ordinary. El 8 de noviembre de 2026, a las 00:21:58 hora de Singapur, enviamos un tools/call JSON-RPC directamente a https://api.everyinfra.com/mcp, con la herramienta everyinfra_call_api y los argumentos plataforma tiktok, acción user_videos, usuario theordinary y límite 10. El servidor respondió con HTTP 200. result.content[0].text contiene una cadena JSON que, al analizarla, tiene 10 videos y un objeto billing con charged_usd igual a 0,000556.

Dos detalles de este viaje importan para la tabla. Primero, el id es la cadena "7705177610602532114", entre comillas: la API no lo trata como número y el error solo puede aparecer cuando el agente escribe en la tabla. Segundo, la respuesta completa de 10 videos ocupa 26 253 bytes, unos 2,6 KB por video, con decenas de campos: URLs de portada, música, biografía del autor y más. Si un agente pega la respuesta entera en el cuerpo de una página de Notion, cada fila pesa mucho y la siguiente búsqueda lee más. Por eso fijamos la lista de campos de antemano.
Cuánto pesa una fila: por qué escribimos solo 11 campos
Volvimos a serializar las mismas filas con solo los 11 campos permitidos y la fila media quedó en 419 bytes, frente a 0,7–2,6 KB de las filas originales. La diferencia viene de tres cosas: las URL firmadas de imágenes y videos, que caducan y luego no sirven; el perfil completo del autor, que se repite en cada fila; y los objetos anidados de música y etiquetas.
Las filas pequeñas ayudan de tres maneras. La primera es el límite de escritura de Notion: en una llamada a notion-create-pages, todas las páginas comparten un mismo límite de análisis, y si el contenido es muy grande o complejo, la llamada entera falla y no se crea ninguna página (referencia de herramientas de páginas). La segunda es el contexto del agente: la búsqueda de duplicados lee las filas de las últimas dos semanas, y con filas pequeñas caben más. La tercera es quien lee la tabla el lunes, que solo necesita estas columnas. Si quieres conservar la respuesta original, guárdala en un archivo local junto al agente y pon solo un enlace en la tabla.
Escribir en Notion: buscar la clave y luego crear o actualizar
El lado de Notion usa tres herramientas: notion-query-data-sources lee las filas actuales, notion-create-pages crea filas y notion-update-page las actualiza (referencia de herramientas de bases, referencia de herramientas de páginas). La búsqueda tiene tres límites que definen el diseño de la tabla.

| Límite de Notion | Valor | Fuente |
|---|---|---|
| Modo filas, filas por llamada | 50 por defecto, máximo 100, sin cursor | Referencia de herramientas de bases |
| Modo vista | Libre en todos los planes | Referencia de herramientas de bases |
| Cuota de SQL y modo filas | Ilimitada en Business y Enterprise con Notion AI; medida en los demás planes | Referencia de herramientas de bases |
| Peticiones por conexión | 600 por minuto en Business y Enterprise, 180 en los demás | Límites de peticiones |
| Consultas a fuentes de datos | Unas 3 por segundo | Límites de peticiones |
| Reintento automático | Una vez, si la espera es de 2 segundos o menos | Límites de Notion MCP |
Primero, el modo filas devuelve como mucho 100 filas y sin cursor, así que la fila 101 no se puede leer. Segundo, en Free y Plus el SQL y el modo filas comparten una cuota medida, y solo el modo vista, que consulta una vista guardada, es libre en todos los planes; el SQL ilimitado solo existe en Business y Enterprise con Notion AI (documentación de Notion: diferencias por plan). En Reddit, usuarios de Plus cuentan que una consulta que antes funcionaba ahora pide Business o Enterprise (Reddit: Did Notion just significantly change the MCP capabilities on the free plan?), y otro usuario se queja de que el agente solo veía las primeras 25 entradas de una base (Reddit: The reason why Notion MCP is a big fail). Tercero, la frecuencia: hay límites por conexión y uno aparte para consultas a fuentes de datos (límites de peticiones de Notion); si la espera es de 2 segundos o menos, Notion MCP reintenta una vez por su cuenta, y si es mayor devuelve un error rate_limited al agente (límites de Notion MCP).
Con esos límites y el volumen real de publicaciones, el diseño sale solo. Entre el 1 y el 7 de noviembre, hora de Singapur, las dos marcas publicaron 22 veces en TikTok e Instagram: CeraVe 5 en TikTok y 3 en Instagram, The Ordinary 5 en TikTok y 9 en Instagram. A ese ritmo, tres marcas hacen unas 66 publicaciones en dos semanas; con YouTube y un margen, el total sigue por debajo de 100. Por eso usamos en Notion una vista guardada llamada «Últimos 14 días», que filtra por Posted at y ordena por Key. Antes de escribir, los dos agentes leen esa vista en modo vista y comparan claves por su lado: una clave nueva crea una página y una conocida se actualiza. Así la búsqueda no consume la cuota de Free o Plus y no choca con el tope de 100 filas. Cuando dos semanas superen 100 publicaciones, crea una vista por marca o por plataforma.
La búsqueda en español añade un matiz. Como trae videos de hace meses, filtrar la vista por Posted at dejaría fuera la mayoría y el agente los creería nuevos cada semana. Para la tabla de «quién habla de la marca», la vista debe filtrar por First seen, no por Posted at.
Este es un ejemplo de llamada de creación con los nombres de campo de este artículo:
{
"parent": "<fuente de datos de la tabla; ver la descripción de notion-create-pages>",
"pages": [{
"properties": {
"Key": "tiktok:7705177610602532114",
"Platform": "tiktok",
"Brand": "The Ordinary",
"URL": "https://www.tiktok.com/@theordinary/video/7705177610602532114",
"date:Posted at:start": "2026-11-06T21:44:30Z",
"Views": 50600, "Likes": 2908,
"date:Observed at:start": "2026-11-07T16:21:58Z",
"Agent": "claude-code", "Count precision": "rounded"
}
}]
}Es un ejemplo de configuración. Escribimos la forma a partir de la referencia de herramientas de páginas de Notion; para la forma exacta de parent en una fila de base, sigue la descripción de notion-create-pages en tu cliente. En la respuesta, una fecha aparece bajo una clave del tipo date:<nombre>:start (referencia de herramientas de páginas). No creamos esta página en Notion. Después de escribir, lee properties y warnings en la respuesta: Notion te dirá si guardó una clave con otro nombre, y ese es el que debes usar en las actualizaciones.
La página de reglas: una sola página que dice a cada agente qué escribir
Dos agentes solo se mantienen coordinados si leen las mismas reglas. La guía de configuración de Notion pide al agente encontrar o crear una página Agent Operating Guide en el espacio y leerla al empezar cada trabajo (guía de configuración de Notion). Añade a esa página una sección corta, «Tabla de competencia», que quepa en una pantalla y con reglas que un agente pueda seguir paso a paso.
| Regla | Qué hace el agente |
|---|---|
| 1. Reparto | Claude Code escribe solo filas de tiktok; Codex, solo de instagram y youtube. Cualquier otra plataforma se salta. |
| 2. Clave | Key = plataforma + «:» + identificador. Copia la cadena tal cual. En Instagram, usa post_id. |
| 3. Hora | Posted at, Observed at y First seen en UTC, ISO 8601. La hora de YouTube solo viene de youtube/video. First seen no se cambia nunca. |
| 4. Sobrescritura | Un conteo redondeado no reemplaza a uno exacto salvo que sea más de un 1 % mayor. Observed at solo avanza. Entre dos exactos, gana la lectura más reciente aunque sea menor. |
| 5. Excepciones | Owned en «no» para publicaciones de otras cuentas. Los videos con is_pinned verdadero no entran. Los videos de creadores van a una tabla aparte. |
| 6. Errores | Ante rate_limited, espera retry_after_seconds y reintenta una vez. Si falla otra vez, se detiene y deja un comentario en la página de reglas con el lote fallido. |
La regla 4 es la que más se olvida, porque «quedarse con el valor mayor» parece prudente, y los datos de arriba muestran que los conteos también bajan. La regla 6 importa porque un agente que encuentra un error tiende a buscar otro camino, y en una tabla compartida un rodeo silencioso es peor que una parada.
Tener las reglas en Notion y no en el texto de cada agente tiene una ventaja: un solo cambio vale para los dos. Desde Notion 3.8, el historial de versiones de una página nombra a quien la editó, incluidos los agentes (notas de la versión 3.8), así que también sabrás quién tocó la página de reglas. Si puedes, déjala en solo lectura para los agentes. Notion admite permisos por columna en las bases y los agentes pueden tener sus propios permisos (Centro de ayuda: acceso a propiedades), pero eso solo existe en Business y Enterprise. En Plus, lo práctico es guardar la página donde las conexiones de los agentes no puedan editar y revisar su historial una vez por semana.
Costo semanal: llamadas de datos, suscripciones y cuotas de Notion
El costo tiene tres partes: las llamadas de datos a EveryInfra, dos suscripciones de IA y el plan de Notion. Las llamadas de datos se calculan con el price_usd del catálogo. El plan cubre tres marcas: cada día, Claude Code llama una vez por marca a tiktok/user_videos y a tiktok/search, y Codex llama una vez por marca a instagram/user_posts y a youtube/user_posts, en total 12 llamadas al día. Además, cada semana Codex llama a youtube/video para unos 3 videos nuevos de YouTube. Las 5 capacidades cuestan 0,000556 USD por llamada en el catálogo (precios de EveryInfra).
| Concepto | Precio unitario | Llamadas por semana | Costo semanal | Costo mensual (30 días) |
|---|---|---|---|---|
tiktok/user_videos × 3 marcas | 0,000556 USD | 21 | 0,011676 USD | 0,050040 USD |
tiktok/search × 3 marcas | 0,000556 USD | 21 | 0,011676 USD | 0,050040 USD |
instagram/user_posts × 3 marcas | 0,000556 USD | 21 | 0,011676 USD | 0,050040 USD |
youtube/user_posts × 3 marcas | 0,000556 USD | 21 | 0,011676 USD | 0,050040 USD |
youtube/video para fechas | 0,000556 USD | 3 | 0,001668 USD | 0,007228 USD (13 llamadas) |
| Total de llamadas de datos | 87 | 0,048372 USD | 0,207388 USD (373 llamadas) |
Para las suscripciones leímos cada página de precios el 8 de noviembre de 2026. Notion Plus cuesta 12 USD por persona al mes con pago mensual o 10 USD al mes con pago anual; Business, 24 USD o 20 USD con pago anual (precios de Notion). Claude Pro cuesta 20 USD al mes o 17 USD al mes con pago anual (precios de Claude). ChatGPT Plus cuesta 20 USD al mes (Centro de ayuda de OpenAI: What is ChatGPT Plus?). Las llamadas de datos suman unos 0,21 USD al mes; Notion Plus con pago mensual, la opción más barata, cuesta unas 58 veces más. Casi todo el costo son suscripciones; los límites reales son la cuota de búsqueda de Notion y el uso de los dos productos de IA, que deciden si puedes correr cada día.
Si añades cada día la búsqueda en español por marca, como «cerave piel grasa», sumas 21 llamadas y 0,011676 USD por semana. Para un equipo que sigue a la vez el mercado de Estados Unidos y el latinoamericano, el costo de datos sigue siendo una fracción de un centavo por día y marca.
| Producto | Pago mensual | Pago anual (por mes) | Leído |
|---|---|---|---|
| Notion Plus (por persona) | 12 USD | 10 USD | 2026-11-08 |
| Notion Business (por persona) | 24 USD | 20 USD | 2026-11-08 |
| Claude Pro | 20 USD | 17 USD | 2026-11-08 |
| ChatGPT Plus | 20 USD | No consta | 2026-11-08 |
| Llamadas de datos de EveryInfra (este diseño) | 0,207388 USD | No aplica | 2026-11-08 |
Hay dos costos que no aparecen en ninguna factura. El primero es el método de búsqueda que permite tu plan de Notion: en Free o Plus, la búsqueda de duplicados debe usar el modo vista, no SQL; solo Business con Notion AI deja a los agentes comparar tablas con SQL sin límite. El segundo es la autenticación para ejecuciones sin supervisión: los tokens MCP de Notion, que conectan con un token Bearer sin iniciar sesión en el navegador, solo se crean en Business y Enterprise y solo los crean los propietarios del espacio (preguntas frecuentes de Notion). En Free y Plus hay que usar OAuth, así que la tarea programada debe correr en un cliente que conserve esa sesión.
Límites y precauciones
Primero, no probamos el lado de Notion. Todos los nombres de herramientas, parámetros y límites de Notion de este artículo salen de la documentación para desarrolladores tal como la leímos el 8 de noviembre de 2026, y entre el 13 de octubre y el 5 de noviembre Notion cambió sus herramientas MCP cada dos o tres días (registro de cambios). Vuelve a leer la documentación antes de construir. El paquete de servidor MCP local de código abierto que publicó Notion al principio ya no se desarrolla activamente, y la propia Notion remite al servidor remoto https://mcp.notion.com/mcp (GitHub: makenotion/notion-mcp-server).
Segundo, ChatGPT web no tiene hoy una buena forma de conectarse a EveryInfra: no admitimos OAuth y ?key= deja la clave en la configuración y en los registros. Para el lado de ChatGPT, usa Codex. En Reddit también hay usuarios que cuentan que Notion deja de funcionar o no conecta dentro de ChatGPT (Reddit: Notion MCP not working in ChatGPT); eso no lo podemos depurar por Notion ni por OpenAI.
Tercero, los datos de cada plataforma tienen sus propios límites. tiktok/search devuelve videos relacionados con la palabra clave, no todos; en español, además, trae mucho contenido antiguo. youtube/user_posts solo da fechas relativas, instagram/user_posts incluye colaboraciones, los conteos cambian con el tiempo y algunas capacidades redondean los grandes. Márcalo en columnas en lugar de suponer que los datos están limpios. Del lado de EveryInfra, los parámetros incorrectos, las llamadas fallidas y los resultados vacíos no se cobran, y cada cobro aparece en billing.charged_usd (servidor MCP de EveryInfra).
Cuarto, dos agentes pueden escribir la misma fila a la vez. Nuestro diseño reparte por plataforma, de modo que cada fila tiene un solo autor. Si dejas que los dos agentes traigan la misma plataforma, añade una regla para que solo uno pueda escribir una Key dada en 10 minutos y revisa notion-get-version-changes de forma periódica.
Quinto, las zonas horarias. La tabla guarda UTC, pero una fecha de Notion se muestra en la zona horaria de quien la mira: en Ciudad de México se verá UTC menos 6 horas en noviembre. Decide en qué zona se corta la semana antes de contar. Este artículo cuenta del 1 de noviembre a las 00:00 al 8 de noviembre a las 00:00, hora de Singapur, que en UTC va del 31 de octubre a las 16:00 al 7 de noviembre a las 16:00. Si un agente corta la semana en UTC y el otro en hora local, los números no coinciden y la causa cuesta encontrarla. Escribe la zona en la página de reglas y filtra la vista semanal en esa misma zona.
Sexto, los datos de personas comunes. La mayoría de los resultados de búsqueda son de creadores, y cada fila trae su nombre visible, biografía y avatar. La tabla de competencia necesita el enlace, la hora y los conteos, no el perfil del creador, que además queda desactualizado. Cuando el informe cite a un creador, enlaza la publicación en lugar de nombrar a la persona, y si agrupas por creador, usa el identificador de autor de la plataforma.
Novedades del sector (octubre y noviembre de 2026)
| Fecha | Cambio en Notion MCP o alrededor | Qué cambia para la tabla |
|---|---|---|
| 2026-10-13 | Notion 3.8: controles de MCP, permisos por columna, historial con autor | Puedes ver qué agente editó qué |
| 2026-10-19 | Agentes renovados, sincronización de memoria | La memoria personal ya funciona |
| 2026-10-27 | Ediciones sugeridas y notion-view-version | Revisar antes de aceptar |
| 2026-10-29 | notion-get-version-changes | Auditar escrituras de cada agente |
| 2026-11-03 | notion-restore-version | Deshacer una escritura errónea |
| 2026-11-04 | «Cerebro compartido» | Textos de configuración para ChatGPT y Claude |
El 4 de noviembre de 2026, Notion presentó MCP como un cerebro compartido para todos los agentes y publicó textos de configuración para ChatGPT y Claude (publicación de Notion en X). Para el lector, significa que Notion trata ya como línea principal que muchos agentes lean y escriban en un mismo espacio, y que las herramientas seguirán cambiando deprisa.
El 3 de noviembre de 2026, Notion MCP añadió notion-restore-version; el 29 de octubre, notion-get-version-changes; y el 27 de octubre, las ediciones sugeridas y notion-view-version (registro de cambios). Para el lector, significa que las escrituras erróneas de un agente ya se pueden encontrar, ver y deshacer, y que compartir una tabla entre dos agentes es mucho menos arriesgado que hace un mes.
A principios de noviembre de 2026, el Centro de ayuda de OpenAI anunció que desde diciembre el uso de Plus, Pro y Business se comparte entre ChatGPT y Codex y se mide en tokens (Understanding ChatGPT and Codex usage limits). Para el lector, significa que una tarea diaria de datos en Codex consume la misma cuota que tus conversaciones en ChatGPT, así que conviene recortar pronto las respuestas largas.
Preguntas frecuentes
¿Cuál es la notion mcp server url?
La URL del servidor remoto es https://mcp.notion.com/mcp, con Streamable HTTP; si un cliente no lo admite, puede usar la URL SSE https://mcp.notion.com/sse (documentación de Notion). La URL del MCP remoto de EveryInfra es https://api.everyinfra.com/mcp. (Origen de la pregunta: sugerencias de Google «notion mcp server url» y «notion mcp url».)
¿Cómo funciona la claude code notion mcp authentication?
Ejecuta claude mcp add --transport http notion https://mcp.notion.com/mcp, escribe /mcp en Claude Code y sigue el inicio de sesión OAuth (documentación de Notion). Si necesitas una conexión sin navegador, en Business o Enterprise el propietario del espacio puede crear un token MCP en el portal para desarrolladores, y el cliente lo envía como token Bearer. (Origen: sugerencias «claude code notion mcp authentication» y «setup notion mcp claude code».)
¿Qué hago si notion mcp chatgpt not working?
Comprueba primero que usas ChatGPT web: según la documentación de OpenAI, los plugins MCP propios se añaden en la web, y los roles del espacio y ajustes de seguridad como Lockdown pueden limitarlos (documentación de OpenAI). El registro de cambios de Notion del 20 de octubre añade que las herramientas nuevas solo aparecen en ChatGPT cuando OpenAI revisa la app de Notion actualizada (registro de cambios). En los hilos de Reddit sobre este problema, la mayoría de las respuestas dicen «esperar a la corrección» o «usar Claude mientras tanto» (hilo de Reddit). (Origen: sugerencia «notion mcp chatgpt not working».)
¿Funciona notion mcp codex?
Sí. La documentación de Notion da la configuración para Codex: añade [mcp_servers.notion] con la URL a ~/.codex/config.toml y ejecuta codex mcp login notion; para un equipo, pon la misma configuración en .codex/config.toml en la raíz del proyecto (documentación de Notion). Si inicias sesión en Codex con una cuenta de ChatGPT, Codex usa los límites de tu plan. (Origen: sugerencia «notion mcp codex».)
¿Se puede usar Notion MCP en el plan gratuito?
Se puede conectar, con límites. En Free y Plus, el SQL tiene una cuota medida de una sola fuente y el modo filas cuenta contra ella; solo las consultas a vistas guardadas son libres. Los tokens MCP requieren Business o Enterprise y algunos filtros de búsqueda solo funcionan en esos planes (preguntas frecuentes de Notion). (Origen: publicación de Reddit «Did Notion just significantly change the MCP capabilities on the free plan?».)
¿Puede chatgpt notion mcp write escribir en una base?
Sí. La documentación de OpenAI indica que ChatGPT admite herramientas de lectura y escritura de servidores MCP y pide aprobar las escrituras por defecto (documentación de OpenAI). notion-create-pages y notion-update-page son herramientas de escritura, y las de borrado como notion-delete-pages exigen además user_confirmed: true en los argumentos. (Origen: sugerencia «chatgpt notion mcp write».)
Primeros pasos
- Regístrate en el inicio rápido de EveryInfra, crea una clave de API y guárdala en la variable de entorno
EVERYINFRA_API_KEY. - En Notion, crea la tabla de competencia con los 11 campos de datos y las columnas de control de este artículo. Usa el título para Key y añade la vista «Últimos 14 días».
- En Claude Code, añade los dos servidores MCP del ejemplo de configuración. En Codex, añade los dos bloques a
config.toml. - Ejecuta cada lado una vez a mano: pide a Claude Code
tiktok/user_videosde una marca y a Codexinstagram/user_postsde la misma marca. Comprueba que cada ejecución añade un grupo de filas y que ninguna Key se repite. - Cuando las filas estén bien, programa la tarea y revisa
notion-get-version-changesuna vez por semana para ver qué agente escribió qué.
Los campos de cada plataforma están en las páginas de TikTok Scraper API, Instagram Scraper API y YouTube Scraper API. Las páginas de videos de perfil de TikTok, búsqueda en TikTok, publicaciones de perfil de Instagram, videos de canal de YouTube y video individual de YouTube listan todos los parámetros.
Lecturas relacionadas
- GitHub Copilot MCP: informe semanal de redes de la competencia con 26 llamadas reales: el mismo informe, como script para GitHub Actions.
- ChatGPT Spaces como seguimiento de redes de la competencia: una configuración solo con ChatGPT para comparar con el camino de Codex.
- Subagentes de Claude Code para cuentas de marca en TikTok: cómo traer muchas cuentas en paralelo sin llenar el contexto.
- Claude Artifacts con MCP como panel de competencia en vivo: otra forma de mostrar los datos si no usas Notion.
- Servidor MCP remoto de EveryInfra: la configuración para cada cliente.
Referencias
- «Give all your agents one shared brain in Notion», Notion en X, 2026-11-04, https://x.com/NotionHQ/status/2118059335930744999
- Connect AI tools with Notion MCP, Centro de ayuda de Notion, leído el 2026-11-08, https://www.notion.com/help/notion-mcp
- Set up Notion for your agent (guía de configuración), documentación de Notion, leído el 2026-11-08, https://developers.notion.com/prompts/setup
- Use shared Skills and delegate to Notion Custom Agents (memoria personal), documentación de Notion, leído el 2026-11-08, https://developers.notion.com/guides/mcp/tools-skills-agents
- Connect Notion to your AI assistant with MCP, documentación de Notion, modificado el 2026-10-28, https://developers.notion.com/guides/mcp/get-started-with-mcp
- Notion MCP tools for projects, tasks, and teamwork, documentación de Notion, leído el 2026-11-08, https://developers.notion.com/guides/mcp/mcp-supported-tools
- Notion MCP FAQs and complete tool list, documentación de Notion, leído el 2026-11-08, https://developers.notion.com/guides/mcp/tools-faqs
- Database and view tools in Notion MCP, documentación de Notion, leído el 2026-11-08, https://developers.notion.com/guides/mcp/tools-databases-reference
- Page creation and editing tools in Notion MCP, documentación de Notion, leído el 2026-11-08, https://developers.notion.com/guides/mcp/tools-pages-reference
- Comments and change history tools in Notion MCP, documentación de Notion, leído el 2026-11-08, https://developers.notion.com/guides/mcp/tools-comments-reference
- Notion MCP rate limits, documentación de Notion, leído el 2026-11-08, https://developers.notion.com/guides/mcp/rate-limits
- Request limits, referencia de la API de Notion, leído el 2026-11-08, https://developers.notion.com/reference/request-limits
- Changelog, documentación de Notion, entradas del 2026-10-13 al 2026-11-05, https://developers.notion.com/page/changelog
- Connect AI assistants to Notion with MCP (resumen), documentación de Notion, leído el 2026-11-08, https://developers.notion.com/docs/mcp
- Agents, rebuilt to do more for less, notas de versión de Notion, 2026-10-19, https://www.notion.com/releases/2026-10-19
- Notion 3.8: Context for your agents, notas de versión de Notion, 2026-10-13, https://www.notion.com/releases/2026-10-13
- View your Notion Agent Memories, Centro de ayuda de Notion, leído el 2026-11-08, https://www.notion.com/help/view-your-notion-agent-memories
- Manage database property access, Centro de ayuda de Notion, leído el 2026-11-08, https://www.notion.com/help/database-property-access
- Precios, Notion, leído el 2026-11-08, https://www.notion.com/pricing
- makenotion/notion-mcp-server, GitHub, leído el 2026-11-08, https://github.com/makenotion/notion-mcp-server
- Connect Claude Code to tools via MCP, documentación de Claude Code, leído el 2026-11-08, https://code.claude.com/docs/en/mcp
- Schedule recurring tasks in Claude Code Desktop, documentación de Claude Code, leído el 2026-11-08, https://code.claude.com/docs/en/desktop-scheduled-tasks
- Automate work with scheduled tasks, documentación de Claude Code, leído el 2026-11-08, https://code.claude.com/docs/en/routines
- Precios, Claude, leído el 2026-11-08, https://claude.com/pricing
- Add custom MCP server, documentación de OpenAI, leído el 2026-11-08, https://developers.openai.com/api/docs/guides/custom-mcp-server
- Model Context Protocol (Codex), documentación de OpenAI, leído el 2026-11-08, https://developers.openai.com/codex/mcp
- ChatGPT Work and Codex, Centro de ayuda de OpenAI, leído el 2026-11-08, https://help.openai.com/en/articles/20001275-chatgpt-work-and-codex
- Understanding ChatGPT and Codex usage limits, Centro de ayuda de OpenAI, leído el 2026-11-08, https://help.openai.com/en/articles/20001625-understanding-chatgpt-and-codex-usage-limits
- What is ChatGPT Plus?, Centro de ayuda de OpenAI, leído el 2026-11-08, https://help.openai.com/en/articles/6950777-what-is-chatgpt-plus
- MCP server tools now in ChatGPT developer mode, comunidad de OpenAI, 2025-09-10, https://community.openai.com/t/mcp-server-tools-now-in-chatgpt-developer-mode/1357233
- Tools (anotaciones), especificación de Model Context Protocol 2025-06-18, https://modelcontextprotocol.io/specification/2025-06-18/server/tools
- Number.MAX_SAFE_INTEGER, MDN, leído el 2026-11-08, https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/MAX_SAFE_INTEGER
- RFC 3339: Date and Time on the Internet: Timestamps, IETF, 2002-07, https://www.rfc-editor.org/rfc/rfc3339
- Videos (snippet.publishedAt), YouTube Data API, leído el 2026-11-08, https://developers.google.com/youtube/v3/docs/videos
- Did Notion just significantly change the MCP capabilities on the free plan?, Reddit r/Notion, leído el 2026-11-08, https://www.reddit.com/r/Notion/comments/1uc5cje/did_notion_just_significantly_change_the_mcp/
- The reason why Notion MCP is a big fail, Reddit r/Notion, leído el 2026-11-08, https://www.reddit.com/r/Notion/comments/1t7kpxp/the_reason_why_notion_mcp_is_a_big_fail/
- Notion MCP not working in ChatGPT, Reddit r/Notion, leído el 2026-11-08, https://www.reddit.com/r/Notion/comments/1ps8y93/notion_mcp_not_working_in_chatgpt_is_anyone_else/
- Database properties, Centro de ayuda de Notion, leído el 2026-11-08, https://www.notion.com/help/database-properties
- Unique ID property, Centro de ayuda de Notion, leído el 2026-11-08, https://www.notion.com/help/unique-id
- Catálogo de capacidades de EveryInfra, EveryInfra, leído el 2026-11-08, https://api.everyinfra.com/api/v1/social/catalog
- Endpoint MCP remoto de EveryInfra, EveryInfra, probado el 2026-11-08, https://api.everyinfra.com/mcp
Referencia BL-111