Notion Multi Workspace
Connects any number of Notion workspaces through a single MCP server, exposing four tools for connecting, listing, searching, and fetching Notion content. Ensures constant tool surface regardless of workspace count, with OAuth-based security.
README
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 N
The 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.
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-workspace
Restart 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 notion_connect_workspace again and complete the new URL within 10 minutes |
| 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
- Contributing guide
- Self-hosting and publisher setup
- Notion operation reference
- Architecture decisions and lessons learned
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.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。