From Notion Passport
Bind the current project/directory to its OWN Notion workspace by adding a uniquely-named, local-scope Notion MCP server that authenticates via the /mcp OAuth redirect flow. Use this whenever the user wants per-project (or per-directory) Notion connections, a different Notion workspace for this repo than another repo, to stop projects from sharing one Notion workspace, or asks to "connect this project to Notion", "프로젝트별 노션 연결", "이 레포에 노션 워크스페이스 붙이기", "노션 mcp 프로젝트별로 분리". Trigger even if they don't say "MCP" explicitly — any request to scope a Notion connection to a single project belongs here.
How this skill is triggered — by the user, by Claude, or both
Slash command
/notion-passport:setup-notion-workspaceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
The hosted Notion MCP server (`https://mcp.notion.com/mcp`) authenticates per
The hosted Notion MCP server (https://mcp.notion.com/mcp) authenticates per
server entry, and Claude Code stores each server's OAuth token keyed by the
server name ({name}|{hash} in ~/.claude/.credentials.json). So the path
to per-project workspaces is simple:
The common blocker is the user-scope notion plugin: it injects one shared
notion server into every project, forcing a single workspace everywhere.
scripts/setup_notion_workspace.py makes the current directory's connection
self-contained:
notion-<dir>-<hash>,
where <hash> is a 4-char digest of the absolute path so two repos with the
same directory name don't collide onto one workspace) unless one is given.notion-* servers so two projects never collide.
A fixed port keeps the OAuth redirect URI stable across restarts.notion plugin is present.notion, or a prior
run of this one).~/.claude.json, this project only — not
committed to git):
claude mcp add --transport http <name> https://mcp.notion.com/mcp --scope local --callback-port <port>From the target project's directory:
python3 "${CLAUDE_PLUGIN_ROOT}/skills/setup-notion-workspace/scripts/setup_notion_workspace.py"
${CLAUDE_PLUGIN_ROOT}is set automatically when this runs as an installed plugin. If you copied the skill into~/.claude/skills/instead, substitute that path:python3 ~/.claude/skills/setup-notion-workspace/scripts/setup_notion_workspace.py.
Pass overrides only if the user wants a specific name or port:
python3 "${CLAUDE_PLUGIN_ROOT}/skills/setup-notion-workspace/scripts/setup_notion_workspace.py" notion-myrepo 8130
These are interactive and the user must do them:
/mcp → select the new server → Authenticate.••• → Connections, or fetches will 404.If the user agrees to fully drop the shared global plugin (recommended for clean per-project management), run it explicitly — it is a global change and also removes that plugin's skills:
claude plugin uninstall notion@claude-plugins-official
A leftover orphaned token may remain in ~/.claude/.credentials.json under
mcpOAuth (key starting plugin:Notion:). It is harmless; remove the single
key if the user wants a clean credentials file.
Provides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.
npx claudepluginhub ysw789/notion-passport-claude-code --plugin notion-passport