dsh-notion-workspaces:按 DSH 工作区分别绑定 Notion(官方 MCP)

前言

在 DSH 里用 Notion,常见做法是装一个 Notion MCP 插件,让 agent 能读写页面和数据库。若你本地开了多个 DSH 工作区,又对应多个 Notion 工作区(例如「学习」和「工作」各一套),单实例授权往往不够用:dsh-notion-mcp 一类方案通常对整个 DSH 环境只保留一份 Notion 授权,再授权第二个工作区会覆盖第一个;DSH 也没有内置「按工作区切凭证」的设置。下面介绍社区插件 dsh-notion-workspaces,它把映射做在 agent 作用域,让每个 DSH 工作区各自连到自己的 Notion 工作区,走官方 Notion MCP(https://mcp.notion.com)。

这是什么

dsh-notion-workspaces 是 DeepSeek Harness 的联网工具类插件,由社区维护者 hugo11032 发布(目录页:SkillHub)。一句话:为每个 DSH 工作区单独配置 Notion OAuth 与 MCP 客户端,会话里只出现该工作区绑定的那套 mcp__<serverName>__* 工具;未绑定的工作区不会出现 Notion 工具。

版本 0.1.0,许可证 MIT。OAuth 实现改编自 mingzeng 的 dsh-notion-mcp,本插件将回调端口与凭证引用改为按绑定分配(详见仓库 NOTICE)。插件为独立社区作品,与 Notion Labs, Inc. 无隶属或背书关系。

它补的是什么缺口

dsh-notion-mcp 能把 DSH 接到 Notion,但对整个 DSH 环境只持有一份授权:凭证引用 NOTION_OAUTH、serverName 写死,MCP 客户端挂在 profile 的全局作用域。再授权第二个 Notion 工作区会覆盖第一个。DSH 侧也没有工作区级凭证作用域——<cwd>/.env 优先级低于可写凭证存储,桌面宿主一次启动服务所有工作区。

本插件把「DSH 工作区路径 → Notion 工作区授权」写在 DSH 能提供该粒度的地方:agent 作用域。

工作原理

  1. 一条绑定对应:一个工作区路径、一份 Notion grant(独立凭证 ref、独立 serverName、独立 OAuth 回调端口)。
  2. 在 agent/created 时,用会话的 header.cwd 选中绑定。
  3. MCP 客户端挂在该 agent 的上下文里,因此 mcp__<serverName>__* 只在该工作区的会话中可见。

绑定表保存在 $DSH_HOME/notion-workspaces.json;每条授权的密钥在 DSH 凭证存储($DSH_HOME/.credentials.yaml)里各占一个 ref。访问令牌在后台刷新;持有已轮换令牌的 agent 会重新挂载,避免继续用失效令牌。

安装与启用

安装命令以仓库 README 为准(desktop 换成你实际跑 agent 的 profile,例如 web、headless):

dsh plugin --profile desktop add github:moyu-777/dsh-notion-workspaces

仓库为纯 JavaScript(lib/、client/),未声明构建脚本,一般不需要 allowBuilds 审批。

环境要求(来自 README):

  • 带 Web 服务的 profile(desktop 或 web 等)可使用设置界面;极简 profile 仍可用 dsh notion-workspaces login。
  • Node 22.13+。
  • 能访问 https://mcp.notion.com。

配置步骤

  1. 点击侧栏底部、Settings 旁的 Notion(或在 Settings → Notion 工作区 打开同一编辑器)。
  2. 新增绑定,从列表中选择目标 DSH 工作区。
  3. 点击 授权 / Authorize。浏览器打开 Notion 同意页,批准要连接的工作区;回调落到运行中宿主的 127.0.0.1:<端口>。
  4. 对每个需要 Notion 的 DSH 工作区重复上述步骤。绑定成功后,该工作区会话中会出现形如 mcp__notion_study__* 的工具名(serverName 随绑定而定)。

状态与网络边界

内容 位置
绑定表(工作区路径 → 授权) $DSH_HOME/notion-workspaces.json
每条绑定的 OAuth 授权 DSH 凭证存储($DSH_HOME/.credentials.yaml),一绑定一 ref
诊断日志 $DSH_HOME/notion-workspaces-diag.log(可删)

插件会读写自己在凭证存储中的 ref;网络仅访问 https://mcp.notion.com(OAuth 发现、动态客户端注册、令牌换取与刷新、MCP 流)。无遥测、无安装期脚本、无其他外连主机。

已知限制与使用注意

  • 入口位置:工作区行悬停菜单(…)无扩展点,配置入口只能是侧栏底部 Notion 按钮或设置页里的「Notion 工作区」。
  • 权限与安全:插件以当前 dsh 进程权限运行,会写入凭证存储与 $DSH_HOME 下配置文件。安装前建议阅读源码与 MIT 许可证,确认 OAuth 与 MCP 行为符合你的安全策略。
  • 适用场景:多工作区、多 Notion 团队/空间,且希望 agent 工具集按工作区隔离;单工作区、单 Notion 时也可使用,但价值主要在于「不互相覆盖授权」。

结尾

dsh-notion-workspaces 用 agent 作用域把 Notion MCP 拆到每个 DSH 工作区,避免全局单授权被后一次 OAuth 顶掉。目录与说明见 SkillHub 插件页;源码与完整文档见 GitHub(安装命令见上文 README 中的 github:moyu-777/dsh-notion-workspaces)。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye