Notion Multi Workspace
Connects multiple Notion workspaces and provides tools for listing workspaces, searching across connected workspaces, and fetching page contents, with results labeled by source workspace.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Notion Multi Workspacesearch for the project brief across all my workspaces"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Notion Multi Workspace
A distributable Codex plugin backed by one OAuth-protected remote MCP server. It connects any number of Notion workspaces while exposing only six tools:
notion_connect_workspacenotion_list_workspacesnotion_searchnotion_fetchnotion_querynotion_mutate
The number of tools is constant. Adding workspaces adds encrypted connection rows, not MCP servers or duplicate tools.
Why one MCP instead of one MCP per workspace?
A separate MCP server for every workspace multiplies the exposed tool surface. With N workspaces and M Notion tools, the client can end up seeing roughly N × M tools. That increases tool-selection ambiguity, configuration work, and the chance of querying the wrong workspace.
This plugin keeps one remote MCP server and stores workspace authorizations as data:
Codex
└─ one Notion Multi Workspace MCP
├─ connection A → workspace A
├─ connection B → workspace B
└─ connection N → workspace NThe MCP surface therefore stays at six tools regardless of how many workspaces are connected. Search fans out across selected connections; all other content operations require one explicit connectionId.
notion_query exposes an allowlist of 21 public Notion read operations and notion_mutate exposes 21 write operations. This covers pages and Markdown, blocks, databases, data sources, users, comments, meeting notes, async tasks, views, and file-upload lifecycle operations without multiplying tools per workspace. See the operation reference.
Related MCP server: Notion MCP Server
Install in Codex
Add this repository as a Codex marketplace, then install the plugin:
codex plugin marketplace add psh4607/notion-multi-workspace
codex plugin add notion-multi-workspace@notion-multi-workspaceRestart Codex if prompted. The first use opens OAuth for both the MCP service and the first Notion workspace. No Notion developer account or integration token is required for installers.
What installers do
Install the plugin from the marketplace.
Complete the Notion OAuth screen and choose the first workspace.
Ask Codex to connect another workspace. Open the one-time URL returned by
notion_connect_workspaceand choose that workspace in Notion.
Installers do not create integration tokens, use macOS Keychain, or maintain workspaces.json. The plugin publisher operates one Notion public integration and the remote MCP service.
Architecture and security boundary
Codex authenticates to
/mcpusing OAuth 2.1 with PKCE.Notion authorization is a separate upstream OAuth flow.
D1 rows are scoped by
(user_id, bot_id).bot_idpreserves multiple authorizations even when they target the same workspace.Notion access and refresh tokens are encrypted with AES-256-GCM before D1 storage.
The encryption key and Notion client secret are Cloudflare Worker secrets.
Additional-workspace links are random, one-use states in KV with a 10-minute TTL.
Search is the only operation that can fan out. Fetch, query, and mutation require one explicit connection ID.
Write calls are user-invoked, single-workspace, allowlisted, and marked destructive for conservative client confirmation.
OAuth tokens are never returned in tool results or accepted as tool arguments.
Binary upload transfer is intentionally not accepted through the generic JSON mutation tool; create, inspect, and complete upload records are supported.
Troubleshooting
Symptom | Likely cause | Resolution |
Marketplace says the connection cannot be found | Creator dashboard is using a different Notion account | Switch to the account that owns the public developer connection and reload the listing form |
Plugin installs but tools are not visible | Codex has not reloaded the new plugin | Restart Codex, then confirm the plugin is enabled |
First OAuth succeeds but another workspace is missing | The additional one-time URL expired or the wrong Notion workspace was selected | Run |
Search returns no pages from a connected workspace | The integration was not granted the relevant pages | Reopen the connection in Notion and grant the required pages; the connector only sees authorized content |
Development and self-hosting
Contributions are licensed under the Apache License 2.0. Please review the contributing and security guidelines before opening a pull request or reporting a vulnerability.
Service documents
For bugs and support requests, use this repository's GitHub Issues or email psh30095@gmail.com. Do not include Notion page content, OAuth tokens, or other secrets in a public issue.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Hosted Notion MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
One OAuth connector for your team's remote MCP servers, with Tool Packs, guardrails and logs.
Hosted MCP for Google Workspace, Atlassian and Notion: one OAuth, per-user accounts, write access.
14
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables secure interaction with Notion through a suite of tools for searching, reading, and modifying pages and databases. It features OAuth 2.1 authentication with PKCE and encrypted token storage to provide an enterprise-ready interface for MCP clients.-
- AlicenseNot gradedqualityAmaintenanceGives AI agents headless, token-authenticated read/write access to a Notion workspace through MCP, using three context-efficient tools that cover 47 operations across pages, databases, blocks, templates, comments, users, and files. Supports creating and editing pages, querying and filtering databases, batch mutations with rollback and idempotency, markdown round-trips, and image/file uploads, runnable over stdio or HTTP in CI and self-hosted deployments.3,942 npmMIT
- AlicenseNot gradedqualityAmaintenanceConnects AI agents and MCP-speaking clients such as Claude, Cursor, VS Code and ChatGPT to Notion using a single token, enabling them to create and edit pages, query databases, append blocks, apply templates, comment, and upload files in plain language. It runs headless for CI and background agents, keeps context usage low by loading only three tools, and supports batched mutations with idempotency and retries.3,942 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables AI agents and MCP-compatible clients to read and write Notion content—creating pages, querying databases, appending blocks, applying templates, commenting, and uploading files—using a token-based, headless setup. It exposes a compact three-tool interface that keeps context usage low while supporting batched, idempotent operations.3,942 npmMIT