How to Connect Multiple Notion Workspaces to Codex
Notion publishes its own MCP server, and it authorizes one workspace. Registering a second entry is the obvious next move, and it is where this setup usually breaks: Codex ends up holding two near-identical toolsets with nothing in the prompt vocabulary to say which workspace you mean. Carly holds your Gmail and Outlook mailboxes and every calendar on both sides in the same place.
The failure mode is quiet rather than loud. Nothing errors. The spec you asked for appears in your personal workspace instead of the company one, and you find out later.
What Codex does with Notion at all
Codex supports the Model Context Protocol, Notion publishes an MCP server, and connecting the two lets Codex pull specs, requirements, and design notes out of your workspace while it writes code. That is the intended shape: Notion as an input to a software task.
It is genuinely useful for building against a documented spec. What it is not is something that manages Notion for you. It will not watch a database for new items, update a status property when work ships, or turn an entry into a follow-up.
Why stacking servers disappoints
Per-workspace MCP entries mean:
- Several server blocks in
config.tomlto keep straight - A separate OAuth grant to maintain for each
- Tool names that look the same from the model’s side
- No convention for saying “the client workspace” in a prompt
The agent resolves the ambiguity by picking one, usually whichever loaded first. That is a routing problem, and the fix is a server that knows the difference.
Carly inverts the arrangement. Each workspace is authorized once inside Carly, and Codex sees a single server that addresses any of them by name. Adding a fourth workspace changes nothing in config.toml.
1. Give each workspace a role
| Workspace | Role |
|---|---|
| Personal notes and projects | Personal |
| Your company’s workspace | Company |
| Client delivery workspace | Client |
Use the role in ordinary queries and name it explicitly before anything that writes.
2. Connect every workspace to Carly
- Sign in at carlyassistant.com.
- Open carlyassistant.com/integrations.
- Find Notion and click Connect.
- Authorize the first workspace.
- Repeat for each additional workspace, choosing the correct one in Notion’s authorization screen.
- Verify which workspace each connection landed in before adding the next.
Grant access to the specific pages and databases you want reachable rather than the whole workspace. A Notion workspace usually holds more than you would deliberately hand to a coding agent, and pages are easy to add later.
On a client workspace where you hold a guest seat, an owner there approves the integration.
3. Register Carly as an MCP server
codex mcp add carly --url https://carlyassistant.com/mcp/
Servers added this way land in ~/.codex/config.toml at user scope. The manual entry is equivalent:
[mcp_servers.carly]
url = "https://carlyassistant.com/mcp/"
A trusted project can carry its own .codex/config.toml if you would rather scope the server to one repository than to your whole machine. That is a reasonable choice here, since a repo usually corresponds to one client.
Then authenticate:
codex mcp login carly
Complete the OAuth flow in the browser, signing in to the Carly workspace holding the Notion connections. Confirm the server is live:
codex mcp list
4. Test each workspace read-only
Start a new session so the tools load, then take one workspace per prompt:
In the Company workspace, list the five most recently edited pages. Do not change anything.
In the Client workspace, find the current API spec and tell me when it was last updated. Read only.
Then the cross-workspace question:
Search the Company and Client workspaces for pages mentioning “migration plan” updated in the last 30 days. Show the source workspace in every row.
If the tools are missing, start a fresh session. Codex loads a newly installed server’s tools at session start, not mid-session.
5. Reuse this routing prompt
Treat my own workspace as Personal, my employer’s as Company, and the delivery workspace as Client. Always state the target workspace before creating a page, updating a property, or adding a database row. Never write to a workspace I have not named.
Then name the target per action:
Add the migration notes as a new page in the Client workspace, under Engineering.
Update the status property on the API rollout row in the Company workspace only.
Keep approvals on while testing. A coding agent with write access to a client’s knowledge base deserves a confirmation step.
Per-workspace Notion MCP versus Carly in Codex
| Need | Notion MCP per workspace | Carly MCP server |
|---|---|---|
| Read pages as coding context | Yes | Yes |
| Create and update pages | Yes | Yes |
| Reach several workspaces | One server per workspace | One server, all workspaces |
| Tell the workspaces apart in a prompt | No shared convention | Yes, by name |
| Add a fourth workspace later | New server entry | No config change |
| Act when a database row is added | No | Yes |
| Keep the work running outside Codex | No | Yes |
The last two rows are where a coding agent’s shape shows. Codex reads your spec while you are in a session with it. The Notion work that repeats is the standing kind: a new row in the intake database gets an owner and an email, a page that has not moved in two weeks gets a nudge, a Friday rollup gets built from what changed.
Free Zapier-style workflows; AI agents from $35/month. Connect it on the integrations page, or start with Notion.
Quick fixes
| Problem | Fix |
|---|---|
| Tools do not show up | Start a new Codex session after adding the server |
codex mcp login never completes | Finish the browser OAuth flow, then rerun codex mcp list |
| A page is invisible to Codex | Grant the integration access to that page or its parent in Notion |
| Writes land in the wrong workspace | Route through one named server instead of stacking entries |
| A guest workspace will not authorize | An owner in that workspace approves the integration |
Frequently asked questions
Does Codex have a native Notion integration?
Not a first-party button. Codex supports MCP and Notion publishes an MCP server, so you add it to your Codex config and authenticate over OAuth.
Can Codex reach two Notion workspaces?
Only if the server holding them can tell them apart. Two separate Notion MCP entries connect but give the agent no reliable way to name a target, so writes land in the wrong place.
Can Codex write to Notion?
Yes, through MCP, which reads from and writes to pages, databases, blocks, and comments. It happens when you ask, in the session you are in.
Should I connect my whole Notion workspace to a coding agent?
Better not to. Grant access to the specific pages and databases the work needs, then widen once you have watched how it behaves.
Related: Codex + Notion · ChatGPT + Notion · Multiple Notion workspaces in ChatGPT Work · Multiple Slack workspaces in Codex · What is MCP
Ready to automate your busywork?
Carly schedules, researches, and briefs you—so you can focus on what matters.
See what people say
"Before Carly, I relied on a Calendly link, but the whole process felt impersonal and not very professional. Carly changed that by handling all the back-and-forth, so I'm no longer stuck in endless email threads trying to line up schedules.
Now Carly reaches out to candidates, shares my real-time availability, lets them pick a slot, then sends a Zoom link and drops it straight into my calendar. She sends reminders to both of us before each call, which has significantly reduced no-shows and last-minute confusion.
On top of scheduling, Carly acts like a full executive assistant, sending me my schedule the night before so I can prepare for each call. It reminds me of the old x.ai assistant, but Carly is noticeably smarter, faster, and better suited to my healthcare recruitment business."


