Notion remote MCP connector

  • Updated

The Notion remote Model Context Protocol (MCP) connector in Optimizely Opal lets you interact with and manage your Notion workspace directly within your AI-driven workflows.

These tools let Opal programmatically search, fetch, create, and update pages and databases. They bridge the gap between your collaborative documentation and your marketing operations. Use them to automate project status updates, sync campaign briefs, or query organizational knowledge. Your documentation stays actionable and synced across the Optimizely ecosystem.

The Notion remote MCP is managed by Notion. See Notion MCP in their documentation for information.

First, an Opal administrator must Connect the Notion Remote MCP to Opal. After adding the MCP server, individual Opal users and agent builders log in to Notion to access their information from Opal. Administrators only need to add the Notion remote MCP once.

Connect the Notion remote MCP to Opal

To connect the Notion remote MCP to Opal, complete the following steps as an Opal administrator:

  1. Go to Tools > Connectors in Opal.
  2. Click Add Remote MCP

    Screenshot of the Opal Connectors page where the Add Remote MCP button is visible
  3. Click Notion.
  4. Click Next.
  5. Click Connect to Notion.
  6. Complete required access configuration in the pop-up window.
  7. Click Accept.

The Notion tile is now available on the Connectors tab for users to authenticate with their personal accounts.

Authenticate with Notion

After an administrator connects the Notion remote MCP to Opal, you can log in to Notion. User-level authentication ensures Opal users and agent builders can access only their authorized Notion data.

To authenticate, complete the following steps in Opal:

  1. Go to Tools > Connectors.
  2. Click Connect for Notion.
  3. Log in to Notion.

After you connect to Notion, the Notion connector tools become available in Opal Chat, agents, and workflows.

Notion connector tools

After an administrator connects the Notion remote MCP to Opal and you log in to Notion, the following tools are available in Opal. Click a tool name to expand it and view usage guidance, parameters, and example prompts. If you do not provide a required parameter, Opal prompts you for it.

notion-create-comment – Add a comment to a page or specific content.
  • When to use
    • Add a comment to a page or specific content.
    • Creates a new comment.
  • Parameters
    • page_id – The ID of the page to comment on (with or without dashes).
    • rich_text – An array of rich text objects that represent the content of the comment.
    • (Optional) discussion_id – The ID or URL of an existing discussion to reply to (for example, discussion://PAGE_ID/BLOCK_ID/DISCUSSION_ID).
    • (Optional) selection_with_ellipsis – Unique start and end snippet of the content to comment on. DO NOT provide the entire string.
  • Example prompts
    • Add a comment saying "Great work!" to the top of the project page.
    • Add a comment saying "Looks good to me!" to the main project page.
    • Reply to the discussion at discussion://page_123/block_456 with "I will handle this task."
    • Highlight the text "Next steps...for Q3" on the roadmap and comment "Should we add Q4 here?".
notion-create-database – Creates a new Notion database using SQL Data Definition Language (DDL) syntax.
  • When to use
    • Creates a new Notion database using SQL DDL syntax.
    • If no title property is provided, 'Name' is added automatically.
  • Parameters
    • parent – The parent under which to create the new database. If omitted, the database is created as a private page at the workspace level.
      • parent:page_id – The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105.
      • (Optional) parent:type – Type.
    • schema – SQL DDL CREATE TABLE statement defining the database schema. Column names must be double-quoted, type options use single quotes.
    • (Optional) title – The title of the new database.
    • (Optional) description – The description of the new database.
  • Example prompts
    • Make a database for project tracking with columns for Name, Budget as a dollar amount, and Tags.
    • Create a database titled "Team Tasks" under page a1b2 with columns for Task as title and Priority as select.
    • Make a "Project Budget" database inside the current workspace with columns for Expense Name and Cost as a dollar amount.
    • Structure a new database for Client Feedback with columns for Feedback, Client, and Date.
notion-create-pages – Creates one or more Notion pages, with the specified properties and content.
  • When to use
    • Creates one or more Notion pages, with the specified properties and content.
    • The parent can be a Notion page (page_id) or data source (data_source_id).
  • Parameters
    • parent – The parent under which the new pages will be created. This can be a page (page_id), a database page (database_id), or a data source or collection under a database (data_source_id).
      • parent:page_id – The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105.
      • (Optional) parent:type – Type.
    • pages – The pages to create.
      • (Optional) pages:content – The content of the new page, using Notion Markdown.
      • (Optional) pages:cover – An external image URL for the page cover. Use none to explicitly set no cover. Omit to leave unchanged.
      • (Optional) pages:icon – An emoji character (for example "🚀"), a custom emoji by name (for example ":rocket_ship:"), or an external image URL.
      • (Optional) pages:properties – The properties of the new page, which is a JSON map of property names to SQLite values.
      • (Optional) pages:template_id – The ID of a template to apply to this page. When specified, do not provide 'content' as the template will provide it.
  • Example prompts
    • Create a new page titled Meeting Notes with a section for action items.
    • Add a new page named "Weekly Log" with the text "Reviewing last week progress" to my meeting notes folder.
    • Create three new task entries in my Sprint database: "Fix bug", "Write doc", and "Upload assets".
    • Make a page for "Company Retreat" under the HR section with a rocket ship icon and a custom cover image.
notion-create-view – Create a new view on a Notion database.
  • When to use
    • Create a new view on a Notion database.
    • Use the notion-fetch tool first to get the database_id and data_source_id.
  • Parameters
    • database_id – The database to create a view in. Accepts a Notion URL or a bare UUID.
    • name – The name of the view.
    • data_source_id – The data source (collection) ID. Accepts a collection:// uniform resource identifier (URI) from <data-source> tags or a bare UUID.
    • type – Type.
    • (Optional) configure – View configuration domain-specific language (DSL) string. Supports FILTER, SORT BY, GROUP BY, CALENDAR BY, TIMELINE BY, MAP BY, CHART, FORM, SHOW, HIDE, COVER, WRAP CELLS, and FREEZE COLUMNS directives.
  • Example prompts
    • Create unique table view for my database.
    • Create a Board view named "Task Status" for my project database, grouped by the Status column.
    • Add a Calendar view to the Event Tracker database using the "Date" property.
    • Make a chart view called "Lead Sources" that shows the count of entries grouped by "Source".
notion-duplicate-page – Duplicate a Notion page.
  • When to use
    • Duplicate a Notion page.
    • The page must be within the current workspace, and you must have permission to access it.
  • Parameters
    • page_id – The ID of the page to duplicate. This is a version 4 universally unique identifier (UUID), with or without dashes, and can be parsed from a Notion page URL.
  • Example prompts
    • Duplicate page 12345.
    • Make a copy of the "2024 Planning Template" page.
    • Duplicate the page with ID a1b2c3d4.
    • Copy my current "Inventory" database page.
notion-fetch – Retrieves details about a Notion entity (page, database, or data source) by URL or ID.
  • When to use
    • Retrieves details about a Notion entity (page, database, or data source) by URL or ID.
    • Provide a URL or ID for the id parameter. Make multiple calls to fetch multiple entities.
  • Parameters
    • id – The ID or URL of the Notion page, database, or data source to fetch. Supports notion.so URLs, Notion Sites URLs (*.notion.site), raw UUIDs, and data source URLs (collection://...).
    • (Optional) include_discussions – If the fetch should include discussions.
    • (Optional) include_transcript – If the fetch should include transcripts.
  • Example prompts
    • Fetch details for my Notion page.
    • Get the content of my "Project Brief" page.
    • Fetch the database details for the task board URL to find its data source ID.
    • Show me the latest content and active discussions on the meeting notes page.
notion-get-comments – Get comments and discussions from a Notion page.
  • When to use
    • Get comments and discussions from a Notion page.
    • Returns discussions with full comment content in Extensible Markup Language (XML) format.
  • Parameters
    • page_id – Identifier for a Notion page.
    • (Optional) discussion_id – Fetch a specific discussion by ID or discussion URL (for example, discussion://PAGE_ID/BLOCK_ID/DISCUSSION_ID).
    • (Optional) include_all_blocks – If all blocks should be included.
    • (Optional) include_resolved – If resolved items should be included.
  • Example prompts
    • Get comments for page 4567.
    • List all comments on the "Proposal Review" page.
    • Get all discussions, including the resolved ones, for my roadmap documentation.
    • Read the comments from every block on the Q4 strategy page.
notion-get-teams – Retrieves a list of teams (teamspaces) in the current workspace.
  • When to use
    • Retrieves a list of teams (teamspaces) in the current workspace.
    • Shows which teams exist, user membership status, IDs, names, and roles.
  • Parameters
    • (Optional) query – Optional search query to filter teams by name (case-insensitive).
  • Example prompts
    • Get all teams in workspace.
    • List all teams in my Notion workspace.
    • Search for a team called "Product Design".
    • Find the ID for the "Sales Enablement" teamspace.
notion-get-users – Retrieves a list of users in the current workspace.
  • When to use
    • Retrieves a list of users in the current workspace.
    • Shows workspace members and guests with their IDs, names, emails (if available), and types (person or bot).
  • Parameters
    • (Optional) page_size – Number of users to return per page (default: 100, max: 100).
    • (Optional) query – Optional search query to filter users by name or email (case-insensitive).
    • (Optional) start_cursor – Cursor for pagination. Use the next_cursor value from the previous response to get the next page.
    • (Optional) user_id – Return only the user matching this ID. Pass "self" to fetch the current user.
  • Example prompts
    • Get all users in workspace.
    • Find the user ID for "John Doe".
    • Search for any workspace users with the email suffix "@example.com".
    • Get my own Notion user details.
notion-move-pages – Move one or more Notion pages or databases to a new parent.
  • When to use
    • Move one or more Notion pages or databases to a new parent.
  • Parameters
    • new_parent – The new parent under which the pages are moved. This can be a page, the workspace, a database, or a specific data source under a database when there are multiple.
      • new_parent:page_id – The ID of the parent page (with or without dashes), for example, 195de9221179449fab8075a27c979105.
      • (Optional) new_parent:type – Type.
    • page_or_database_ids – An array of up to 100 page or database IDs to move. IDs are version 4 UUIDs and can be supplied with or without dashes.
  • Example prompts
    • Move these pages to the archive page.
    • Move these three meeting note pages to the "Archive" section.
    • Group the various "Draft" pages and put them under the "Marketing Drafts" parent page.
    • Transfer the Project Tracker database to the Engineering Teamspace page.
notion-search – Perform a search over internal content or users.
  • When to use
    • Perform a semantic search over Notion workspace and connected sources.
    • Search for users by name or email.
  • Parameters
    • query – Semantic search query over your entire Notion workspace and connected sources.
    • filters – Optionally provide filters to apply to the search results. Only valid when query_type is 'internal'.
      • (Optional) filters:created_by_user_ids – Optional filter to only produce search results created by the Notion users that have the specified user IDs.
      • (Optional) filters:created_date_range – Optional filter to only produce search results created within the specified date range.
        • (Optional) filters:created_date_range:end_date – The end date of the date range as an ISO 8601 date string, if any.
        • (Optional) filters:created_date_range:start_date – The start date of the date range as an ISO 8601 date string, if any.
    • (Optional) content_search_mode – Search mode.
    • (Optional) data_source_url – The URL of a Data source to search. This performs a semantic search over the pages in the Data Source.
    • (Optional) max_highlight_length – Maximum character length for result highlights (default 200). Set to 0 to omit highlights entirely.
    • (Optional) page_size – Maximum number of results to return (default 10). Lower values reduce response size.
    • (Optional) page_url – Optionally, provide the URL or ID of a page to search within.
    • (Optional) query_type – The query_type.
    • (Optional) teamspace_id – The ID of a teamspace to restrict search results to.
  • Example prompts
    • Search for quarterly report.
    • Search for the "Q3 Revenue Report" across all my Notion documents.
    • Find any Jira tickets mentioned in Notion from last month created by Sarah.
    • Search for users named "Mark" in the workspace.
notion-update-data-source – Update a Notion data source's schema, title, or attributes using SQL DDL statements.
  • When to use
    • Update a Notion data source's schema, title, or attributes using SQL DDL statements.
  • Parameters
    • data_source_id – The data source to update. Accepts a collection:// URI from <data-source> tags, a bare UUID, or a database ID (only if the database has a single data source).
    • (Optional) description – The new description of the data source.
    • (Optional) in_trash – If it is in the trash.
    • (Optional) is_inline – If it is inline.
    • (Optional) statements – Semicolon-separated SQL DDL statements to update the schema. Supports ADD COLUMN, DROP COLUMN, RENAME COLUMN, ALTER COLUMN SET.
    • (Optional) title – The new title of the data source.
  • Example prompts
    • Add a column to my collection.
    • Rename the "Status" column to "Workflow Phase" in the task database.
    • Add a new column for "Assignee" as a people property to my feedback collection.
    • Update the title of the data source with ID ds_123 to "Completed Projects".
notion-update-page – Update a Notion page's properties or content.
  • When to use
    • Use to update page properties like title, status, or dates.
    • Use to replace or find-and-replace specific content within a page.
    • Use to apply a database template to an existing page.
    • Use to change a page's icon or cover image.
    • Use to manage page verification status.
  • Parameters
    • page_id – The ID of the page to update, with or without dashes.
    • command – The command. (Options: update_properties, replace_content, update_content, apply_template, update_verification).
    • properties – A JSON object that updates the page's properties. For pages in a database, use the SQLite schema definition. For database pages, handle expanded date and place formats.
    • content_updates – An array of search-and-replace operations, each with old_str (content to find) and new_str (replacement content).
      • content_updates:new_str – The new content string to replace old_str with.
      • content_updates:old_str – The existing content string to find and replace. Must exactly match the page content.
      • (Optional) content_updates:replace_all_matches – If all matches should be replaced.
    • (Optional) allow_deleting_content – Set to true if intentionally deleting child pages or databases during a replacement.
    • (Optional) cover – An external image URL for the page cover. Use "none" to remove the cover.
    • (Optional) icon – An emoji character (for example, "🚀"), a custom emoji by name (for example, ":rocket_ship:"), or an external image URL. Use "none" to remove the icon.
    • (Optional) new_str – Required for replace_content command. The new content string to replace the entire page content with.
    • (Optional) template_id – Required for apply_template command. The ID of a template to apply to this page. Opal appends template content asynchronously.
    • (Optional) verification_expiry_days – Optional for update_verification command when verification_status is "verified". Number of days until verification expires.
    • (Optional) verification_status – The verification status. (for example, verified or unverified).
  • Example prompts
    • Update the status of the project page to Done.
    • Replace the content of the Q3 Roadmap page with a new high-level summary of our primary objectives.
    • Add a rocket emoji as the icon and a custom scenic image URL as the cover for the Launch Plan page.
notion-update-view – Update a view's name, filters, sorts, or display configuration.
  • When to use
    • Update a view's name, filters, sorts, or display configuration.
  • Parameters
    • view_id – The view to update. Accepts a view:// URI, a Notion URL with ?v= parameter, or a bare UUID.
    • (Optional) configure – View configuration DSL string. Supports FILTER, SORT BY, GROUP BY, CALENDAR BY, TIMELINE BY, MAP BY, CHART, FORM, SHOW, HIDE, COVER, WRAP CELLS, FREEZE COLUMNS, and CLEAR directives.
    • (Optional) name – New name for the view.
  • Example prompts
    • Rename my sprint board.
    • Rename my database view labeled "Grid" to "Consolidated View".
    • Update the view on my task board to filter for only high-priority items.
    • Apply a descending sort by "Due Date" to the calendar view of my archive.

If you use Opti ID, administrators can turn off generative AI in the Opti ID Admin Center. See Turn generative AI off across Optimizely applications.