前言¶
在 DSH 里用 Notion,常见做法是装 dsh-notion-mcp 一类插件,把整个环境接到一个 Notion 工作区。实际开发里往往不止一个 DSH 工作区:个人笔记、客户项目、学习仓库各开一条路径,却希望 Notion 侧也是各自独立的空间。全局只持有一份 OAuth、再授权就覆盖上一份,和「一个 cwd 一套上下文」的日常用法对不上。DSH 也没有工作区级的凭证作用域可以随手叠一层——项目里的 <cwd>/.env 优先级还低于托管凭证存储,桌面宿主又是单次启动服务多个工作区。
下面介绍社区插件 dsh-notion-workspaces(维护者 moyu-777),在 DSH 插件目录 SkillHub 中归类为「联网工具」。它通过官方 Notion MCP,把「DSH 工作区路径 → Notion 工作区授权」写进 agent 作用域,让各工作区会话只看到自己那份 Notion 工具。
这是什么¶
dsh-notion-workspaces 当前版本 0.1.0(MIT),一句话定位:把每个 DSH 工作区绑定到各自的 Notion 工作区,走 https://mcp.notion.com 的官方 Notion MCP,并带设置界面做按工作区授权。
它补的缺口相对清晰:dsh-notion-mcp 对整个 DSH 环境只保留一份 Notion grant(凭证 ref 固定为 NOTION_OAUTH、单一 serverName、MCP 客户端挂在 profile 全局作用域);本插件则让每条绑定拥有自己的凭证 ref、serverName 和 OAuth 回调端口,并把 MCP 客户端挂到该工作区对应 agent 的上下文里。
工作原理¶
绑定关系保存在 $DSH_HOME/notion-workspaces.json;每条绑定对应的 OAuth grant 单独存在 DSH 凭证存储($DSH_HOME/.credentials.yaml)里,一条绑定一个 ref。
- 在
agent/created时,用会话的header.cwd选中适用的绑定。 - MCP 客户端只挂在这个 agent 下,因此
mcp__<serverName>__*工具仅出现在该工作区的会话中;未绑定的工作区看不到任何 Notion MCP 工具。 - 访问令牌在后台刷新;仍持有旧令牌的 agent 会被重新挂载,避免用已失效的令牌继续请求。
诊断信息可写在 $DSH_HOME/notion-workspaces-diag.log(可随时删除)。插件自述无遥测、无安装期脚本;网络仅访问 https://mcp.notion.com(OAuth 发现、动态客户端注册、令牌换取与刷新、MCP 流)。
安装与启用¶
仓库为纯 JavaScript(lib/、client/),未声明构建脚本,安装时不需要 allowBuilds 审批。要求 Node 22.13+,以及带 Web 服务的 DSH profile(如 desktop 或 web);极简 profile 仍可使用 dsh notion-workspaces login 一类 CLI 路径(见 README)。
desktop 需换成你实际运行 agent 的 profile(例如 web、headless):
dsh plugin --profile desktop add github:moyu-777/dsh-notion-workspaces
安装后插件会以当前 dsh 进程权限 读写凭证与 $DSH_HOME 下文件;启用前建议自行查看 GitHub 源码 与 LICENSE / NOTICE。
配置步骤¶
- 点击侧栏底部、Settings 旁的 Notion(设置页 Notion 工作区 为同一编辑器)。
- 新增绑定,从列表中选择 DSH 工作区。
- 点击 授权 / Authorize。浏览器打开 Notion 同意页,批准要连接的工作区;回调落到运行中宿主的
127.0.0.1:<port>。 - 对每个需要 Notion 的 DSH 工作区重复上述步骤。绑定完成后,该工作区会话中会出现形如
mcp__notion_study__*的工具名(<serverName>随绑定而定)。
适用场景与注意¶
适合谁: 在同一 DSH 安装里维护多个工作区,且每个工作区应对接不同 Notion 工作区的开发者或团队;需要与「全局单一 Notion 授权」方案区隔时,可优先评估本插件。
环境: 需能访问 https://mcp.notion.com。peer 依赖包括 @deepseek-ai/cordis、@deepseek-ai/dsh-credentials、@deepseek-ai/dsh-mcp-client 等(详见仓库 package.json)。
已知限制: 侧栏单个工作区行上的悬停菜单(…)没有扩展点——sidebar.workspaces 为 single 座位且已被内置组件占用,客户端 slot 中也没有「单工作区菜单项」座位,因此入口只能是侧栏底部 Notion 按钮与设置页。
归属说明: 独立社区插件,与 Notion Labs, Inc. 无隶属、背书或赞助关系;使用 Notion 服务仍受 Notion 自身条款约束。OAuth 实现改编自 mingzeng 的 dsh-notion-mcp(MIT),本仓库在 NOTICE 中保留相应版权声明。
结尾¶
若你的痛点是「多工作区、多 Notion,且不要互相覆盖授权」,dsh-notion-workspaces 把映射做在 agent 作用域,是 README 明确给出的设计方向。进一步了解可打开目录页 SkillHub 插件页 与源码仓库 github.com/moyu-777/dsh-notion-workspaces。