Notion

by akira-papa

4 stars
357 downloads
Not rated
GitHub

About

Integrates Notion workspaces, enabling seamless interaction with Notion's API for tasks like automated note-taking and knowledge base management.

Details

Author
akira-papa
Repository
Akira-Papa/akirapapa-mcp-notion-server
GitHub stars
4
Downloads
357
License
MIT License
Categories
Productivity, Developer Tools, Design, Workplace, AI, Search, Communication, Project Management, Knowledge Base
Tags
#integration

- Append, retrieve, and delete blocks (child blocks, specific blocks).
- Retrieve and update pages and their properties.
- Create, query, and update databases.
- Create new items (rows) in a database.
- Pagination support with start_cursor and configurable page_size.

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Notion
    Command (node, npx, python, etc.) node
    Arguments
    • Argument 1 your-built-file-path
    Environment
    • NOTION_API_TOKEN your-integration-token

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

Here is a detailed explanation of the steps mentioned above in the following articles:

- English Version: https://dev.to/suekou/operating-notion-via-claude-desktop-using-mcp-c0h
- Japanese Version: https://qiita.com/suekou/items/44c864583f5e3e6325d9

1. Create a Notion Integration:

- Visit the Notion Your Integrations page.
- Click "New Integration".
- Name your integration and select appropriate permissions (e.g., "Read content", "Update content").

2. Retrieve the Secret Key:

- Copy the "Internal Integration Token" from your integration.
- This token will be used for authentication.

3. Add the Integration to Your Workspace:

- Open the page or database you want the integration to access in Notion.
- Click the navigation button in the top right corner.
- Click "Connect to" button and select your integration.

4. Configure Claude Desktop:
Add the following to your claude_desktop_config.json:

   {
     "mcpServers": {
       "notion": {
         "command": "node",
         "args": ["your-built-file-path"],
         "env": {
           "NOTION_API_TOKEN": "your-integration-token"
         }
       }
     }
   }
   

notion_append_block_children

Append child blocks to a parent block. Required inputs: block_id (string): The ID of the parent block; children (array): Array of block objects to append. Returns: Information about the appended blocks.

notion_retrieve_block

Retrieve information about a specific block. Required inputs: block_id (string): The ID of the block to retrieve. Returns: Detailed information about the block.

notion_retrieve_block_children

Retrieve the children of a specific block. Required inputs: block_id (string): The ID of the parent block; Optional inputs: start_cursor (string): Cursor for the next page of results; page_size (number, default: 100, max: 100): Number of blocks to retrieve. Returns: List of child blocks.

notion_delete_block

Delete a specific block. Required inputs: block_id (string): The ID of the block to delete. Returns: Confirmation of the deletion.

notion_retrieve_page

Retrieve information about a specific page. Required inputs: page_id (string): The ID of the page to retrieve. Returns: Detailed information about the page.

notion_update_page_properties

Update properties of a page. Required inputs: page_id (string): The ID of the page to update; properties (object): Properties to update. Returns: Information about the updated page.

notion_create_database

Create a new database. Required inputs: parent (object): Parent object of the database; title (array): Title of the database as a rich text array; properties (object): Property schema of the database. Returns: Information about the created database.

notion_query_database

Query a database. Required inputs: database_id (string): The ID of the database to query; Optional inputs: filter (object): Filter conditions; sorts (array): Sorting conditions; start_cursor (string): Cursor for the next page of results; page_size (number, default: 100, max: 100): Number of results to retrieve. Returns: List of results from the query.

notion_retrieve_database

Retrieve information about a specific database. Required inputs: database_id (string): The ID of the database to retrieve. Returns: Detailed information about the database.

notion_update_database

Update information about a database. Required inputs: database_id (string): The ID of the database to update; Optional inputs: title (array): New title for the database; description (array): New description for the database; properties (object): Updated property schema. Returns: Information about the updated database.

notion_create_database_item

Create a new item in a Notion database. Required inputs: database_id (string): The ID of the database to add the item to; properties (object): The properties of the new item. These should match the database schema. Returns: Information about the newly created item.

1. notion_append_block_children

- Append child blocks to a parent block.
- Required inputs:
- block_id (string): The ID of the parent block.
- children (array): Array of block objects to append.
- Returns: Information about the appended blocks.

2. notion_retrieve_block

- Retrieve information about a specific block.
- Required inputs:
- block_id (string): The ID of the block to retrieve.
- Returns: Detailed information about the block.

3. notion_retrieve_block_children

- Retrieve the children of a specific block.
- Required inputs:
- block_id (string): The ID of the parent block.
- Optional inputs:
- start_cursor (string): Cursor for the next page of results.
- page_size (number, default: 100, max: 100): Number of blocks to retrieve.
- Returns: List of child blocks.

4. notion_delete_block

- Delete a specific block.
- Required inputs:
- block_id (string): The ID of the block to delete.
- Returns: Confirmation of the deletion.

5. notion_retrieve_page

- Retrieve information about a specific page.
- Required inputs:
- page_id (string): The ID of the page to retrieve.
- Returns: Detailed information about the page.

6. notion_update_page_properties

- Update properties of a page.
- Required inputs:
- page_id (string): The ID of the page to update.
- properties (object): Properties to update.
- Returns: Information about the updated page.

7. notion_create_database

- Create a new database.
- Required inputs:
- parent (object): Parent object of the database.
- title (array): Title of the database as a rich text array.
- properties (object): Property schema of the database.
- Returns: Information about the created database.

8. notion_query_database

- Query a database.
- Required inputs:
- database_id (string): The ID of the database to query.
- Optional inputs:
- filter (object): Filter conditions.
- sorts (array): Sorting conditions.
- start_cursor (string): Cursor for the next page of results.
- page_size (number, default: 100, max: 100): Number of results to retrieve.
- Returns: List of results from the query.

9. notion_retrieve_database

- Retrieve information about a specific database.
- Required inputs:
- database_id (string): The ID of the database to retrieve.
- Returns: Detailed information about the database.

10. notion_update_database

- Update information about a database.
- Required inputs:
- database_id (string): The ID of the database to update.
- Optional inputs:
- title (array): New title for the database.
- description (array): New description for the database.
- properties (object): Updated property schema.
- Returns: Information about the updated database.

11. notion_create_database_item

- Create a new item in a Notion database.
- Required inputs:
- database_id (string): The ID of the database to add the item to.
- properties (object): The properties of the new item. These should match the database schema.
- Returns: Information about the newly created item.

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "notion": {
            "env": {
                "NOTION_API_TOKEN": "your-integration-token"
            },
            "args": [
                "your-built-file-path"
            ],
            "command": "node"
        }
    }
}

Linux

{
    "env": {
        "NOTION_API_TOKEN": "your-integration-token"
    },
    "args": [
        "your-built-file-path"
    ],
    "command": "node"
}

Macos

{
    "env": {
        "NOTION_API_TOKEN": "your-integration-token"
    },
    "args": [
        "your-built-file-path"
    ],
    "command": "node"
}

Windows

{
    "env": {
        "NOTION_API_TOKEN": "your-integration-token"
    },
    "args": [
        "/c",
        "node",
        "your-built-file-path"
    ],
    "command": "cmd"
}

Notion MCP Server

MCP Server for the Notion API, enabling Claude to interact with Notion workspaces.

Tools

1. notion_append_block_children

- Append child blocks to a parent block.
- Required inputs:
- block_id (string): The ID of the parent block.
- children (array): Array of block objects to append.
- Returns: Information about the appended blocks.

2. notion_retrieve_block

- Retrieve information about a specific block.
- Required inputs:
- block_id (string): The ID of the block to retrieve.
- Returns: Detailed information about the block.

3. notion_retrieve_block_children

- Retrieve the children of a specific block.
- Required inputs:
- block_id (string): The ID of the parent block.
- Optional inputs:
- start_cursor (string): Cursor for the next page of results.
- page_size (number, default: 100, max: 100): Number of blocks to retrieve.
- Returns: List of child blocks.

4. notion_delete_block

- Delete a specific block.
- Required inputs:
- block_id (string): The ID of the block to delete.
- Returns: Confirmation of the deletion.

5. notion_retrieve_page

- Retrieve information about a specific page.
- Required inputs:
- page_id (string): The ID of the page to retrieve.
- Returns: Detailed information about the page.

6. notion_update_page_properties

- Update properties of a page.
- Required inputs:
- page_id (string): The ID of the page to update.
- properties (object): Properties to update.
- Returns: Information about the updated page.

7. notion_create_database

- Create a new database.
- Required inputs:
- parent (object): Parent object of the database.
- title (array): Title of the database as a rich text array.
- properties (object): Property schema of the database.
- Returns: Information about the created database.

8. notion_query_database

- Query a database.
- Required inputs:
- database_id (string): The ID of the database to query.
- Optional inputs:
- filter (object): Filter conditions.
- sorts (array): Sorting conditions.
- start_cursor (string): Cursor for the next page of results.
- page_size (number, default: 100, max: 100): Number of results to retrieve.
- Returns: List of results from the query.

9. notion_retrieve_database

- Retrieve information about a specific database.
- Required inputs:
- database_id (string): The ID of the database to retrieve.
- Returns: Detailed information about the database.

10. notion_update_database

- Update information about a database.
- Required inputs:
- database_id (string): The ID of the database to update.
- Optional inputs:
- title (array): New title for the database.
- description (array): New description for the database.
- properties (object): Updated property schema.
- Returns: Information about the updated database.

11. notion_create_database_item

- Create a new item in a Notion database.
- Required inputs:
- database_id (string): The ID of the database to add the item to.
- properties (object): The properties of the new item. These should match the database schema.
- Returns: Information about the newly created item.

Setup

Here is a detailed explanation of the steps mentioned above in the following articles:

- English Version: https://dev.to/suekou/operating-notion-via-claude-desktop-using-mcp-c0h
- Japanese Version: https://qiita.com/suekou/items/44c864583f5e3e6325d9

1. Create a Notion Integration:

- Visit the Notion Your Integrations page.
- Click "New Integration".
- Name your integration and select appropriate permissions (e.g., "Read content", "Update content").

2. Retrieve the Secret Key:

- Copy the "Internal Integration Token" from your integration.
- This token will be used for authentication.

3. Add the Integration to Your Workspace:

- Open the page or database you want the integration to access in Notion.
- Click the navigation button in the top right corner.
- Click "Connect to" button and select your integration.

4. Configure Claude Desktop:
Add the following to your claude_desktop_config.json:

   {
     "mcpServers": {
       "notion": {
         "command": "node",
         "args": ["your-built-file-path"],
         "env": {
           "NOTION_API_TOKEN": "your-integration-token"
         }
       }
     }
   }
   

Troubleshooting

If you encounter permission errors:

1. Ensure the integration has the required permissions.
2. Verify that the integration is invited to the relevant pages or databases.
3. Confirm the token and configuration are correctly set in claude_desktop_config.json.

License

This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.