Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Notion MCP connector

OAuth 2.1/DCRProductivityCollaborationProject Management

Connect to Notion MCP. Create and update pages, databases, comments, and views from your AI workflows.

Notion MCP connector

  1. Terminal window
    npm install @scalekit-sdk/node

    Full SDK reference: Node.js | Python

  2. Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. quickstart.ts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENV_URL,
    process.env.SCALEKIT_CLIENT_ID,
    process.env.SCALEKIT_CLIENT_SECRET,
    )
    const actions = scalekit.actions
    const connector = 'notionmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Notion MCP:', link)
    process.stdout.write('Press Enter after authorizing...')
    await new Promise(r => process.stdin.once('data', r))
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'notionmcp_notion-get-teams',
    toolInput: {},
    })
    console.log(result)

Connect this agent connector to let your agent:

  • Notion-update-view records — Update a Notion database view’s name, filters, sorts, or display configuration
  • Notion-update-page records — Update a Notion page’s properties, content, icon, cover, or verification status
  • Notion-update-data-source records — Update a Notion data source’s schema, title, or attributes using SQL DDL statements
  • Notion-search records — Search pages, databases, and connected sources in the Notion workspace
  • Notion-query-meeting-notes records — Query the current user’s Notion meeting notes data source with optional filters
  • Notion-query-database-view records — Query paginated results from a Notion database view by its URL

Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.

notionmcp_notion-create-comment#Add a comment to a Notion page or inline discussion thread.5 params

Add a comment to a Notion page or inline discussion thread.

NameTypeRequiredDescription
page_idstringrequiredThe ID of the page to comment on (with or without dashes).
discussion_idstringoptionalThe ID or URL of an existing discussion to reply to (e.g., discussion://pageId/blockId/discussionId).
markdownstringoptionalThe content of the comment as a Markdown string. Provide exactly one of markdown or rich_text. For exact syntax, read the MCP resource notion://docs/enhanced-markdown-spec through your MCP client's resource-reading interface. Do not pass this URI to the Notion fetch tool or any URL-fetching tool, and use only the Rich text types and Mentions syntax that comments support. Comments support inline formatting (bold, italic, strikethrough, underline, code, links), inline math using $`Equation`$, and user/page/database/date mention tags such as <mention-date start="YYYY-MM-DD"/>. Do not use UI shortcuts like @today, @name, [[page]], or autocomplete-style emoji syntax; those are editor affordances, not markdown syntax. Mention tags must include a real url where required by the spec. Block-level Markdown such as fenced code blocks, headings, lists, tables, and blockquotes is stored as plain comment text rather than rendered as blocks.
rich_textarrayoptionalAn array of rich text objects that represent the content of the comment. Provide exactly one of rich_text or markdown.
selection_with_ellipsisstringoptionalUnique start and end snippet of the content to comment on. DO NOT provide the entire string. Instead, provide up to the first ~10 characters, an ellipsis, and then up to the last ~10 characters. Make sure you provide enough of the start and end snippet to uniquely identify the content. For example: "# Section heading...last paragraph."
notionmcp_notion-create-database#Create a new Notion database using a SQL DDL schema definition.4 params

Create a new Notion database using a SQL DDL schema definition.

NameTypeRequiredDescription
schemastringrequiredSQL DDL CREATE TABLE statement defining the database schema. Column names must be double-quoted, type options use single quotes.
descriptionstringoptionalThe description of the new database.
parentobjectoptionalThe parent under which to create the new database. If omitted, the database will be created as a private page at the workspace level.
titlestringoptionalThe title of the new database.
notionmcp_notion-create-pages#Create one or more Notion pages with properties and Markdown content.2 params

Create one or more Notion pages with properties and Markdown content.

NameTypeRequiredDescription
pagesarrayrequiredThe pages to create.
parentstringoptionalThe parent under which the new pages will be created. This can be a page (page_id), a database page (database_id), or a data source/collection under a database (data_source_id). If omitted, the new pages will be created as private pages at the workspace level. Use data_source_id when you have a collection:// URL from the fetch tool.
notionmcp_notion-create-view#Create a new view on a Notion database with optional filters and sorts.6 params

Create a new view on a Notion database with optional filters and sorts.

NameTypeRequiredDescription
data_source_idstringrequiredThe data source (collection) ID. Accepts a collection:// URI from <data-source> tags or a bare UUID.
namestringrequiredThe name of the view.
typestringrequiredThe view type. Accepted values: table, board, calendar, gallery, list, timeline.
configurestringoptionalView configuration DSL string. Supports FILTER, SORT BY, GROUP BY, CALENDAR BY, TIMELINE BY, MAP BY, CHART, FORM, SHOW, HIDE, COVER, WRAP CELLS, and FREEZE COLUMNS directives. See notion://docs/view-dsl-spec.
database_idstringoptionalThe database to add a view tab to. Accepts a Notion URL or a bare UUID. Mutually exclusive with `parent_page_id`; exactly one must be provided.
parent_page_idstringoptionalA page to create an inline linked database view on. Accepts a Notion URL or a bare UUID. The new linked view block is appended at the end of the page and references `data_source_id`. Mutually exclusive with `database_id`; exactly one must be provided.
notionmcp_notion-duplicate-page#Duplicate an existing Notion page within the current workspace.1 param

Duplicate an existing Notion page within the current workspace.

NameTypeRequiredDescription
page_idstringrequiredThe ID of the page to duplicate. This is a v4 UUID, with or without dashes, and can be parsed from a Notion page URL.
notionmcp_notion-fetch#Retrieve details about a Notion page, database, or data source by URL or ID.3 params

Retrieve details about a Notion page, database, or data source by URL or ID.

NameTypeRequiredDescription
idstringrequiredThe ID or URL of the Notion page, database, or data source to fetch. Supports notion.so URLs, Notion Sites URLs (*.notion.site), raw UUIDs, and data source URLs (collection://...).
include_discussionsbooleanoptionalSet to true to include discussion threads in the response.
include_transcriptbooleanoptionalSet to true to include a meeting transcript in the response.
notionmcp_notion-get-comments#Retrieve comments and discussion threads from a Notion page.4 params

Retrieve comments and discussion threads from a Notion page.

NameTypeRequiredDescription
page_idstringrequiredIdentifier for a Notion page.
discussion_idstringoptionalFetch a specific discussion by ID or discussion URL (e.g., discussion://pageId/blockId/discussionId).
include_all_blocksbooleanoptionalSet to true to return all comment blocks, not just the first.
include_resolvedbooleanoptionalSet to true to include resolved discussions in the response.
notionmcp_notion-get-teams#Retrieve a list of teams (teamspaces) in the current workspace.1 param

Retrieve a list of teams (teamspaces) in the current workspace.

NameTypeRequiredDescription
querystringoptionalOptional search query to filter teams by name (case-insensitive).
notionmcp_notion-get-users#Retrieve a list of users in the current Notion workspace.4 params

Retrieve a list of users in the current Notion workspace.

NameTypeRequiredDescription
page_sizeintegeroptionalNumber of users to return per page (default: 100, max: 100).
querystringoptionalOptional search query to filter users by name or email (case-insensitive).
start_cursorstringoptionalCursor for pagination. Use the next_cursor value from the previous response to get the next page.
user_idstringoptionalReturn only the user matching this ID. Pass "self" to fetch the current user.
notionmcp_notion-move-pages#Move one or more Notion pages or databases to a new parent.2 params

Move one or more Notion pages or databases to a new parent.

NameTypeRequiredDescription
new_parentstringrequiredThe new parent under which the pages will be moved. This can be a page, the workspace, a database, or a specific data source under a database when there are multiple. Moving pages to the workspace level adds them as private pages and should rarely be used.
page_or_database_idsarrayrequiredAn array of up to 100 page or database IDs to move. IDs are v4 UUIDs and can be supplied with or without dashes (e.g. extracted from a <page> or <database> URL given by the "search" or "fetch" tool). Data Sources under Databases can't be moved individually.
notionmcp_notion-query-data-sources#Query Notion databases using SQL or by specifying a view.1 param

Query Notion databases using SQL or by specifying a view.

NameTypeRequiredDescription
datastringrequiredThe data required for querying data sources
notionmcp_notion-query-database-view#Query paginated results from a Notion database view by its URL.3 params

Query paginated results from a Notion database view by its URL.

NameTypeRequiredDescription
view_urlstringrequiredURL of a specific database view to query. Example: https://www.notion.so/workspace/db-id?v=view-id
page_sizeintegeroptionalNumber of rows to return per page (default: 100, max: 100).
start_cursorstringoptionalCursor for pagination. Use the next_cursor value from the previous response to get the next page.
notionmcp_notion-query-meeting-notes#Query the current user's Notion meeting notes data source with optional filters.1 param

Query the current user's Notion meeting notes data source with optional filters.

NameTypeRequiredDescription
filterobjectoptionalAcceptable filter for querying current user's meeting notes data source.
notionmcp_notion-update-data-source#Update a Notion data source's schema, title, or attributes using SQL DDL statements.6 params

Update a Notion data source's schema, title, or attributes using SQL DDL statements.

NameTypeRequiredDescription
data_source_idstringrequiredThe data source to update. Accepts a collection:// URI from <data-source> tags, a bare UUID, or a database ID (only if the database has a single data source).
descriptionstringoptionalThe new description of the data source.
in_trashbooleanoptionalSet to true to move the data source to the trash.
is_inlinebooleanoptionalSet to true to make the database display inline within a page.
statementsstringoptionalSemicolon-separated SQL DDL statements to update the schema. Supports ADD COLUMN, DROP COLUMN, RENAME COLUMN, ALTER COLUMN SET.
titlestringoptionalThe new title of the data source.
notionmcp_notion-update-page#Update a Notion page's properties, content, icon, cover, or verification status.13 params

Update a Notion page's properties, content, icon, cover, or verification status.

NameTypeRequiredDescription
commandstringrequiredThe update operation to perform. Accepted values: update_properties, update_content, replace_content, insert_content, apply_template, update_verification.
page_idstringrequiredThe ID of the page to update, with or without dashes.
allow_deleting_contentbooleanoptionalSet to true to confirm deletion of child pages or databases when replacing content.
contentstringoptionalRequired for "insert_content" command. The markdown content to insert into the page.
content_updatesarrayoptionalRequired for "update_content" command. An array of search-and-replace operations, each with old_str (content to find) and new_str (replacement content).
coverstringoptionalAn external image URL for the page cover. Use "none" to remove the cover. Omit to leave unchanged. Can be set alongside any command.
iconstringoptionalAn emoji character (e.g. "🚀"), a custom emoji by name (e.g. ":rocket_ship:"), or an external image URL. Use "none" to remove the icon. Omit to leave unchanged. Can be set alongside any command.
new_strstringoptionalRequired for "replace_content" command. The new content string to replace the entire page content with.
positionstringoptionalOptional for "insert_content" command. Use {"type":"start"} to prepend content or {"type":"end"} to append content. Omit to append.
propertiesobjectoptionalRequired for "update_properties" command. A JSON object that updates the page's properties. For pages in a database, use the SQLite schema definition shown in <database>. For pages outside of a database, the only allowed property is "title", which is the title of the page in inline markdown format. Use null to remove a property's value.
template_idstringoptionalRequired for "apply_template" command. The ID of a template to apply to this page. Template content is appended to any existing page content.
verification_expiry_daysintegeroptionalOptional for "update_verification" command when verification_status is "verified". Number of days until verification expires (e.g. 7, 30, 90). Omit for indefinite verification.
verification_statusstringoptionalThe verification state to set. Accepted values: verified, unverified.
notionmcp_notion-update-view#Update a Notion database view's name, filters, sorts, or display configuration.3 params

Update a Notion database view's name, filters, sorts, or display configuration.

NameTypeRequiredDescription
view_idstringrequiredThe view to update. Accepts a view:// URI, a Notion URL with ?v= parameter, or a bare UUID.
configurestringoptionalView configuration DSL string. Supports FILTER, SORT BY, GROUP BY, CALENDAR BY, TIMELINE BY, MAP BY, CHART, FORM, SHOW, HIDE, COVER, WRAP CELLS, FREEZE COLUMNS, and CLEAR directives.
namestringoptionalNew name for the view.