Skip to main content
Glama

MCP Notion Server

License: MIT Node.js MCP

Status: beta

MCP server + human CLI for common Notion page workflows: search pages, inspect content, create structured pages, append rich blocks, and start documents from reusable templates.

Requirements

  • Node.js 18+

  • A Notion token with access to the target pages

  • A Notion page shared with the integration when you want to create or update content

Related MCP server: @node2flow/notion-mcp

Install

From npm after publishing:

npm install -g @mcp/notion

From source:

git clone https://github.com/ftaricano/mcp-notion.git
cd mcp-notion
npm install
npm run build

Configure Notion Auth

Create a local environment file:

cp .env.example .env

Set NOTION_TOKEN in .env or in your MCP client environment. Do not commit .env.

Internal Integration Token

  1. Open https://www.notion.so/my-integrations.

  2. Create an internal integration.

  3. Copy the integration secret into NOTION_TOKEN.

  4. Share the target Notion pages with that integration.

OAuth Token

Notion OAuth apps can also provide an access token. This package does not run the OAuth browser authorization flow; pass the OAuth access token as NOTION_TOKEN after your OAuth app obtains it.

Use the smallest workspace/page access needed. If a token leaks, revoke or rotate it in Notion and remove it from local env files, shell profiles, CI secrets, and MCP client configs.

Quickstart

Check local config without calling Notion:

notion --env-file .env auth status

Test the token against Notion:

notion --env-file .env --timeout 10s auth test

List available MCP tools:

notion list

Search pages:

notion --env-file .env search_pages --query "Release notes" --page_size=5

Create a page under a parent page:

notion --env-file .env create_page \
  --parent_page_id=11111111-1111-1111-1111-111111111111 \
  --title="Weekly Notes" \
  --content="Draft agenda"

Create a formatted page from JSON:

notion --env-file .env create_rich_page --json '{
  "parent_page_id": "11111111-1111-1111-1111-111111111111",
  "title": "Project Overview",
  "blocks": [
    { "type": "heading_1", "content": "Overview" },
    { "type": "paragraph", "content": "Current scope and next steps." },
    { "type": "to_do", "content": "Confirm milestones", "checked": false }
  ]
}'

MCP Client Setup

Use the built server entrypoint with any stdio MCP client:

{
  "mcpServers": {
    "notion": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-notion/dist/index.js"],
      "env": {
        "NOTION_TOKEN": "your-token-from-a-secret-store",
        "VALIDATE_TOKEN": "true",
        "MAX_REQUESTS_PER_MINUTE": "60"
      }
    }
  }
}

For local source checkouts, build before connecting:

npm run build
node dist/index.js

For installed npm packages, point your client at the mcp-notion binary when your runtime can resolve global npm bins.

CLI Reference

notion list
notion schema <tool>
notion auth status
notion auth test
notion <tool> --key=value [--other=value]
notion <tool> --json '{"key":"value"}'

Global options:

  • --env-file <path> loads environment variables before running.

  • --timeout <value> accepts values such as 5000 or 10s.

  • --compact prints JSON output on one line where supported.

Available MCP Tools

Core page operations:

  • search_pages

  • get_page

  • get_page_content

  • create_page

  • update_page

Rich content and templates:

  • create_rich_page

  • create_page_from_template

  • add_content_blocks (append only)

  • list_templates

  • create_root_page

create_root_page requires NOTION_ROOT_PARENT_PAGE_ID or MCP_NOTION_ROOT_PARENT_PAGE_ID.

Runtime Guardrails

Environment variables:

  • NOTION_TOKEN - required for live Notion calls.

  • VALIDATE_TOKEN=false - skips startup token validation for offline/local smoke tests.

  • MAX_REQUESTS_PER_MINUTE=60 - controls in-process request throttling.

  • ENABLE_AUDIT_LOG=false - disables local operation audit logging.

  • ALLOWED_PAGE_IDS=id1,id2 - restricts operations to an allowlist.

  • BLOCKED_PAGE_IDS=id3,id4 - denies specific pages.

  • NOTION_ROOT_PARENT_PAGE_ID=<page-id> - enables create_root_page.

  • MCP_NOTION_ROOT_PARENT_PAGE_ID=<page-id> - compatibility alias for the same root parent.

Notion page IDs may use UUIDs with or without hyphens.

Templates

  • meeting_notes

  • project_plan

  • documentation

  • article

  • weekly_report

  • bug_report

Development

npm install
npm run build
npm run lint
npm run type-check
npm test
npm run pack:dry-run

npm run test:unit runs fast unit coverage. npm run test:integration verifies package metadata, security docs, and the npm pack file list.

Security

See SECURITY.md. The short version:

  • keep real tokens out of git,

  • use Notion workspace/page permissions to limit access,

  • use ALLOWED_PAGE_IDS and BLOCKED_PAGE_IDS for runtime blast-radius control,

  • report vulnerabilities through GitHub Security Advisories.

MCP Hub Usage

If you use this server behind MCP Hub, see CLAUDE.md for hub-specific calling patterns and Portuguese examples.

License

MIT

Available Tools

10 tools
add_content_blocksA

Add formatted content blocks to an existing Notion page

ParametersJSON Schema
NameRequiredDescriptionDefault
blocksYesArray of formatted content blocks to add
page_idYesPage ID to add content to
positionNoWhere to add the blocks. Runtime currently supports append only.append

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the burden of disclosing behavioral traits. It clearly indicates a mutation ('Add') but does not describe permissions, error handling, idempotency, partial failure, or that position currently supports only 'append' (which is only in the schema). This lack of detail is insufficient for a mutating operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that starts with the action verb and specifies the target and resource. No filler words, making it appropriately sized and immediately scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the schema is rich and covers parameters thoroughly, the absence of annotations and an output schema means the description should compensate by explaining behavioral expectations, return values, or limitations. The description only states the basic action, so an agent may not know what to expect after invocation or what constraints apply (e.g., append-only).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full descriptions for all parameters (100% coverage), including the structure of blocks, page_id, and position. The description adds little beyond the schema, only reinforcing that blocks are 'formatted' and the page must be 'existing', so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Add') and a clear resource ('formatted content blocks to an existing Notion page'), making the tool's purpose unambiguous. It distinguishes itself from siblings like create_page (which creates a new page) and get_page_content (which reads content).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: you have an existing page and want to add content blocks to it. However, it does not explicitly mention when not to use it or contrast with alternatives like update_page or create_rich_page, leaving the guidance implicit rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_pageB

Create a new Notion page (basic - use create_rich_page for better formatting)

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the new page
contentNoInitial content for the page
parent_page_idYesParent page ID where the new page will be created

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits on its own. It only states 'basic', which is vague, and does not mention side effects, permissions, or any operational details. For a mutation tool, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that front-loads the primary purpose and immediately provides a pointer to an alternative. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple with a well-covered schema and no output schema needed, so the description is minimally adequate. However, it lacks any mention of return values or prerequisites like how to obtain parent_page_id, and the 'basic' label is vague without clarification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already describes all 3 parameters with 100% coverage, so the baseline is 3. The description adds no extra parameter semantics, but the schema is sufficient, so no deduction is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new Notion page' with a specific verb and resource. It distinguishes itself from create_rich_page by labeling this as 'basic', but does not differentiate from other creation tools like create_root_page or create_page_from_template.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly points to create_rich_page as an alternative for better formatting, which gives some usage context. However, it does not explain when to use this tool versus other sibling tools like create_root_page or create_page_from_template, leaving the usage guidance incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_page_from_templateC

Create a page using a built-in template

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the new page
templateYesTemplate type to use for creating the page
variablesNoVariables to customize the template
parent_page_idYesParent page ID where the new page will be created

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden for behavioral disclosure. It merely restates the action ('Create a page') without revealing side effects, whether it overwrites existing content, how template variables are processed, what the response contains, or any permission requirements. This is a significant transparency gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero redundant wording. It front-loads the core purpose. However, it is arguably under-specified given the tool's complexity, so while concise, it sacrifices the informational depth needed for full clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is extremely brief for a tool with four parameters, a nested variables object, and a template enum. There is no output schema and no annotations, so the description should compensate by explaining how templates work, what the 'variables' object does, and what a successful response looks like. It does none of this, leaving the agent with only schema field names and a vague action statement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides 100% coverage of parameter descriptions, including the template enum and variable object shape, so the description adds no additional semantic value. Baseline score of 3 is appropriate because the schema already documents parameters thoroughly; the description neither contradicts nor enhances this.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('Create a page') and specifies the distinguishing feature ('using a built-in template'), which differentiates it from sibling tools like create_page and create_rich_page. However, it doesn't enumerate which templates are available, relying on the schema for that detail.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It does not mention scenarios where a blank page creation or rich page would be more appropriate, nor any prerequisites like template availability or required permissions. The description only states what the tool does, not when to choose it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_rich_pageB

Create a formatted Notion page with rich content blocks

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the new page
blocksNoArray of formatted content blocks
parent_page_idYesParent page ID where the new page will be created

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits itself. It only states the basic create action and gives no information about permissions, error conditions, idempotency, or behavior with empty blocks. This is insufficient for a tool with a complex blocks array.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that immediately states the tool's purpose. No wasted words, and it is appropriately front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite a complete input schema, the description provides no context about when to use this rich-page tool instead of simpler alternatives, expected return values, or limitations. An agent would be uncertain about the tool's role among the sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema descriptions cover all three parameters (title, blocks, parent_page_id) with 100% coverage. The description adds no additional parameter semantics, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Create a formatted Notion page with rich content blocks.' It uses a specific verb ('Create') and resource ('Notion page'), and the phrase 'rich content blocks' distinguishes it from siblings like create_page and add_content_blocks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It doesn't mention situations where create_page or create_page_from_template would be more appropriate, leaving the agent without decision criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_root_pageB

Create a page under a configured root parent

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTitle of the new page
blocksNoCustom formatted content blocks if content_type is rich
templateNoTemplate to use if content_type is template
variablesNoVariables for template customization
content_typeNoType of content to createrich

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full responsibility for behavioral disclosure. It only states a create action and gives no detail about what 'configured root parent' means, potential failure modes, side effects, or whether it can overwrite. For a write operation, this is minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the core purpose and is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite a rich schema with enums and nested objects, the description gives no context about the root parent configuration, how it relates to template/rich content siblings, or expected behavior in edge cases. The tool's complexity is not matched by the description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides complete descriptions for all parameters (100% coverage), including enums and nested structures. The description adds no additional parameter guidance, so it meets the baseline for well-documented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (create) and resource (page) with a specific scope ('under a configured root parent'). It distinguishes itself from siblings like create_page, though it doesn't explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (creating pages under a configured root parent) but provides no explicit guidance on when to use this tool versus alternatives like create_page or create_rich_page. There are no exclusions or alternative tool references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pageB

Get basic information about a Notion page

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesNotion page ID

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'basic information' without specifying what fields are returned, whether content is excluded, or any other behavioral details. This vagueness fails to provide adequate transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It directly states the tool's purpose without unnecessary filler, achieving the goal of conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is relatively simple (one parameter, no output schema), and the description is minimally adequate. However, it fails to explain what 'basic information' includes or how it relates to the sibling get_page_content tool. Given the absence of an output schema, more detail would improve completeness, but the low complexity of the tool keeps it at a 3.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage: the page_id parameter is described as 'Notion page ID'. The description adds no additional parameter semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get basic information about a Notion page' clearly states the verb (get) and resource (basic information about a Notion page). However, it does not explicitly differentiate from sibling tools like get_page_content, so it loses a point for lacking sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of use cases, prerequisites, or exclusions, leaving the agent without direction on choosing between get_page and get_page_content or search_pages.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_page_contentB

Get the content/blocks of a Notion page

ParametersJSON Schema
NameRequiredDescriptionDefault
page_idYesNotion page ID

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral details. It only says 'Get...', which generically implies a read operation, but does not state that it is non-destructive, what the return format is, or any limitations (e.g., whether it returns only top-level blocks). This is insufficient for a read tool with no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no filler. It is front-loaded with the verb 'Get', but its brevity comes at the cost of helpfulness, which is penalized in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no annotations and no output schema, the description should clarify the return value and read-only nature. It does not mention what the output looks like (e.g., an array of block objects) or any error conditions. The description is adequate for a very simple tool but lacks enough context to be fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents 'page_id' with full coverage, so the baseline is 3. The description adds minimal context by implying the page_id identifies the page whose content is retrieved, but it does not add format, constraints, or usage details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the content/blocks of a Notion page' with a specific verb and resource. However, it does not explicitly differentiate from the sibling 'get_page' tool, which may retrieve page metadata instead.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies it should be used when you need the content/blocks of a page, but it does not provide explicit guidance on when to use this tool versus alternatives like 'get_page' or 'search_pages'. No exclusions or alternative references are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_templatesA

List all available page templates with descriptions

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It adds limited behavioral context by specifying 'all available' and 'with descriptions', but it does not mention ordering, permissions, error cases, or pagination. The behavior is simple but under-disclosed relative to the lack of annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that directly states the tool's function without any redundancy. It is appropriately minimal for a simple list operation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters and no output schema, the description is mostly adequate, promising a list of templates with descriptions. However, it could be more explicit about the return structure or any limitations (e.g., whether archived templates are included), leaving a small gap in completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the empty input schema fully covers parameter semantics. The description adds no parameter information, but none is needed, so the baseline of 4 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists all available page templates and includes their descriptions, using a specific verb ('List') and resource ('page templates'). This makes the purpose unambiguous and distinct from siblings like create_page_from_template or get_page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving available templates but provides no explicit guidance on when to use this tool versus alternatives, nor any exclusion criteria. The context of sibling tools could suggest use cases, but the description itself does not articulate them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_pagesA

Search for Notion pages by title

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesText to search for in page titles
page_sizeNoNumber of results to return

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It adds the important constraint that search is limited to page titles, which is useful. However, it does not disclose other traits like read-only behavior, result format, pagination defaults, or whether archived pages are included.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of six words, with no redundant fluff. It is front-loaded and every word contributes to meaning, achieving high conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, both well-described in schema) and lack of output schema, the description is mostly sufficient for an agent to select and invoke the tool correctly. It covers the core purpose, but lacks some depth like usage distinctions and detailed behavior, which prevents a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% because both query and page_size have descriptive text. The description does not add meaning beyond the schema; it merely restates that search is by title, matching the query parameter description. Thus, baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Search for Notion pages by title'. The verb 'search' combined with the resource 'Notion pages' and scope 'by title' is specific and distinguishes it from siblings like get_page (retrieve by ID) or create_page (mutate).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when you need to find pages by title, but it does not explicitly mention when to use this tool versus alternatives such as get_page for fetching by ID. No exclusions or comparisons are given, so guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_pageB

Update a Notion page title

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoNew title for the page
page_idYesPage ID to update

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must explain behavioral implications. It only states the action, implying a write operation, but doesn't disclose access requirements, failure modes, or side effects like overwriting the existing title.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no redundant words, earning a high score for efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple two-parameter operation, but it omits any behavioral details (e.g., return value, error conditions, permissions) and doesn't reference sibling tools, leaving gaps for an agent to understand the full operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for both parameters (100% coverage). The description adds minimal semantic value beyond restating the operation; it doesn't explain parameter relationships or format expectations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (update) and the target (Notion page title), making it distinct from sibling tools that create or retrieve pages. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus siblings like 'create_page' or 'add_content_blocks'. It doesn't mention alternatives or the context in which updating a title is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.4/5.0
Disambiguation3/5

Multiple creation tools (create_page, create_rich_page, create_page_from_template, create_root_page) overlap in purpose, though descriptions help distinguish basic vs rich vs template usage. get_page and get_page_content are also related but distinct.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., search_pages, get_page, add_content_blocks). Compound names like create_page_from_template still conform to the convention.

Tool Count5/5

10 tools is within the ideal 3-15 range for a focused Notion page management server. Each tool serves a clear purpose without feeling bloated.

Completeness3/5

Core create/read/update workflows exist, but there is no delete/archive page operation, and update_page only handles titles. Block editing is limited to adding content, not modifying or removing blocks.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for the Notion API, enabling management of pages, blocks, databases, data sources, comments, and users through natural language.
    13
    2
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    MCP server for the Notion API with tools for managing pages, databases, content, and workspace resources. Generated with MCPForge. Sensitive operations can be protected with permissions, audit logs, and approval workflows.
  • A
    license
    Not graded
    quality
    A
    maintenance
    Notion-like workspace of pages and customizable databases with a remote MCP server (OAuth 2.1 + PKCE, scoped read/write tokens, full audit log). 14 tools to search, read, and write pages, database rows, and database schemas.
    70
    AGPL 3.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ftaricano/mcp-notion'

If you have feedback or need assistance with the MCP directory API, please join our Discord server