Streamline your documentation and knowledge management by connecting Claude to Notion. Read and update pages, create databases, query with advanced filters, manage tasks and workflows, search across workspaces, handle relations and rollups, and automate content creation—all through natural language commands. Leverage Notion's powerful API with rate limit monitoring and comprehensive workspace integration.
Features
Read and update Notion pages with rich content (blocks, formatting, embeds)
Create new pages and databases programmatically (with properties and structure)
Query database content with filters and sorts (advanced filtering and pagination)
Manage tasks and project workflows (database operations and relations)
Search across entire workspace content (with filters and sorting)
Manage database properties and schemas (add, update, configure property types)
Handle database relations and rollups (cross-database references and calculations)
Access comments and user information (collaboration features)
Advanced Notion database and page management with block manipulation, database querying, and team collaboration features
Batch operations support for efficient bulk page operations, database management, and content processing with automatic rate limit handling and retry logic
Real-time workspace synchronization capabilities with webhook integration support for monitoring Notion events and triggering automated workflows
Use Cases
Create meeting notes automatically from discussions with structured formatting
Update project documentation with latest information and cross-references
Generate reports from database content with custom filters and aggregations
Sync tasks across different systems via API integration
Build knowledge base entries from research with automatic categorization
Query and filter databases using advanced search for data analysis
Automate content creation workflows with page templates and property population
Manage team collaboration with comments, mentions, and user assignments
Build automated knowledge management workflows that sync external systems with Notion for real-time documentation and content management
Installation
Claude Code
Create a public integration in Notion (Settings & members > Connections > Develop or manage integrations > New integration)
Get your OAuth client ID and client secret from integration settings
OAuth tokens are securely managed by Notion (OAuth 2.0 authorization flow)
Respect workspace permissions and sharing settings (pages/databases must be explicitly shared)
Be cautious with bulk update operations (rate limits apply)
Regular backups recommended for critical data (integration can modify content)
Monitor rate limit headers and implement exponential backoff to avoid service disruption
Notion API keys and integration tokens must be securely stored and never exposed in client-side code or public repositories - use environment variables and secure credential management
Notion OAuth access tokens should be used for third-party integrations to ensure proper access control, token lifecycle management, and automatic token refresh
Notion page, database, and workspace IDs may expose organizational structure and knowledge base information - ensure Notion resource identifiers are kept private and not shared in public configurations
Rate limiting and API quota management are critical for Notion MCP servers - implement proper rate limit handling, retry logic, and quota monitoring to prevent service disruption
Notion webhook configurations and payloads may contain sensitive page content and database information - ensure webhook endpoints are properly secured with authentication and HTTPS encryption
Troubleshooting
Rate limit reached - 429 error with rate_limited code
Rate limit: 3 requests/second average per integration. Bursts beyond this average are allowed. Implement 350ms delay between requests for sustained operations. Use burst capacity sparingly. Back off exponentially on 429 errors. Check Retry-After header in response to determine wait time. Implement request queuing for pending requests to manage rate limits effectively.
Page or database not accessible - integration permissions
Share page/database with integration explicitly in Notion. Click Share > Add connection > select your integration. Verify integration has appropriate capabilities (Read content, Update content, Insert content). Check parent page sharing settings if accessing nested pages. For database relations and rollups, related databases must also be shared with integration. Guest workspaces don't support integrations.
OAuth authentication fails or bad gateway error
Re-authenticate at https://mcp.notion.com/mcp. Verify workspace allows integrations (not Guest workspace). Check OAuth client ID and client secret are correct. Ensure redirect URI matches integration settings. Check internet connectivity. Verify Notion-Version header is included in requests (e.g., 2022-06-28). Restart MCP client if persistent 502 errors occur.
API returns empty results or stale data from queries
Verify query filters match exact database property names (case-sensitive). Check integration has access to specific database. Refresh integration permissions. Use property IDs instead of names for reliability. For search, pages/databases directly shared with integration are guaranteed to be returned immediately. For nested content, ensure parent pages are also shared. Check integration capabilities match required operations.
Notion MCP server authentication errors with integration tokens
Verify integration token is valid and not expired. Check integration permissions match required operations. Ensure token format is correct (Bearer token in Authorization header). For OAuth integrations, verify token refresh logic is working correctly.
Notion rate limit errors when processing multiple requests
Implement exponential backoff retry logic with jitter. Use Notion API rate limit headers to monitor usage. Reduce concurrent requests. Cache frequently accessed page data. Notion allows 3 requests per second per integration.
Notion page or database access denied errors
Verify integration has access to the page or database. Check page permissions and workspace sharing settings. Ensure integration has required capabilities (read, update, insert) for target operations.
Notion MCP server connection timeouts or network errors
Check network connectivity and firewall settings. Verify Notion API endpoints are accessible. Increase request timeout values. Implement connection pooling and retry mechanisms with exponential backoff.
Show that Notion MCP Server for Claude is listed on HeyClaude. Paste this Markdown into your README — it renders the badge and links back to this page.
[](https://heyclau.de/entry/mcp/notion-mcp-server)
How it compares
Notion MCP Server for Claude side by side with 3 alternatives on trust, install, platform support, and disclosed safety notes — all from reviewed registry metadata.
2 trust signals differ across this comparison (Package trust, Submitter).
Apache-licensed TypeScript MCP server for Obsidian vaults with stdio and Streamable HTTP transports, Local REST API access, note search, section-aware edits, tag/frontmatter management, path policies, and read-only controls.
Official Yuque MCP server that connects Claude to Yuque knowledge bases for user lookup, search, books, documents, notes, resources, and table-of-contents workflows, including read, create, and update tools over stdio with personal or group API tokens.
MCP server for connecting Claude to AFFiNE Cloud or self-hosted AFFiNE workspaces, documents, databases, comments, collections, folders, tags, notifications, blobs, access tokens, semantic page composition, templates, edgeless canvas data, and workspace organization workflows over stdio or HTTP.
✓Share only intended Notion pages or databases and review writes that alter docs, tasks, or workspace records.
✓Cyanheads Obsidian MCP can read, list, search, create, append, patch, replace, delete, tag, and edit frontmatter in the configured vault through the Local REST API plugin.
The server defaults to full-vault access unless read paths, write paths, or read-only mode are configured.
Set `OBSIDIAN_READ_ONLY=true` for research-only workflows, then narrow writes with `OBSIDIAN_WRITE_PATHS` before allowing note edits.
Delete operations are permanent in the vault and should require human review even when the MCP host supports destructive-tool prompts.
Command-palette tools are disabled unless `OBSIDIAN_ENABLE_COMMANDS=true`; command execution can trigger opaque or destructive Obsidian plugin behavior.
Streamable HTTP deployments should use JWT or OAuth auth before being exposed beyond a trusted local machine.
✓Yuque MCP Server can search and read content, but it also exposes create, update, and delete workflows for books, documents, notes, resources, and tables of contents.
The upstream security policy recommends read-only tokens when only read access is needed.
Tokens passed as CLI arguments can appear in shell history, process listings, or client logs; prefer environment variables or a secrets manager.
Custom YUQUE_BASE_URL values should point only to trusted Yuque deployments and should use HTTPS for remote services.
Rate limits, deleted resources, token expiration, private-deployment behavior, and Yuque API changes can affect tool results.
✓The full tool surface can create, update, publish, revoke, move, replace, and delete AFFiNE workspaces, documents, folders, collections, comments, database rows, blobs, surface elements, tags, and access tokens.
Start with AFFINE_TOOL_PROFILE=read_only or disable groups such as destructive, admin, blobs, users, access_tokens, docs.database, or write when the assistant only needs discovery or reading.
HTTP mode exposes MCP endpoints and must be protected with bearer or OAuth authentication, HTTPS, allowed origins, and deployment-level access controls.
AFFiNE Cloud requires API tokens for MCP usage; avoid trying to automate email/password login against Cloud deployments.
Cookie and password-based auth can grant broad account access and should be avoided for unattended or shared deployments.
Privacy notes
✓Page contents, database rows, comments, attachments, user names, and workspace metadata may be sent through model context.
✓Vault notes, headings, block references, frontmatter, tags, file metadata, outgoing links, search queries, command names, plugin status, and edit history may be exposed to the MCP client and model provider.
API keys, local plugin endpoints, HTTP auth settings, path allowlists, logs, OpenTelemetry traces, and Docker environment variables can reveal private vault structure or credentials.
Tag listing is vault-wide in upstream behavior and can reveal tag names outside narrowed read paths.
Notes may contain personal journals, client work, credentials, meeting notes, research plans, health data, or other sensitive knowledge-base content.
✓Yuque searches, user details, book metadata, document titles, document bodies, notes, resources, TOC data, group names, repo namespaces, slugs, and private deployment URLs can be sent to the MCP client and model.
Created or updated Yuque content persists in the selected knowledge base and may be visible to collaborators according to Yuque permissions.
Keep YUQUE_PERSONAL_TOKEN, YUQUE_GROUP_TOKEN, YUQUE_TOKEN, and private deployment URLs out of prompts, committed config, screenshots, public issues, and shared logs.
✓Workspaces, document titles, document bodies, comments, tags, database schemas, database rows, edgeless canvas data, notifications, user profiles, access-token metadata, blobs, and exported markdown can be sent to the MCP client and model.
API tokens, cookies, passwords, bearer tokens, OAuth config, and saved config files should be treated as secrets and kept out of prompts, logs, screenshots, issues, and committed MCP config.
Generated or modified documents can persist in AFFiNE and may become visible to collaborators depending on workspace permissions and sharing state.
Blob upload, cleanup, export, and publish/revoke workflows can expose files, generated content, or collaboration state beyond the current prompt.