Domingo, 26 de julio de 2026  ·  LATAM / Español
ÚLTIMA HORA
Anthropic lanza mejoras en la API de Claude para América Latina  ·  MCP 2026-07-28 ya en release candidate  ·  Claude Sonnet 5 supera benchmarks de coding agéntico  ·  Claude Code alcanza $1B de run-rate en 6 meses  ·  NSA publica guía de seguridad para el protocolo MCP
Hace 45 min →
Intermedio 45 min en total 6 pasos

Cómo conectar Claude con Notion paso a paso

Integra Claude con tu workspace de Notion usando MCP y la API para leer, crear y actualizar páginas.

Imagen de portada editorial · Cómo conectar Claude con Notion paso a paso · Educación · Claude Builders
Requisitos
  • Cuenta de Anthropic con API key activa
  • Cuenta de Notion con permisos de administrador en un workspace
  • Node.js 18+ instalado
  • Claude Desktop instalado (para la ruta MCP) o Python 3.10+ (para la ruta API)
Lo que vas a aprender
  • Crear una integración interna en Notion y obtener el token de acceso
  • Conectar Claude Desktop con Notion mediante un servidor MCP
  • Leer y crear páginas de Notion desde Claude vía la API
  • Manejar los errores más comunes de permisos y compartición de páginas
PASO 1 · ~8 min

Crear la integración interna en Notion

Antes de tocar código necesitas credenciales de Notion. Ve a notion.so/my-integrations y pulsa 'New integration'. Dale un nombre (por ejemplo 'Claude Connector'), asócialo a tu workspace y elige el tipo 'Internal'. En la sección de capacidades marca al menos 'Read content', 'Insert content' y 'Update content' según lo que quieras que Claude pueda hacer. Al guardar, Notion genera un 'Internal Integration Secret' que empieza por 'ntn_' o 'secret_'. Cópialo: es tu NOTION_TOKEN. Este paso es puramente de configuración pero es donde falla más gente en España y LATAM, porque crean la integración y olvidan el paso crítico del paso 2: compartir páginas concretas con ella. Una integración recién creada no ve absolutamente nada de tu workspace hasta que le concedes acceso explícito a páginas o bases de datos.

bash
# Guarda tus credenciales como variables de entorno
export NOTION_TOKEN="ntn_tu_token_aqui"
export ANTHROPIC_API_KEY="sk-ant-tu_api_key"
ConsejoUsa un archivo .env y añádelo a .gitignore para no filtrar el token en tu repositorio.
Error comúnEl token solo se muestra completo una vez; si lo pierdes tendrás que regenerarlo.
PASO 2 · ~5 min

Compartir páginas con la integración

Este es el paso que rompe la mayoría de integraciones. En Notion, abre la página o base de datos que quieres exponer a Claude. Pulsa el menú de tres puntos (arriba a la derecha) o el botón de compartir, busca 'Connections' o 'Conexiones', y selecciona la integración que creaste. A partir de ese momento la integración —y por tanto Claude— puede leer y modificar esa página y todas sus subpáginas. Si trabajas con una base de datos, comparte la base de datos entera, no solo una fila. Anota el ID de la página o base de datos: está en la URL, es la cadena de 32 caracteres hexadecimales tras el nombre y antes del '?'. Por ejemplo, en notion.so/miespacio/Proyectos-1a2b3c4d... el ID es '1a2b3c4d...'. Lo necesitarás para las llamadas a la API.

bash
# La URL de Notion tiene esta forma:
# https://www.notion.so/workspace/Nombre-1a2b3c4d5e6f7890abcdef1234567890
# El database_id / page_id son esos 32 caracteres hex finales
ConsejoPuedes formatear el ID con guiones (8-4-4-4-12) o sin ellos; la API acepta ambos.
Error comúnSi Claude devuelve 'object_not_found', casi siempre es porque olvidaste compartir la página con la integración.
PASO 3 · ~10 min

Conectar Claude Desktop con Notion vía MCP

La forma más directa y sin escribir apenas código es usar el Model Context Protocol (MCP), el estándar de Anthropic para conectar Claude con herramientas externas. Notion publica un servidor MCP oficial que corre con npx. Abre el archivo de configuración de Claude Desktop: en macOS está en ~/Library/Application Support/Claude/claude_desktop_config.json y en Windows en %APPDATA%\Claude\claude_desktop_config.json. Añade el servidor de Notion pasándole tu token vía la cabecera de autorización. Guarda y reinicia Claude Desktop por completo. Verás un icono de herramientas en la caja de chat; al pulsarlo aparecerán las acciones de Notion disponibles. Ahora puedes pedirle a Claude en lenguaje natural 'busca mis notas de la reunión de ayer' o 'crea una página con este resumen', y ejecutará las llamadas a Notion por ti.

json
{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": ["-y", "@notionhq/notion-mcp-server"],
      "env": {
        "OPENAPI_MCP_HEADERS": "{\"Authorization\":\"Bearer ntn_tu_token_aqui\",\"Notion-Version\":\"2022-06-28\"}"
      }
    }
  }
}
ConsejoTras editar el JSON, cierra Claude Desktop desde la bandeja del sistema, no solo la ventana, para que recargue la configuración.
Error comúnEl JSON debe ser válido: una coma de más o comillas sin escapar impiden que Claude arranque sin dar error visible.
PASO 4 · ~9 min

Leer páginas de Notion desde la API de Claude

Si prefieres control programático —por ejemplo para un backend o un agente propio— puedes combinar la API de Notion con la API de Claude directamente. Primero recuperas contenido de Notion con su REST API, luego se lo pasas a Claude como contexto. Este patrón es la base de cualquier integración a medida: Notion es la fuente de datos y Claude el motor de razonamiento. El siguiente script en Python consulta una base de datos, extrae los títulos de las páginas y pide a claude-opus-4-8 que genere un resumen. Instala primero las dependencias con 'pip install anthropic requests'.

python
import os, requests, anthropic

NOTION_TOKEN = os.environ["NOTION_TOKEN"]
DATABASE_ID = "1a2b3c4d5e6f7890abcdef1234567890"

headers = {
    "Authorization": f"Bearer {NOTION_TOKEN}",
    "Notion-Version": "2022-06-28",
    "Content-Type": "application/json",
}

resp = requests.post(
    f"https://api.notion.com/v1/databases/{DATABASE_ID}/query",
    headers=headers, json={"page_size": 20},
)
resp.raise_for_status()

titulos = []
for page in resp.json()["results"]:
    for prop in page["properties"].values():
        if prop["type"] == "title" and prop["title"]:
            titulos.append(prop["title"][0]["plain_text"])

client = anthropic.Anthropic()
msg = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=500,
    messages=[{"role": "user",
        "content": f"Resume estos elementos de mi Notion:\n" + "\n".join(titulos)}],
)
print(msg.content[0].text)
ConsejoCachea las respuestas de Notion si vas a llamar repetidamente: la API tiene un límite de ~3 peticiones por segundo.
Error comúnraise_for_status() te ahorra horas: sin él, un 401 por token inválido pasa desapercibido y Claude recibe datos vacíos.
PASO 5 · ~8 min

Crear páginas en Notion desde Claude

El flujo inverso —que Claude escriba en Notion— cierra el círculo y es lo que convierte la integración en algo realmente útil: generas contenido con IA y lo persistes automáticamente. Para crear una página necesitas el ID de la página o base de datos padre y construir el cuerpo con las propiedades y bloques. El siguiente ejemplo pide a Claude que redacte un resumen y luego lo inserta como una nueva página dentro de tu base de datos. Fíjate en que el título va en 'properties' y el contenido del cuerpo en 'children' como bloques de tipo paragraph. Este patrón se extiende a checklists, encabezados o tablas cambiando el tipo de bloque.

python
contenido = msg.content[0].text

nueva_pagina = {
    "parent": {"database_id": DATABASE_ID},
    "properties": {
        "Name": {"title": [{"text": {"content": "Resumen generado por Claude"}}]}
    },
    "children": [
        {"object": "block", "type": "paragraph",
         "paragraph": {"rich_text": [{"type": "text",
            "text": {"content": contenido[:1900]}}]}}
    ],
}

crear = requests.post("https://api.notion.com/v1/pages",
                      headers=headers, json=nueva_pagina)
crear.raise_for_status()
print("Página creada:", crear.json()["url"])
ConsejoUn bloque de texto de Notion admite máximo 2000 caracteres; divide textos largos en varios bloques 'children'.
Error comúnEl nombre de la propiedad título ('Name') debe coincidir exactamente con el de tu base de datos, mayúsculas incluidas, o dará error de validación.
PASO 6 · ~5 min

Verificar y depurar la conexión

Antes de dar por buena la integración, valida los dos extremos. Para la ruta MCP, escribe en Claude Desktop 'lista mis páginas de Notion accesibles' y confirma que devuelve resultados reales. Para la ruta API, ejecuta un endpoint de prueba que use el token de Notion. Los tres fallos más habituales tienen diagnóstico claro: un 401 significa token inválido o mal formado en la cabecera; 'object_not_found' significa que la página no está compartida con la integración (vuelve al paso 2); y 'validation_error' suele ser un nombre de propiedad mal escrito o un tipo de bloque incorrecto. Registra siempre el cuerpo completo del error de Notion, porque incluye un mensaje descriptivo en el campo 'message' que dice exactamente qué falló.

python
# Verifica el token de Notion con una llamada simple
resp = requests.post("https://api.notion.com/v1/search",
                     headers=headers, json={"page_size": 5})
if resp.status_code == 200:
    print("OK, integración activa:", len(resp.json()["results"]), "resultados")
else:
    print("Error", resp.status_code, resp.json().get("message"))
ConsejoEl endpoint /v1/search solo devuelve objetos compartidos con tu integración: si sale vacío, no has compartido ninguna página todavía.
Error comúnNo confundas la Notion-Version en la cabecera: usar una versión no soportada provoca respuestas inesperadas sin error claro.
Resultado

Has conectado Claude con Notion por las dos vías principales: la ruta sin código con MCP en Claude Desktop, que te permite consultar y editar tu workspace en lenguaje natural, y la ruta programática combinando la API de Notion con la API de Claude para construir flujos automáticos que leen y escriben páginas. Con esta base puedes montar asistentes que resumen reuniones, generan documentación o mantienen bases de conocimiento actualizadas. Si quieres profundizar, este es el punto de partida ideal para dar el salto hacia agentes e integraciones con MCP más complejos que orquesten Notion junto a otras herramientas.

PRÓXIMOS PASOS