Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Notion MCP server

Vendor MCP
Open markdown

The Notion MCP connector routes your AI agent's tool calls to Notion's own MCP server through Scalekit. Each user signs in to Notion once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 70 tools.

Tools
70
What they doRead · write · destructive
14 · 51 · 514 read51 write5 destructive
Users sign in with
OAuth app
Scalekit's or your own

What you can do

  • Search and fetch content: search the workspace and connected sources, and retrieve pages, databases, and data sources
  • Create and edit pages: create pages with Markdown content, update properties and content, duplicate, and move pages
  • Query databases: query databases with SQL or saved views, including the user’s meeting notes
  • Manage databases and views: create databases, update their schema, and create or update filtered, sorted views
  • Comment on pages: add comments to pages and discussion threads, and read existing discussions
  • Browse the workspace: list recent, favorite, private, and shared pages, plus users and teamspaces

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    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. Create the Notion MCP connection

    In AgentKit > Connections, create a Notion MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

    Scalekit credentials are available for Notion, so you don't need to register an OAuth app.

  4. Authorize a user and make your first call

    quickstart.mts
    import { ScalekitClient } from '@scalekit-sdk/node'
    import 'dotenv/config'
    import { createInterface } from 'node:readline/promises'
    const scalekit = new ScalekitClient(
    process.env.SCALEKIT_ENVIRONMENT_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)
    const rl = createInterface({ input: process.stdin, output: process.stdout })
    await rl.question('Press Enter after authorizing...')
    rl.close()
    // Make your first call
    const result = await actions.executeTool({
    connector,
    identifier,
    toolName: 'notionmcp_notion-get-teams',
    toolInput: {},
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • notionmcp_notion-download-attachmentDownload the contents of a small UTF-8 text attachment created by the Notion create-attachment tool.Read-only

    Notion Download Attachment

    Download the contents of a small UTF-8 text attachment created by the Notion create-attachment tool. Limited to 200 KiB and text formats such as HTML, Markdown, plain text, CSV, JSON, XML, CSS, YAML, TSV, calendar, GPX, or SVG.

    Inputs

    file_upload_idstringrequired
    The FileUpload ID returned by the create-attachment tool.
    instructions_versionstring
    Notion setup instructions version, such as 0.0.2. Omit if unknown.
    telemetryobject
    No description.
  • notionmcp_notion-fetchRetrieve details about a Notion page, database, or data source by URL or ID.Read-only

    Notion Fetch

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

    Inputs

    idstringrequired
    The 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://...). Pass "memory" to fetch the connected user's About page and memory database in this workspace without creating them. Pass a notion://docs/* URI to read that documentation resource. Also accepts an explicit saved view URL (view://...) from a database response. If a database block ID returns a validation error, use the collection:// URL from that error. Example: <example>notion://docs/notion-flavored-markdown-spec</example>.
    include_discussionsboolean
    Whether to include discussion/comment indicators in the page output. When true, adds a <page-discussions> summary with discussion count, preview snippets, and discussion:// URLs. Use with the get_comments tool to retrieve full discussion content. Defaults to false.
    include_file_urlsboolean
    Whether to return signed download URLs for uploaded files. Defaults to false. When false, page Markdown cites uploaded files by stable notion-file-block:// references and the response has no references map; call get_file_download_urls with the references when you need those files' contents. When true, the response's references map gives the signed URL for each reference.
    include_transcriptboolean
    Whether to include meeting note transcripts. Defaults to false. When true, full transcripts are included; when false, a placeholder with the meeting note URL is shown instead.
    instructions_versionstring
    Notion setup instructions version, such as 0.0.2. Omit if unknown.
    telemetryobject
    No description.
  • notionmcp_notion-get-async-taskRetrieve the current status of an async task started by another tool (for example, create-pages or update-page called with allow_async: true).Read-only

    Notion Get Async Task

    Retrieve the current status of an async task started by another tool (for example, create-pages or update-page called with allow_async: true). Status is one of queued, running, retrying, succeeded, or failed.

    Inputs

    task_idstringrequired
    The ID of the async task to retrieve, as returned in the async_task response of the tool that started it.
    instructions_versionstring
    Notion setup instructions version, such as 0.0.2. Omit if unknown.
    telemetryobject
    No description.
  • notionmcp_notion-get-commentsRetrieve comments and discussion threads from a Notion page.Read-only

    Notion Get Comments

    Retrieve comments and discussion threads from a Notion page.

    Inputs

    page_idstringrequired
    The page ID, with or without dashes, or a Notion page URL.
    discussion_idstring
    Fetch a specific discussion by ID or discussion URL (e.g., discussion://pageId/blockId/discussionId).
    include_all_blocksboolean
    Include discussions on child blocks, not just page-level discussions. Defaults to false.
    include_resolvedboolean
    Include resolved discussions in the response. Defaults to false.
    instructions_versionstring
    Notion setup instructions version, such as 0.0.2. Omit if unknown.
    telemetryobject
    No description.
  • notionmcp_notion-get-teamsRetrieve a list of teams (teamspaces) in the current workspace.Read-only

    Notion Get Teams

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

    Inputs

    instructions_versionstring
    Notion setup instructions version, such as 0.0.2. Omit if unknown.
    querystring
    Optional search query to filter teams by name (case-insensitive).
    telemetryobject
    No description.
  • notionmcp_notion-get-usersRetrieve a list of users in the current Notion workspace.Read-only

    Notion Get Users

    Retrieve a list of users in the current Notion workspace.

    Inputs

    instructions_versionstring
    Notion setup instructions version, such as 0.0.2. Omit if unknown.
    page_sizeinteger
    Number of users to return per page (1–100; default 100).
    querystring
    Optional search query to filter users by name or email (case-insensitive).
    start_cursorstring
    Cursor for pagination. Use the next_cursor value from the previous response to get the next page.
    telemetryobject
    No description.
    user_idstring
    Return only the user matching this ID. Pass "self" to fetch the current user.
  • notionmcp_notion-list-favorite-pagesList the current user's favorite pages and databases in sidebar order.Read-only

    Notion List Favorite Pages

    List the current user's favorite pages and databases in sidebar order. Use this when the user refers to a favorite or pinned workspace item.

    Inputs

    cursorstring
    Opaque pagination cursor from the previous response.
    instructions_versionstring
    Notion setup instructions version, such as 0.0.2. Omit if unknown.
    limitnumber
    Maximum results to return (1-200).
    telemetryobject
    No description.
  • notionmcp_notion-list-private-pagesList the current user's top-level pages and databases in their Private sidebar section.Read-only

    Notion List Private Pages

    List the current user's top-level pages and databases in their Private sidebar section. Use this to browse private workspace structure; use search when looking for content by meaning or keyword.

    Inputs

    cursorstring
    Opaque pagination cursor from the previous response.
    instructions_versionstring
    Notion setup instructions version, such as 0.0.2. Omit if unknown.
    limitnumber
    Maximum results to return (1-200).
    telemetryobject
    No description.