Notion MCP Server for Cloudflare Workers
21 tools available in the Notion MCP server. Each tool can be called by AI assistants to perform specific actions.
notion_get_blockRetrieve a Notion block by its ID.
A block is any piece of content in Notion - paragraphs, headings, lists, etc. Pages and databases are also blocks.
Args:
Returns: The block object with its type-specific content.
{
"type": "object",
"required": [
"blockId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"blockId": {
"type": "string",
"description": "The block ID"
}
}
}notion_get_block_childrenGet the children blocks of a block or page.
Use this to read the content of a page or the nested content of a block.
Args:
Returns: Paginated list of child blocks.
{
"type": "object",
"required": [
"blockId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"blockId": {
"type": "string",
"description": "The block or page ID"
},
"pageSize": {
"type": "integer",
"default": 100,
"maximum": 100,
"minimum": 1,
"description": "Number of blocks"
},
"startCursor": {
"type": "string",
"description": "Pagination cursor"
}
}
}notion_append_blocksAppend new blocks as children of an existing block or page.
Use this to add content to a page or nest content inside a block.
Args:
Returns: The appended blocks.
{
"type": "object",
"required": [
"blockId",
"children"
],
"properties": {
"blockId": {
"type": "string",
"description": "The block or page ID"
},
"children": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of block objects to append"
}
}
}notion_update_blockUpdate an existing block's content.
Args:
Returns: The updated block object.
{
"type": "object",
"required": [
"blockId",
"content"
],
"properties": {
"blockId": {
"type": "string",
"description": "The block ID"
},
"content": {
"type": "object",
"description": "Block content to update"
}
}
}notion_delete_blockDelete (trash) a block.
The block and all its children will be moved to trash.
Args:
Returns: The deleted block object (with archived: true).
{
"type": "object",
"required": [
"blockId"
],
"properties": {
"blockId": {
"type": "string",
"description": "The block ID to delete"
}
}
}notion_get_commentsRetrieve comments from a page or block.
Gets all comments associated with a page or specific block.
Args:
Returns: Paginated list of comments with their text, author, and timestamps.
{
"type": "object",
"required": [
"blockId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"blockId": {
"type": "string",
"description": "The page or block ID"
},
"pageSize": {
"type": "integer",
"default": 100,
"maximum": 100,
"minimum": 1,
"description": "Number of comments"
},
"startCursor": {
"type": "string",
"description": "Pagination cursor"
}
}
}notion_create_commentCreate a new comment on a page or in a discussion.
Args:
Returns: The created comment object.
{
"type": "object",
"required": [
"parentId",
"parentType",
"richText"
],
"properties": {
"parentId": {
"type": "string",
"description": "Page ID or discussion ID"
},
"richText": {
"type": "array",
"items": {
"type": "string"
},
"description": "Comment text as rich text array"
},
"parentType": {
"enum": [
"page_id",
"discussion_id"
],
"type": "string",
"description": "Type of parent"
}
}
}notion_get_commentRetrieve a specific comment by its ID.
Args:
Returns: The comment object with its text, author, and timestamps.
{
"type": "object",
"required": [
"commentId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"commentId": {
"type": "string",
"description": "The comment ID"
}
}
}notion_get_databaseRetrieve a Notion database by its ID.
Returns the database object with its schema (properties), title, and metadata.
Args:
Returns: The database object with all properties and their configurations.
{
"type": "object",
"required": [
"databaseId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"databaseId": {
"type": "string",
"description": "The database ID"
}
}
}notion_query_databaseQuery a Notion database to retrieve pages that match filter criteria.
Args:
Returns: Paginated list of pages that match the query.
{
"type": "object",
"required": [
"databaseId"
],
"properties": {
"sorts": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of sort objects"
},
"filter": {
"type": "object",
"description": "Filter object"
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"pageSize": {
"type": "integer",
"default": 100,
"maximum": 100,
"minimum": 1,
"description": "Number of results"
},
"databaseId": {
"type": "string",
"description": "The database ID"
},
"startCursor": {
"type": "string",
"description": "Pagination cursor"
}
}
}notion_create_databaseCreate a new Notion database as a child of a page.
Args:
Returns: The created database object.
{
"type": "object",
"required": [
"parentPageId",
"title",
"properties"
],
"properties": {
"icon": {
"description": "Icon object"
},
"cover": {
"description": "Cover image object"
},
"title": {
"type": "array",
"items": {
"type": "string"
},
"description": "Title as rich text array"
},
"properties": {
"type": "object",
"description": "Database schema/properties"
},
"parentPageId": {
"type": "string",
"description": "Parent page ID"
}
}
}notion_update_databaseUpdate a Notion database's title, description, or properties.
Args:
Returns: The updated database object.
{
"type": "object",
"required": [
"databaseId"
],
"properties": {
"icon": {
"description": "New icon"
},
"cover": {
"description": "New cover"
},
"title": {
"type": "array",
"items": {
"type": "string"
},
"description": "New title as rich text"
},
"databaseId": {
"type": "string",
"description": "The database ID"
},
"properties": {
"type": "object",
"description": "Properties to update"
},
"description": {
"type": "array",
"items": {
"type": "string"
},
"description": "New description"
}
}
}notion_get_pageRetrieve a Notion page by its ID.
Args:
Returns: The page object with all properties, metadata, and parent information.
{
"type": "object",
"required": [
"pageId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"pageId": {
"type": "string",
"description": "The page ID"
}
}
}notion_create_pageCreate a new Notion page.
The page can be created as a child of a database (with database_id) or as a child of another page (with page_id).
Args:
Returns: The created page object.
{
"type": "object",
"required": [
"parentId",
"properties"
],
"properties": {
"icon": {
"description": "Icon object"
},
"cover": {
"description": "Cover image object"
},
"children": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of block objects for page content"
},
"parentId": {
"type": "string",
"description": "Parent database or page ID"
},
"properties": {
"type": "object",
"description": "Page properties object"
}
}
}notion_update_pageUpdate an existing Notion page's properties.
Args:
Returns: The updated page object.
{
"type": "object",
"required": [
"pageId"
],
"properties": {
"icon": {
"description": "New icon object"
},
"cover": {
"description": "New cover object"
},
"pageId": {
"type": "string",
"description": "The page ID to update"
},
"archived": {
"type": "boolean",
"description": "Archive or unarchive the page"
},
"properties": {
"type": "object",
"description": "Properties to update"
}
}
}notion_trash_pageMove a Notion page to trash.
This is equivalent to deleting the page. The page can be restored from trash within Notion.
Args:
Returns: The trashed page object.
{
"type": "object",
"required": [
"pageId"
],
"properties": {
"pageId": {
"type": "string",
"description": "The page ID to trash"
}
}
}notion_get_page_propertyRetrieve a specific property value from a page.
This is useful for paginated properties like title, rich_text, relation, and people, where the full value may not be returned in the page object.
Args:
Returns: The property value or paginated list of property items.
{
"type": "object",
"required": [
"pageId",
"propertyId"
],
"properties": {
"pageId": {
"type": "string",
"description": "The page ID"
},
"pageSize": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size"
},
"propertyId": {
"type": "string",
"description": "The property ID"
},
"startCursor": {
"type": "string",
"description": "Pagination cursor"
}
}
}notion_searchSearch for pages and databases in Notion by title.
Searches across all pages and databases that have been shared with the integration.
Args:
Returns: Paginated list of matching pages and/or databases.
{
"type": "object",
"properties": {
"sort": {
"type": "object",
"description": "Sort configuration"
},
"query": {
"type": "string",
"description": "Search query string"
},
"filter": {
"type": "object",
"description": "Filter for pages or databases only"
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"pageSize": {
"type": "integer",
"default": 100,
"maximum": 100,
"minimum": 1,
"description": "Number of results"
},
"startCursor": {
"type": "string",
"description": "Pagination cursor"
}
}
}notion_list_usersList all users in the Notion workspace.
Returns a paginated list of all users (people and bots) that have access to the workspace.
Args:
Returns: List of users with their IDs, names, types, and email addresses.
{
"type": "object",
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"default": "json",
"description": "Response format"
},
"pageSize": {
"type": "integer",
"default": 100,
"maximum": 100,
"minimum": 1,
"description": "Number of users to return"
},
"startCursor": {
"type": "string",
"description": "Pagination cursor from previous response"
}
}
}notion_get_userGet a single user by their ID.
Args:
Returns: The user object with all available details.
{
"type": "object",
"required": [
"userId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"userId": {
"type": "string",
"description": "The user ID"
}
}
}notion_get_meGet the current bot user (the integration making the API call).
This is useful to verify the connection and see which bot/integration is being used.
Args:
Returns: The bot user object for the current integration.
{
"type": "object",
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
}
}
}