Notion MCP server for AI agents and assistants

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Notion MCP or direct API to read pages, query databases, update tasks, and run workspace search through natural language.

Notion MCP logoNotion MCP
Dcr Oauth

Notion MCP is a service that exposes Notion pages, databases, search, and tasks to integrations. Use it to give agents structured, authenticated access to your Notion workspace.

37 Tools

Try Notion MCP now

Type what you want done — sign in and watch it run live in the Tool Router playground.

TOOL ROUTER PLAYGROUND
Notion MCP
Try asking
TOOLS

Supported Tools

Every Notion MCP action and event your agent gets out of the box.

Notion-convert-page-to-skill

Mark an existing Notion page as a skill without changing its content.

Notion-create-attachment

Create an attachment and upload it to Notion.

Notion-create-comment

Add a comment to a page or specific content.

Notion-create-database

Creates a new Notion database using SQL DDL syntax, or a canonical typed database for tasks, projects, or skills.

Notion-create-file-upload

Create a short-lived URL for uploading one local file directly to Notion.

Notion-create-folder

Creates an empty Notion Folder.

Notion-create-pages

## Overview Creates one or more Notion pages, with the specified properties and content.

Notion-create-view

Create a new view on a Notion database.

Notion-download-attachment

Download the contents of a small UTF-8 text attachment created by the Notion MCP `create-attachment` tool.

Notion-duplicate-page

Duplicate a Notion page.

Notion-fetch

Retrieves details about a Notion entity (page, database, data source, or saved database view) by URL or ID.

Notion-get-async-task

Retrieves the current status of an async task that was started by another tool (for example, "create_pages" called with "allow_async": true).

Notion-get-comments

Get comments and discussions from a Notion page.

Notion-get-session-status

Get the latest turn's status for a Custom Agent session without waiting.

Notion-get-teams

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

Notion-get-users

Retrieves a list of users in the current workspace.

Notion-list-favorite-pages

List the current user's favorite pages and databases in sidebar order.

Notion-list-private-pages

List the current user's top-level pages and databases in their Private sidebar section.

Notion-list-recent-pages

List pages and databases the current user recently viewed, ranked by recency and visit frequency.

Notion-list-session-events

List short summaries of saved events in a Custom Agent session.

Notion-list-shared-pages

List pages and databases in the current user's Shared sidebar section.

Notion-move-pages

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

Notion-query-data-sources

Query data from Notion databases using SQL or by specifying a view.

Notion-query-meeting-notes

Query the current user's meeting notes data source.

Notion-query-sessions

List agent sessions available to the integration.

Notion-read-session-event

Read the full visible content of one saved Custom Agent session event.

Notion-search

Search the user's Notion workspace and connected sources (Slack, Google Drive, GitHub, Jira, Teams, SharePoint, OneDrive, Linear) and return a ranked list of results to read.

Notion-search-agents

Search agents by name or description, or browse the current user's favorite agents and the workspace's newest agents.

Notion-search-sessions

Search past agent sessions by topic in a periodically refreshed index and return matching session URLs and excerpts.

Notion-send-message-to-session

Send a follow-up message to a Custom Agent session you can access.

Notion-spawn-session

Start a session with a published Custom Agent.

Notion-stop-session

Stop a running Custom Agent session you can access.

Notion-update-data-source

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

Notion-update-folder

Update an existing Notion Folder with an explicit Folder operation.

Notion-update-page

## Overview Update a Notion page's properties or content.

Notion-update-view

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

Notion-wait-session

Wait for the latest turn in a Custom Agent session to stop running.

SETUP GUIDE

Connect Notion MCP Tool with your Agent

1

Install Composio

typescript
npm install @composio/core ai @ai-sdk/mcp @ai-sdk/openai
Install the Composio SDK and your agent framework
2

Create a session with MCP enabled

typescript
import { Composio } from "@composio/core";

const composio = new Composio();
const { mcp } = await composio.create("your-user-id", {
  toolkits: ["notion_mcp"],
  mcp: true,
});
Create a session scoped to Notion MCP and read its MCP URL and headers
3

Connect your agent to the MCP server

typescript
import { createMCPClient } from "@ai-sdk/mcp";
import { openai } from "@ai-sdk/openai";
import { generateText, stepCountIs } from "ai";

const client = await createMCPClient({
  transport: { type: "http", url: mcp.url, headers: mcp.headers },
});

const { text } = await generateText({
  model: openai("gpt-5.6-sol"),
  tools: await client.tools(),
  prompt: "Summarize recent meeting notes in Notion",
  stopWhen: stepCountIs(10),
});

console.log(text);
await client.close();
Pass the session's MCP URL and headers to your agent and run a Notion MCP request
SETUP GUIDE

Connect Notion MCP API Tool with your Agent

1

Install Composio

typescript
npm install @composio/core @composio/openai openai
Install the Composio SDK, the OpenAI provider, and the OpenAI SDK
2

Create a Composio session

typescript
import OpenAI from "openai";
import { Composio } from "@composio/core";
import { OpenAIResponsesProvider } from "@composio/openai";

const composio = new Composio({ provider: new OpenAIResponsesProvider() });
const client = new OpenAI();

const session = await composio.create("your-user-id", { toolkits: ["notion_mcp"] });
const tools = await session.tools();
Initialize Composio with the OpenAI Responses provider and create a session scoped to Notion MCP
3

Run Notion MCP tools with your agent

typescript
let response = await client.responses.create({
  model: "gpt-5.6-sol",
  tools,
  input: [{ role: "user", content: "Summarize recent meeting notes in Notion" }],
});

while (response.output.some((o) => o.type === "function_call")) {
  const outputs = await composio.provider.handleToolCalls(session, response.output);
  response = await client.responses.create({
    model: "gpt-5.6-sol",
    tools,
    previous_response_id: response.id,
    input: outputs,
  });
}

console.log(response.output_text);
Send a request, execute the Notion MCP tool calls through the session, and print the final answer

Why Use Composio?

AI Native Notion MCP Integration

  • Supports both Notion MCP and direct API based integrations
  • Structured, LLM-friendly schemas for reliable tool execution
  • Rich coverage for reading, writing, and querying your Notion MCP data

Managed Auth

  • Built-in OAuth handling with automatic token refresh and rotation
  • Central place to manage, scope, and revoke Notion MCP access
  • Per user and per environment credentials instead of hard-coded keys

Agent Optimized Design

  • Tools are tuned using real error and success rates to improve reliability over time
  • Comprehensive execution logs so you always know what ran, when, and on whose behalf

Enterprise Grade Security

  • Fine-grained RBAC so you control which agents and users can access Notion MCP
  • Scoped, least privilege access to Notion MCP resources
  • Full audit trail of agent actions to support review and compliance
FRAMEWORKS

Use Notion MCP with any AI Agent Framework

Choose a Framework you want to connect Notion MCP with

Rolling this out across your team?

Give your team centralized access control across every framework with Composio’s MCP Gateway.

EXPLORE MCP GATEWAY
FAQ

Frequently asked questions

Yes, Notion MCP requires you to configure your own Dcr Oauth credentials. Once set up, Composio handles secure credential storage and management for you.

Yes! Composio's Tool Router enables agents to use multiple toolkits. Learn more.

Yes. Composio is SOC 2 Type II compliant and is built to keep your Notion connection and credentials secure. OAuth tokens and API keys are encrypted, and sensitive customer data is protected at rest and in transit.

Composio also undergoes independent security testing and continuously monitors its systems for security threats. You can review the latest reports and policies in the Composio Trust Center.

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

When you connect a Notion account through Composio, every action runs under that account, so anything the agent creates, sends, or changes shows up in Notion as done by you. Keep an approval step in your prompt for actions with side effects, such as sending or deleting, and have the agent draft first.

Whatever the credentials you connect allow inside Notion. If Notion lets you scope a key to specific permissions, create a scoped one so the agent can only do what you intend. You can revoke the key inside Notion at any time.

Yes. Composio supports multiple connected accounts for the same app, and that works in Claude, ChatGPT, or any other assistant you connect through Composio. Give each Notion connection a name such as work or personal, and the assistant uses the one you mention in the request. Each account keeps its own credentials and nothing is merged.

Composio's free plan includes 100,000 tool calls per month with no credit card, which covers most personal Notion use. Paid plans add higher limits and team features. Your Notion plan and its API limits still apply as usual.

Built-in connectors usually give one AI access to a limited set of apps. Many people use Composio because it lets their AI connect to more apps than it normally supports, or connect to multiple accounts for the same app (e.g. connect Claude to multiple Notion accounts).

With Composio, you connect Notion once and then use it across different AI assistants without setting it up separately in each one. Connect your apps to Composio once, then connect Composio to whichever AI you use, whether that's Claude, ChatGPT, Hermes, or your own custom assistant.

Start with Notion MCP.It takes 30 seconds.

Managed auth, hosted MCP servers, and every Notion MCP tool your agent needs.Free to start.

Start building