Notion MCP Server

Um servidor MCP para interagir com seu espaço de trabalho Notion, permitindo que LLMs gerenciem páginas e bancos de dados.

Documentação

Servidor MCP do Notion

Um servidor Model Context Protocol para integração com o Notion, permitindo que o Claude e outros LLMs interajam com seu espaço de trabalho no Notion.

Recursos

  • Pesquisar no Notion: Pesquise em todo o seu espaço de trabalho do Notion
  • Obter Página: Recupere o conteúdo de uma página específica do Notion
  • Criar Página: Crie novas páginas no seu espaço de trabalho do Notion
  • Atualizar Página: Atualize páginas existentes com novos conteúdos ou títulos
  • Criar Banco de Dados: Crie novos bancos de dados com propriedades personalizadas
  • Consultar Banco de Dados: Consulte bancos de dados com filtros e ordenação
  • Atualizar Entrada do Banco de Dados: Atualize propriedades de entradas do banco de dados
  • Criar Linha no Banco de Dados: Adicione novas linhas a bancos de dados existentes com propriedades personalizadas

Configuração

  1. Clone este repositório

  2. Instale as dependências

    npm install
    
  3. Configure sua chave de API do Notion

    • Crie uma integração no portal de desenvolvedores do Notion
    • Copie sua chave de API
    • Você pode:
      • Editar o arquivo .env e substituir your_notion_api_key_here pela sua chave de API real, ou
      • Passá-la diretamente na configuração do Claude for Desktop (recomendado, veja abaixo)
  4. Compile o servidor

    npm run build
    
  5. Execute o servidor

    npm start
    

Configuração com Claude for Desktop

  1. Instale o Claude for Desktop (se ainda não estiver instalado)

  2. Abra a configuração do aplicativo Claude for Desktop:

    • No macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Crie o arquivo se ele não existir
  3. Adicione o servidor do Notion à sua configuração:

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

    Substitua:

    • /Users/shaheerahmad/Documents/notion-mcp-server pelo caminho completo do diretório do seu projeto
    • YOUR_ACTUAL_API_KEY_HERE pela sua chave de API real do Notion
  4. Reinicie o Claude for Desktop

Usando o Servidor

Depois de conectado ao Claude for Desktop, você pode usar o servidor fazendo perguntas ao Claude como:

  • "Pesquise por notas de reunião no meu espaço de trabalho do Notion"
  • "Obtenha o conteúdo da minha página de planejamento de projeto" (você precisará do ID da página)
  • "Crie uma nova página no Notion com uma lista de tarefas"
  • "Atualize minha página do Notion com ID 1aaada269d1b8003adceda69cf7bcd97 com o conteúdo 'Aqui está um novo conteúdo para adicionar à página.'"
  • "Crie um novo banco de dados na minha página do Notion com ID 1aaada269d1b8003adceda69cf7bcd97"
  • "Consulte meu banco de dados do Notion com ID 1aaada269d1b8003adceda69cf7bcd97 para itens com status 'Concluído'"

O Claude usará automaticamente as ferramentas apropriadas com base na sua solicitação.

Exemplos de Uso das Ferramentas

Pesquisar no Notion

Search for "meeting notes" in my Notion workspace

Obter Conteúdo da Página

Get the content of my Notion page with ID 1aaada269d1b8003adceda69cf7bcd97

Criar uma Nova Página

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

Atualizar uma Página Existente

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

Você também pode atualizar o título:

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

Criar um Novo Banco de Dados

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 um Banco de Dados

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

Você também pode adicionar ordenação:

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

Atualizar Entrada do Banco de Dados

Atualize propriedades de uma entrada existente do banco de dados (página dentro de um banco de dados).

{
  "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"
        }
      }
    }
  }
}

O parâmetro properties deve corresponder à estrutura esperada pela API do Notion para os tipos específicos de propriedade no seu banco de dados. Diferentes tipos de propriedade (texto, seleção, data, etc.) exigem formatos diferentes.

Criar Linha no Banco de Dados

Adicione uma nova linha a um banco de dados existente com propriedades 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"
            }
          }
        ]
      }
    }
  }
}

O parâmetro properties deve incluir todas as propriedades obrigatórias para o banco de dados e seguir a estrutura da API do Notion para cada tipo de propriedade.

Solução de Problemas

  • Se as ferramentas não aparecerem, verifique os logs do Claude for Desktop:

    tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
    
  • Certifique-se de que sua chave de API do Notion esteja configurada corretamente e que sua integração tenha recebido acesso às páginas com as quais você deseja interagir.

  • Se você vir erros de "Unexpected token" nos logs, é provável que declarações console.log estejam interferindo no protocolo MCP. Esta versão do servidor foi atualizada para evitar esses problemas.

Melhorias Futuras

  • Adicionar recursos de consulta a bancos de dados
  • Implementar melhor formatação de conteúdo
  • Adicionar suporte para mais tipos de blocos