Skip to main content
Glama
node2flow-th

@node2flow/notion-mcp

by node2flow-th
README.md
# @node2flow/notion-mcp

[![smithery badge](https://smithery.ai/badge/node2flow/notion)](https://smithery.ai/server/node2flow/notion)
[![npm version](https://img.shields.io/npm/v/@node2flow/notion-mcp.svg)](https://www.npmjs.com/package/@node2flow/notion-mcp)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

MCP server for the Notion API — manage pages, blocks, databases, data sources, comments, and users.

## Quick Start

### Claude Desktop / Cursor / VS Code

Add to your MCP client config:

```json
{
  "mcpServers": {
    "notion": {
      "command": "npx",
      "args": ["-y", "@node2flow/notion-mcp"],
      "env": {
        "NOTION_API_KEY": "ntn_your_integration_token"
      }
    }
  }
}
```

### HTTP Mode (Streamable HTTP)

```bash
NOTION_API_KEY=ntn_xxx npx @node2flow/notion-mcp --http
```

MCP endpoint: `http://localhost:3000/mcp`

### Cloudflare Worker

```
https://notion-mcp-community.node2flow.net/mcp?NOTION_API_KEY=ntn_xxx
```

## Configuration

| Variable | Required | Description |
|----------|----------|-------------|
| `NOTION_API_KEY` | Yes | Notion Internal Integration Token (starts with `ntn_` or `secret_`) |

### Getting a Notion API Key

1. Go to [notion.so/my-integrations](https://www.notion.so/my-integrations)
2. Click **New integration**
3. Give it a name and select the workspace
4. Copy the **Internal Integration Token**
5. Share your pages/databases with the integration (click "..." > "Connections" > add your integration)

## Tools (25)

### Search (1)
| Tool | Description |
|------|-------------|
| `notion_search` | Search pages and databases by title |

### Pages (5)
| Tool | Description |
|------|-------------|
| `notion_create_page` | Create a new page |
| `notion_get_page` | Get page by ID |
| `notion_update_page` | Update page properties, icon, cover |
| `notion_move_page` | Move page to new parent |
| `notion_get_page_property` | Get a specific property value |

### Blocks (5)
| Tool | Description |
|------|-------------|
| `notion_get_block` | Get a block by ID |
| `notion_get_block_children` | Read page/block content |
| `notion_append_blocks` | Add content blocks to page/block |
| `notion_update_block` | Update block content |
| `notion_delete_block` | Delete (archive) a block |

### Data Sources (5)
| Tool | Description |
|------|-------------|
| `notion_create_data_source` | Create a data source table |
| `notion_get_data_source` | Get data source by ID |
| `notion_update_data_source` | Update data source schema |
| `notion_query_data_source` | Query pages with filters/sorts |
| `notion_list_data_source_templates` | List data source templates |

### Databases — Legacy (3)
| Tool | Description |
|------|-------------|
| `notion_get_database` | Get database by ID |
| `notion_query_database` | Query database with filters/sorts |
| `notion_create_database` | Create inline database in page |

### Comments (3)
| Tool | Description |
|------|-------------|
| `notion_create_comment` | Comment on page or reply to thread |
| `notion_get_comments` | List comments on page/block |
| `notion_get_comment` | Get single comment by ID |

### Users (3)
| Tool | Description |
|------|-------------|
| `notion_list_users` | List all workspace users |
| `notion_get_user` | Get user by ID |
| `notion_get_bot_user` | Get bot integration info |

## License

MIT License - see [LICENSE](LICENSE)

Copyright (c) 2026 [Node2Flow](https://node2flow.net)

## Links

- [npm Package](https://www.npmjs.com/package/@node2flow/notion-mcp)
- [Notion API Documentation](https://developers.notion.com/)
- [MCP Protocol](https://modelcontextprotocol.io/)
- [Node2Flow](https://node2flow.net)