
Notion
Server for interacting with Notion
Tools
List All Users
List all users in the workspace (excludes guests)
List All Pages
List all pages across all databases in the workspace
List All Blocks
List all blocks from a specific page
Get User
Retrieve a specific user by their ID
Get Current User
Retrieve information about the current bot user
Search Pages
Search pages by text
List Databases
List all databases in the workspace. Use list_data_sources to inspect a specific database's data sources.
Get Database
Retrieve a specific database by ID to get its schema/structure. Useful for understanding properties and types before using other database tools.
Query Database
Query a Notion database with filtering, sorting, and pagination support
Get Page
Retrieve a page by ID with its properties (not content). Note: Limited to 25 references per property - use get_page_property for properties with more references.
Get Block Children
List content blocks of a page or block with pagination support. Returns only first level children.
Get Block
Retrieve a single block by ID. Use get_block_children if the block has children.
Create Page
Create a new Notion page as a child of a page or database. Provide either parent_page_id/parent_page_url (for sub-pages) or parent_database_id/parent_database_url (for database entries). For sub-pages, only 'title' is needed. For database entries, use 'properties' matching the database schema (use get_database first to see the schema). Page content can be set via 'markdown' (Notion-flavored Markdown string) or 'children' (array of block objects). These are mutually exclusive. Properties format — object keyed by property name, each value is a property-type object: Title: {"Title Prop": {"title": [{"text": {"content": "My Title"}}]}} Rich text: {"Desc": {"rich_text": [{"text": {"content": "text"}}]}} Number: {"Amount": {"number": 42}} Select: {"Status": {"select": {"name": "Option A"}}} Multi-select: {"Tags": {"multi_select": [{"name": "Tag1"}, {"name": "Tag2"}]}} Date: {"Due": {"date": {"start": "2024-01-15"}}} Checkbox: {"Done": {"checkbox": true}} URL: {"Link": {"url": "https://example.com"}} Email: {"Contact": {"email": "a@b.com"}} Phone: {"Phone": {"phone_number": "+1234567890"}} People: {"Assignee": {"people": [{"id": "user-id"}]}} Relation: {"Related": {"relation": [{"id": "page-id"}]}} Status: {"Progress": {"status": {"name": "In progress"}}} Files: {"Attach": {"files": [{"external": {"url": "https://..."}, "name": "file.pdf"}]}} Children format — array of block objects, e.g.: [{"paragraph": {"rich_text": [{"text": {"content": "Hello"}}]}}, {"heading_2": {"rich_text": [{"text": {"content": "Section"}}]}}]
Update Page
Update a Notion page's properties, icon, cover, or archive/trash status. Cannot change a page's parent. Use get_database to check the schema before updating database page properties. Properties format — same as create_page, object keyed by property name: Title: {"Title Prop": {"title": [{"text": {"content": "New Title"}}]}} Rich text: {"Desc": {"rich_text": [{"text": {"content": "text"}}]}} Number: {"Amount": {"number": 42}} Select: {"Status": {"select": {"name": "Option A"}}} Multi-select: {"Tags": {"multi_select": [{"name": "Tag1"}, {"name": "Tag2"}]}} Date: {"Due": {"date": {"start": "2024-01-15"}}} Checkbox: {"Done": {"checkbox": true}} URL: {"Link": {"url": "https://example.com"}} Email: {"Contact": {"email": "a@b.com"}} Phone: {"Phone": {"phone_number": "+1234567890"}} People: {"Assignee": {"people": [{"id": "user-id"}]}} Relation: {"Related": {"relation": [{"id": "page-id"}]}} Status: {"Progress": {"status": {"name": "In progress"}}} Files: {"Attach": {"files": [{"external": {"url": "https://..."}, "name": "file.pdf"}]}} Set any property to null to clear it.
Create Database
Create a new Notion database as a sub-page of an existing page. The database is created with an initial data source whose property schema you define via 'properties'. Note: creating 'status' properties is not supported by the API. Properties format — object keyed by property name, each value defines the column type: Title (required): {"Name": {"title": {}}} Rich text: {"Notes": {"rich_text": {}}} Number: {"Amount": {"number": {"format": "number"}}} Select: {"Priority": {"select": {"options": [{"name": "High", "color": "red"}, {"name": "Low", "color": "green"}]}}} Multi-select: {"Tags": {"multi_select": {"options": [{"name": "Bug"}, {"name": "Feature"}]}}} Date: {"Due": {"date": {}}} Checkbox: {"Done": {"checkbox": {}}} URL: {"Link": {"url": {}}} Email: {"Contact": {"email": {}}} Phone: {"Phone": {"phone_number": {}}} People: {"Assignee": {"people": {}}} Files: {"Attachments": {"files": {}}}
Update Database
Update a Notion database's title, description, icon, cover, or trash/lock status. To update the property schema of a data source, use the Notion API directly.
List Data Sources
List all data sources under a Notion database. Each data source has its own schema and properties. Use this for databases with multiple data sources.
Get Data Source
Retrieve a specific data source by ID to get its schema/properties. Use get_database first to discover data source IDs.
Update Data Source
Update a data source's property schema, title, description, icon, or trash status. Use this to add, modify, or remove columns in a database's data source. Can also move a data source to a different database via parent_database_id. Properties format — same as create_database, object keyed by property name: Add title column: {"Name": {"title": {}}} Add select: {"Priority": {"select": {"options": [{"name": "High", "color": "red"}]}}} Remove column: {"Old Column": null} Rename: {"Old Name": {"name": "New Name"}}
Create Comment
Create a comment on a page, block, or reply to an existing discussion thread
List Comments
List comments on a page or block
Append Blocks
Append child blocks to a page or block. Supports up to 100 blocks and two levels of nesting per request
Update Block
Update an existing block's content. Cannot update children — use append_blocks instead. block_data is the raw Notion API update payload with the block type as a top-level key. Examples: Paragraph: {"paragraph": {"rich_text": [{"type": "text", "text": {"content": "New text"}}]}, "type": "paragraph"} To-do: {"to_do": {"rich_text": [...], "checked": true}, "type": "to_do"} Callout: {"callout": {"rich_text": [...], "icon": {"type": "emoji", "emoji": "✅"}}, "type": "callout"}
Delete Block
Archive (soft-delete) a block by ID. The block can be restored by updating it with archived=false via update_block
Installation Steps
Get StartedCreate a Gumloop Account
To use this MCP, you need a Gumloop account. If you don't have one yet, you can create one for free.
Copy Your Server URL
Copy your MCP server URL and add it to your client. You'll be prompted to authorize on first use.