Notion Mcp Server avatar
Notion Mcp Server

Pricing

Pay per usage

Go to Apify Store
Notion Mcp Server

Notion Mcp Server

MCP Server for Notion API. AI agents can search, create, and manage pages, databases, blocks, and comments. 20 operations with full CRUD. Supports pagination and batch queries.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Quadruped

Quadruped

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 days ago

Last modified

Share

Cloud MCP Server for Notion. Connect AI agents (Claude, GPT, Cursor) to your Notion workspace with 20 API operations for pages, databases, blocks, and comments.

Features

  • 20 Operations - Full Notion API coverage
  • Demo Mode - Test without authentication
  • URL Support - Accept Notion URLs or IDs
  • Pagination - Handle large datasets with cursors
  • Error Handling - Clear messages with API codes

Quick Start

Demo Mode (No Setup)

{
"operation": "demo"
}

Search Your Workspace

{
"notionToken": "ntn_your_token_here",
"operation": "search",
"query": "Meeting Notes"
}

Setup

1. Create a Notion Integration

  1. Go to notion.so/profile/integrations
  2. Click New integration
  3. Name it (e.g., "Apify MCP")
  4. Copy the token (starts with ntn_)

2. Share Pages with Integration

For each page/database you want to access:

  1. Open the page in Notion
  2. Click ... menu → Connections
  3. Select your integration

Input Parameters

ParameterTypeDescription
notionTokenstringNotion API token (ntn_ or secret_)
operationstringAPI operation to perform
querystringSearch query text
pageIdstringPage ID or Notion URL
databaseIdstringDatabase ID or URL
blockIdstringBlock ID or URL
userIdstringUser ID
parentPageIdstringParent page for new pages
parentDatabaseIdstringParent database for entries
titlestringTitle for new pages/databases
propertiesstringJSON properties for create/update
childrenstringJSON block children to append
filterstringJSON filter for queries
sortsstringJSON sort configuration
startCursorstringPagination cursor
pageSizeintegerResults per page (max 100)

Operations

Search & Discovery

OperationDescriptionRequired
demoTest without token-
searchFind pages/databasesquery

Pages

OperationDescriptionRequired
get_pageGet page detailspageId
create_pageCreate pageparentPageId or parentDatabaseId, title
update_pageUpdate propertiespageId, properties
archive_pageArchive pagepageId
get_page_propertyGet property valuepageId, propertyId

Databases

OperationDescriptionRequired
get_databaseGet schemadatabaseId
query_databaseQuery rowsdatabaseId
create_databaseCreate databaseparentPageId, title
update_databaseUpdate databasedatabaseId

Blocks

OperationDescriptionRequired
get_blockGet block contentblockId
get_block_childrenGet childrenblockId
append_block_childrenAdd blocksblockId, children
update_blockUpdate blockblockId
delete_blockDelete blockblockId

Comments & Users

OperationDescriptionRequired
get_commentsGet commentsblockId
create_commentAdd commentpageId, richText
list_usersList workspace users-
get_userGet user detailsuserId
get_bot_userGet integration info-

Examples

Search Pages

{
"notionToken": "ntn_xxx",
"operation": "search",
"query": "Project Plan"
}

Get Page by URL

{
"notionToken": "ntn_xxx",
"operation": "get_page",
"pageId": "https://notion.so/My-Page-abc123def456"
}

Query Database with Filter

{
"notionToken": "ntn_xxx",
"operation": "query_database",
"databaseId": "abc123",
"filter": "{\"property\":\"Status\",\"select\":{\"equals\":\"Done\"}}"
}

Create Page with Content

{
"notionToken": "ntn_xxx",
"operation": "create_page",
"parentPageId": "parent-id",
"title": "New Page",
"children": "[{\"object\":\"block\",\"type\":\"paragraph\",\"paragraph\":{\"rich_text\":[{\"type\":\"text\",\"text\":{\"content\":\"Hello world!\"}}]}}]"
}

Output Schema

FieldTypeDescription
operationstringOperation performed
successbooleanSuccess status
objectTypestringNotion object type
objectIdstringPrimary object ID
contentobjectReturned data
resultCountintegerNumber of results
hasMorebooleanMore results available
nextCursorstringPagination cursor
errorstringError message
errorCodestringNotion API error code

Success Response

{
"operation": "search",
"success": true,
"objectType": "search_results",
"content": [...],
"resultCount": 10,
"hasMore": false
}

Error Response

{
"operation": "get_page",
"success": false,
"error": "[object_not_found] Could not find page",
"errorCode": "object_not_found"
}

MCP Integration

Claude Desktop

{
"mcpServers": {
"notion": {
"command": "npx",
"args": ["-y", "@anthropic/apify-mcp-client", "constant_quadruped/notion-mcp-server"]
}
}
}

Apify Client (JavaScript)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('constant_quadruped/notion-mcp-server').call({
notionToken: 'ntn_xxx',
operation: 'search',
query: 'Meeting Notes'
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Apify Client (Python)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("constant_quadruped/notion-mcp-server").call(run_input={
"notionToken": "ntn_xxx",
"operation": "search",
"query": "Meeting Notes"
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Troubleshooting

IssueSolution
"API token is invalid"Token must start with ntn_ or secret_. Regenerate at notion.so/profile/integrations
"Could not find object"Add integration to page: ...Connections → Select integration
Rate limitingNotion allows 3 req/sec. Use pagination for large datasets

Resources

License

MIT