Several Notion workspaces reaching OpenAI Codex through a single MCP server

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.toml to 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

WorkspaceRole
Personal notes and projectsPersonal
Your company’s workspaceCompany
Client delivery workspaceClient

Use the role in ordinary queries and name it explicitly before anything that writes.

2. Connect every workspace to Carly

  1. Sign in at carlyassistant.com.
  2. Open carlyassistant.com/integrations.
  3. Find Notion and click Connect.
  4. Authorize the first workspace.
  5. Repeat for each additional workspace, choosing the correct one in Notion’s authorization screen.
  6. 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

NeedNotion MCP per workspaceCarly MCP server
Read pages as coding contextYesYes
Create and update pagesYesYes
Reach several workspacesOne server per workspaceOne server, all workspaces
Tell the workspaces apart in a promptNo shared conventionYes, by name
Add a fourth workspace laterNew server entryNo config change
Act when a database row is addedNoYes
Keep the work running outside CodexNoYes

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

ProblemFix
Tools do not show upStart a new Codex session after adding the server
codex mcp login never completesFinish the browser OAuth flow, then rerun codex mcp list
A page is invisible to CodexGrant the integration access to that page or its parent in Notion
Writes land in the wrong workspaceRoute through one named server instead of stacking entries
A guest workspace will not authorizeAn 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."

Gus Ibrahim, Founder & Director, IHR