dsh-connectors

DSH PLUGIN浏览器与联网

仓库 gabrielbav/dsh-connectors · npm @gabrielbav/dsh-connectors

浏览器与联网 未标注验证等级 安全审查:未标注 可信度:未标注 可安装插件
安装这个插件

为 DeepSeek Harness 增加 Settings 里的 Connectors 页面,用 OAuth 或令牌一键接入 Granola、Linear、Jira、GitHub 等远程 MCP 服务器。

一句话选型结论

按资料字段整理

dsh-connectors 是浏览器与联网类的 DSH 可安装插件,未做沙盒验证,暂无安全审查结论,列出 5 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类浏览器与联网 收录类型可安装插件 验证等级未标注验证等级 安全审查未标注
验证等级 UNKNOWN 未标注验证等级
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-11-13 创建于 2026-11-13
README 11.3 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add @gabrielbav/dsh-connectors
  1. 1
    确认版本与运行环境

    Node.js 要求 >=24.9.0;版本不匹配时安装会报错。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求>=24.9.0来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名@gabrielbav/dsh-connectors可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-connectors:为 DeepSeek Harness 接入远程 MCP 服务的连接器页面

  • Settings 内 Connectors 管理页
  • OAuth 与令牌两种授权
  • 内置七种常用服务连接器
  • 自定义远程 MCP 服务器
  • 实时显示连接状态与工具数

上游标签

connectorsdeepseek-harnessdshdsh-pluginmcpoauth

验证等级与安全审查

未标注验证等级
自动化流程结论,不是人工审核
验证等级未标注验证等级上游未给出验证结论,安装前请自行确认
安全审查未标注静态分析结论,未标注不代表已通过审查
仓库健康度未标注按仓库活跃度与最近更新时间给出
可信度未标注综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 安全审查还没结论,装之前先看仓库改了什么、要什么权限。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在浏览器与联网场景里给 DSH 补能力的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-connectors当前 未做沙盒验证 未标注 0 未标注 有
dsh-our-free-model L3 · 安装规范通过 低风险 8,796 未标注 有
dsh-web L3 · 安装规范通过 低风险 8,549 未标注 无
BrowserSkill L4 · 沙盒安装通过 低风险 8,456 未标注 有
dsh-pocket L5 · 运行验证通过 低风险 1,656 0.2.0-rc.2 等 12 个 有
Browser4 L4 · 沙盒安装通过 中风险 1,152 未标注 有

仓库档案

浏览器与联网
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方gabrielbav仓库 dsh-connectors · 默认分支 main
分类浏览器与联网integration
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言TypeScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-11-13 · 2026-11-13最后推送 2026-11-13
本站收录2026-11-14首次进入本站目录的时间

README 全文

11.3 KB
作者原文,中文版优先;只做安全转义,不改内容

Connectors for DeepSeek Harness

Adds a Connectors page to Settings, like the connectors page in Claude. Each connector adds an MCP server to DSH, so every session in that dsh (chats, subagents, automation tasks) can use its tools, named mcp____. The page lists the connectors in a table (Connector, Type, Authorization, Status) with a search field, and an Add menu for your own.

Add a connector Custom MCP server Token sign-in
Connector Authorization Server
Granola OAuth https://mcp.granola.ai/mcp
Linear OAuth https://mcp.linear.app/mcp
Jira & Confluence OAuth (Atlassian Rovo MCP, one sign-in for both) https://mcp.atlassian.com/v1/mcp
Trello OAuth https://mcp.trello.com/v1
GitHub OAuth with your GitHub App (setup), or a personal access token https://api.githubcopilot.com/mcp/
GitLab OAuth https://gitlab.com/api/v4/mcp
Azure DevOps Organization + personal access token Microsoft's local server, npx @azure-devops/mcp@2.11.0, run by the MCP manager

Granola, Linear, Jira & Confluence, Trello and GitLab register their client by themselves (Dynamic Client Registration), so they need no setup. GitHub does not, so its OAuth needs a GitHub App you register once; until then it takes a token.

Plus:

  • Add → Custom connector: a name and a remote MCP URL. DSH uses OAuth when the server supports Dynamic Client Registration, otherwise it asks for a bearer token.
  • Add → From an npm package: a connector plugin that follows the connector package standard.

How it works

  • DSH's MCP manager (@deepseek-ai/dsh-mcp-manager) runs the servers. This plugin adds what the manager lacks, sign-in and a page: it registers each connected connector with ctx.mcpManager.register().
  • The server reads its token through a ${credential:DSH_CONNECTORS__TOKEN} template. The token stays in DSH's credential store under $DSH_HOME, so a renewed token reaches the server without re-registering. The browser page sends a pasted token once and never reads one back.
  • OAuth flow:
    1. Discovery (RFC 9728/8414).
    2. Dynamic Client Registration, or a client you configure (GitHub).
    3. Authorization code with PKCE (S256), a random state, and a one-shot callback on http://127.0.0.1:/callback that closes after 10 minutes.
    4. The access token is renewed 5 minutes before it expires, and on start if it already has.

The refresh token and client id live in the dsh-connectors/ credential record. The protocol steps come from @modelcontextprotocol/client, the MCP SDK the harness uses.
- Status comes from the MCP manager: Connected (with the tool count), Connecting, Error (with the server's message), or Not connected. The page refreshes every 2 seconds while it is open.
- Disconnect removes the server and deletes the stored token. Remove also deletes a custom connector.

GitHub OAuth: your GitHub App

GitHub's MCP server has no Dynamic Client Registration, and Claude's GitHub App only redirects to claude.ai. So OAuth uses a GitHub App you register once. No domain is needed.

  1. Open and fill it in:
    - GitHub App name: for example DSH Connectors (it must be unique on GitHub).
    - Homepage URL: any URL, for example this repository.
    - Callback URL: add both http://127.0.0.1/callback and http://localhost/callback (Add Callback URL). DSH redirects to 127.0.0.1 on a random port. GitHub's MCP server docs say GitHub ignores the port for loopback callbacks, but only show localhost.
    - Expire user authorization tokens: on. DSH renews them.
    - Request user authorization (OAuth) during installation: off.
    - Webhook → Active: off.
    - Repository permissions: Contents, Issues, Pull requests, Actions and Workflows read and write; Metadata, Checks, Commit statuses and Discussions as you need.
    - Where can this GitHub App be installed: "Any account" if others will use your plugin, otherwise "Only on this account".
  2. Create it. Copy the Client ID, click Generate a new client secret, and note the app's slug from its URL (github.com/apps/).
  3. Add github: { clientId, clientSecret, appSlug } to the config.

  4. Restart dsh. GitHub now offers Connect (OAuth) and Use a token.

  5. After signing in, Choose repositories opens the app's installation page, where you install it on accounts and organizations and pick repositories. This is the same step Claude shows.

GitHub's documentation treats the secret of a distributed client as non-confidential. If the app is public, its id and secret can ship as this plugin's defaults, so users skip these steps.

App and client config

The GitHub App goes in $DSH_HOME/cordis.patch.yml (every profile) or a profile's cordis.patch.yml, then restart dsh:

- id: connectors
config:
github: { clientId: Iv23li…, clientSecret: …, appSlug: dsh-connectors }

Azure DevOps

Microsoft's remote server (mcp.dev.azure.com/) signs in through Entra ID in your organization's tenant. Entra has no Dynamic Client Registration, so it would need an app registration, usually with admin consent. The connector therefore runs Microsoft's local server instead, with a PAT:

  • Create a PAT at https://dev.azure.com//_usersSettings/tokens, with the scopes the tools need (Work Items, Code, Build, Wiki, …).
  • The connector checks the PAT against _apis/connectionData, stores it in the form @azure-devops/mcp reads, and starts npx -y @azure-devops/mcp@2.11.0 --authentication pat.

The first start downloads the package, so it can take up to 3 minutes. The version is pinned, so an update is a code change here.

Adding connectors from another plugin

The plugin provides the connectors service. Another plugin injects it and registers definitions inside an effect, so its rows disappear when it unloads. Stored credentials stay, and come back when the plugin returns.

import type { ConnectorsService } from '@gabrielbav/dsh-connectors'

export const name = 'dsh-connector-linear'
export const inject = ['connectors']

export function apply(ctx: { connectors: ConnectorsService; effect(run: () => () => void): void }) {
ctx.effect(() => ctx.connectors.register({
id: 'linear',                        // [a-z][a-z0-9-]{0,31}: MCP server name and credential id
name: 'Linear',
description: 'Issues and projects',
icon: '…', // drawn in the text color
oauth: { resourceUrl: 'https://mcp.linear.app/mcp' }, // Dynamic Client Registration
server: ({ credential }) => ({
transport: 'streamable-http',
url: 'https://mcp.linear.app/mcp',
headers: { Authorization: `Bearer ${credential}` },
}),
}))
}

examples/connector-example is a complete, minimal connector package that follows the standard below. Linking it into a profile adds an "Example" row, and removing it takes the row away.

The full contract is in src/host/api.ts:

  • oauth takes client for a pre-registered app, plus scopes, identify and setupUrl.
  • token takes form fields and a verify that checks the values and returns the credential to store.
  • server can return a stdio server whose env receives the credential.

Connector package standard

Add → From an npm package installs only packages whose published package.json has:

{
"keywords": ["dsh-connector"],
"dsh": {
"bundle": { "patch": "./cordis.patch.yml" },
"connector": { "ids": ["linear"] }
}
}

It also refuses a package with a browser half (dsh.client): a connector is a Host-side definition, so it has no reason to change the UI.

The check runs on the registry manifest before anything downloads, and again at install time. The install then goes through the harness plugin manager with the exact version (expected, saveExact). Registered install gates (such as Airlock) scan it first. A gate's review is shown on the page with an Install anyway, and a block stops the install.

The standard filters out packages that are not connectors. It is not a security boundary: a connector package is code that runs in the Host with your permissions, which is why the install gate matters.

Install

From the Plugins page: Add plugin → @gabrielbav/dsh-connectors. Or from the command line:

dsh plugin --profile web add -w @gabrielbav/dsh-connectors

Restart dsh, then open Settings → Connectors. The plugin needs the mcp-manager and credentials services, which the Web and Desktop profiles mount. Package installs also need the plugin manager. It needs no harness fork.

From a checkout, in the DSH workspace: make plugins P=connectors, then make start P=connectors.

Limitations

  • The OAuth callback is on the Host's loopback. The browser must run on the same computer as dsh.
  • No needs-auth state in the MCP manager. A token a server revokes mid-session shows as a connection error after the manager's reconnect attempts. Use Connect again.
  • Every sign-in through Dynamic Client Registration registers a new client, because the callback port changes each time.
  • GitLab is gitlab.com only. A self-managed instance can be added as a custom connector (https:///api/v4/mcp). GitLab's MCP server is in beta, and your plan or instance settings may not offer it.
  • Only English and Portuguese are translated. Other DSH languages show English. Labels that connector definitions supply are shown as written.

Develop

corepack pnpm@11.28.5 install
corepack pnpm@11.28.5 run typecheck
corepack pnpm@11.28.5 test
corepack pnpm@11.28.5 run build   # then restart dsh
File Role
src/host/api.ts Public connectors service contract
src/host/connectors.ts Registry: sign-in, renewal, MCP registration, status
src/host/oauth.ts Loopback callback and the OAuth steps
src/host/builtins.ts Granola, GitHub, GitLab, Azure DevOps
src/host/custom.ts Custom URL connectors
src/host/packages.ts Connector package standard and installs
src/host/index.ts Config, service, /api/connectors. routes
src/client/ui.tsx Settings page and dialogs

常见问题

8 问
答案由本站依据条目字段整理,不引用上游原文
dsh-connectors 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add @gabrielbav/dsh-connectors` 即可。对应的 npm 包名是 `@gabrielbav/dsh-connectors`。

dsh-connectors 的验证等级是什么意思?

未标注验证等级。上游未给出验证结论,安装前请自行确认

dsh-connectors 安全吗?

未标注。

dsh-connectors 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-connectors 需要什么运行环境?

Node.js >=24.9.0。环境不满足时安装会失败,建议先确认本机版本。

dsh-connectors 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-connectors 有哪些功能?

Settings 内 Connectors 管理页、OAuth 与令牌两种授权、内置七种常用服务连接器、自定义远程 MCP 服务器、实时显示连接状态与工具数。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

1 条
不同作者的仓库分开列,请确认你要装的是哪一个
浏览器与联网
按星标排序,可作替代方案

dsh-our-free-model

dsh-our-free-model

在 DeepSeek Harness 中装上这个 DSH plugin,无需登录、注册或填 API Key,即可直接调用 DeepSeek

L3 · 安装规范通过 8,796 星

dsh-web

dsh-web

侧边栏多列任务看板:卡片交给真实 DSH 智能体会话执行,支持 cron 定时(Host 侧到点执行,关浏览器也生效)。

L3 · 安装规范通过 8,549 星

BrowserSkill

BrowserSkill

BrowserSkill 的 DeepSeek Harness 浏览器自动化桥接插件,通过原生浏览器工具控制可见的 Chrome 和 Edg

L4 · 沙盒安装通过 8,456 星

dsh-pocket

dsh-pocket

DSH Pocket 让 DeepSeek Harness 装进口袋:电脑跑 dsh web,手机扫码即实时同步访问(局域网+公网),人在外

L5 · 运行验证通过 1,656 星

Browser4

Browser4

L4 · 沙盒安装通过 1,152 星

agentrq

agentrq

L4 · 沙盒安装通过 1,140 星

gabrielbav 的其它插件

3 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。