notion-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NOTION_TOKEN | Yes | Your Notion integration secret (required) | |
| DEFAULT_PRIVACY | No | Default privacy for new pages: private or public | private |
| DEFAULT_PARENT_PAGE_ID | No | Default parent page ID for new pages |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_notionC | Search Notion for pages and databases by keyword. |
| check_connectionB | Verify Notion integration is working. |
| get_pageB | Read a Notion page's full content as markdown. |
| create_pageC | Create a new Notion page with markdown content. |
| append_to_pageC | Append markdown content to an existing page. |
| update_page_titleC | Rename a Notion page. |
| archive_pageB | Archive (soft-delete) a Notion page. |
| restore_pageB | Restore an archived page. |
| duplicate_pageC | Duplicate a page (creates a copy with same content). |
| list_databasesA | List all Notion databases accessible to the integration. |
| get_database_schemaB | Get the schema (columns/properties) of a database. Use this BEFORE adding/updating rows to know property names and types. |
| query_databaseC | Query a database with filters and sorting. Filter examples: {"Status": "Learning"} {"Priority": "🔥 Critical", "Category": "ML"} {"Progress": {"greater_than": 50}} |
| add_database_rowC | Add a new row to a database. |
| update_database_rowC | Update properties of an existing database row. |
| bulk_add_rowsC | Add multiple rows to a database at once. |
| get_block_childrenC | Get all children blocks of a block (page or container). |
| update_blockC | Update a single block's text content (for edits). |
| delete_blockC | Delete a single block from a page. |
| add_commentC | Add a comment to a Notion page. |
| get_commentsC | Get all comments on a page. |
| quick_noteB | Save a quick note to your default parent page. Requires DEFAULT_PARENT_PAGE_ID in .env. |
| daily_journalA | Add a timestamped entry to today's journal. Auto-finds a page with 'journal' in the title. |
| add_taskC | Quick-add a task to your Tasks database (auto-detected). Date format: 'YYYY-MM-DD' |
| get_today_tasksA | Get all tasks due today or overdue. |
| complete_taskB | Mark a task as complete by name or ID. |
| get_recent_pagesC | Get recently edited pages. |
| learning_dashboardA | Get a dashboard view of your AI/ML learning progress. Shows topics by status, category, priority, and average progress. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 27 tools
Most tools have distinct purposes, but some overlap exists (e.g., create_page, append_to_page, quick_note all add content; add_database_row and bulk_add_rows differ only in count). Descriptions help resolve ambiguity.
Naming mixes patterns: get_ for retrieval, add_/create_ for creation, but also daily_journal, learning_dashboard, quick_note break the verb_noun pattern. Consistency within groups but variation overall.
27 tools is on the high side for a single server, potentially overwhelming. However, Notion's feature set is broad, so the count is somewhat justified but still feels heavy.
Covers most core Notion operations: CRUD for pages and database rows, comments, search, tasks, and specialized dashboards. Missing explicit delete row and full page delete, but archive serves as soft delete.