Notion MCP Server

Un servidor MCP para interactuar con tu espacio de trabajo de Notion, que permite a los LLMs gestionar páginas y bases de datos.

Documentación

Notion MCP Server

Un servidor de Model Context Protocol para la integración con Notion, que permite a Claude y otros LLMs interactuar con tu espacio de trabajo de Notion.

Características

  • Buscar en Notion: Busca en todo tu espacio de trabajo de Notion
  • Obtener página: Recupera el contenido de una página específica de Notion
  • Crear página: Crea nuevas páginas en tu espacio de trabajo de Notion
  • Actualizar página: Actualiza páginas existentes con nuevo contenido o títulos
  • Crear base de datos: Crea nuevas bases de datos con propiedades personalizadas
  • Consultar base de datos: Consulta bases de datos con filtros y ordenamiento
  • Actualizar entrada de base de datos: Actualiza propiedades de entradas de base de datos
  • Crear fila en base de datos: Agrega nuevas filas a bases de datos existentes con propiedades personalizadas

Configuración

  1. Clona este repositorio

  2. Instala las dependencias

    npm install
    
  3. Configura tu clave de API de Notion

    • Crea una integración en el portal de desarrolladores de Notion
    • Copia tu clave de API
    • Puedes:
      • Editar el archivo .env y reemplazar your_notion_api_key_here con tu clave de API real, o
      • Pasarla directamente en la configuración de Claude for Desktop (recomendado, ver más abajo)
  4. Compila el servidor

    npm run build
    
  5. Ejecuta el servidor

    npm start
    

Configuración con Claude for Desktop

  1. Instala Claude for Desktop (si aún no está instalado)

  2. Abre la configuración de tu aplicación Claude for Desktop:

    • En macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Crea el archivo si no existe
  3. Agrega el servidor de Notion a tu configuración:

    {
      "mcpServers": {
        "notion": {
          "command": "node",
          "args": [
            "/Users/shaheerahmad/Documents/notion-mcp-server/dist/index.js",
            "--notion-api-key=YOUR_ACTUAL_API_KEY_HERE"
          ]
        }
      }
    }
    

    Reemplaza:

    • /Users/shaheerahmad/Documents/notion-mcp-server con la ruta completa a tu directorio del proyecto
    • YOUR_ACTUAL_API_KEY_HERE con tu clave de API de Notion real
  4. Reinicia Claude for Desktop

Uso del servidor

Una vez conectado a Claude for Desktop, puedes usar el servidor pidiéndole a Claude cosas como:

  • "Busca notas de reuniones en mi espacio de trabajo de Notion"
  • "Obtén el contenido de mi página de planificación de proyectos" (necesitarás el ID de la página)
  • "Crea una nueva página en Notion con una lista de tareas"
  • "Actualiza mi página de Notion con ID 1aaada269d1b8003adceda69cf7bcd97 con el contenido 'Aquí hay algo de contenido nuevo para agregar a la página.'"
  • "Crea una nueva base de datos en mi página de Notion con ID 1aaada269d1b8003adceda69cf7bcd97"
  • "Consulta mi base de datos de Notion con ID 1aaada269d1b8003adceda69cf7bcd97 para elementos con estado 'Completado'"

Claude usará automáticamente las herramientas apropiadas según tu solicitud.

Ejemplos de uso de herramientas

Buscar en Notion

Search for "meeting notes" in my Notion workspace

Obtener contenido de página

Get the content of my Notion page with ID 1aaada269d1b8003adceda69cf7bcd97

Crear una nueva página

Create a new page in Notion with title "Weekly Report" and content "This week we accomplished the following tasks..."

Actualizar una página existente

Update my Notion page with ID 1aaada269d1b8003adceda69cf7bcd97 with content "Adding this new information to the page."

También puedes actualizar el título:

Update my Notion page with ID 1aaada269d1b8003adceda69cf7bcd97 with title "New Title" and content "New content to add."

Crear una nueva base de datos

Create a new database in my Notion page with ID 1aaada269d1b8003adceda69cf7bcd97 with title "Task Tracker" and properties {
  "Task Name": { "title": {} },
  "Status": {
    "select": {
      "options": [
        { "name": "Not Started", "color": "red" },
        { "name": "In Progress", "color": "yellow" },
        { "name": "Completed", "color": "green" }
      ]
    }
  },
  "Priority": {
    "select": {
      "options": [
        { "name": "Low", "color": "blue" },
        { "name": "Medium", "color": "yellow" },
        { "name": "High", "color": "red" }
      ]
    }
  },
  "Due Date": { "date": {} }
}

Consultar una base de datos

Query my Notion database with ID 1aaada269d1b8003adceda69cf7bcd97 with filter {
  "property": "Status",
  "select": {
    "equals": "Completed"
  }
}

También puedes agregar ordenamiento:

Query my Notion database with ID 1aaada269d1b8003adceda69cf7bcd97 with sort {
  "property": "Due Date",
  "direction": "ascending"
}

Actualizar entrada de base de datos

Actualiza las propiedades de una entrada de base de datos existente (página dentro de una base de datos).

{
  "tool_name": "update-database-entry",
  "tool_params": {
    "pageId": "page_id_of_database_entry",
    "properties": {
      "Status": {
        "select": {
          "name": "Completed"
        }
      },
      "Priority": {
        "select": {
          "name": "High"
        }
      },
      "Due Date": {
        "date": {
          "start": "2023-12-31"
        }
      }
    }
  }
}

El parámetro properties debe coincidir con la estructura esperada por la API de Notion para los tipos de propiedad específicos en tu base de datos. Diferentes tipos de propiedad (texto, selección, fecha, etc.) requieren formatos diferentes.

Crear fila en base de datos

Agrega una nueva fila a una base de datos existente con propiedades personalizadas.

{
  "tool_name": "create-database-row",
  "tool_params": {
    "databaseId": "your_database_id_here",
    "properties": {
      "Name": {
        "title": [
          {
            "text": {
              "content": "New Task"
            }
          }
        ]
      },
      "Status": {
        "select": {
          "name": "Not Started"
        }
      },
      "Priority": {
        "select": {
          "name": "Medium"
        }
      },
      "Due Date": {
        "date": {
          "start": "2023-12-15"
        }
      },
      "Notes": {
        "rich_text": [
          {
            "text": {
              "content": "This is a new task created via the API"
            }
          }
        ]
      }
    }
  }
}

El parámetro properties debe incluir todas las propiedades requeridas para la base de datos y seguir la estructura de la API de Notion para cada tipo de propiedad.

Solución de problemas

  • Si las herramientas no aparecen, revisa los registros de Claude for Desktop:

    tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
    
  • Asegúrate de que tu clave de API de Notion esté configurada correctamente y que tu integración tenga acceso a las páginas con las que deseas interactuar.

  • Si ves errores de "Unexpected token" en los registros, es probable que las declaraciones console.log estén interfiriendo con el protocolo MCP. Esta versión del servidor se ha actualizado para evitar esos problemas.

Mejoras futuras

  • Agregar capacidades de consulta de bases de datos
  • Implementar mejor formato de contenido
  • Agregar soporte para más tipos de bloques