dsh-mcp-connector 0.2.27 → 0.2.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +22 -1
- package/CONTRIBUTING.md +55 -0
- package/README.en.md +43 -8
- package/README.md +43 -8
- package/docs/PLUGIN-UPDATE.md +3 -1
- package/docs/screenshots/01-market-overview.jpg +0 -0
- package/docs/screenshots/02-connector-detail.jpg +0 -0
- package/docs/screenshots/03-tool-discovery.jpg +0 -0
- package/docs/screenshots/04-json-import.jpg +0 -0
- package/docs/screenshots/README.md +27 -0
- package/lib/client.js +79 -4
- package/package.json +21 -4
- package/screenshots.json +6 -0
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,25 @@
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.2.29] - 2026-08-30
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- 更新服务返回 `RELEASE_TOO_FRESH` 时明确提示“发布安全等待期”,不再误写为镜像同步;主动跳过等待的操作也改为“立即更新(跳过等待)”。
|
|
12
|
+
- DSH Desktop 或其他无兼容 Update Provider 的宿主直接展示精确版本升级命令,并支持一键复制与打开 npm 页面,不再只给出泛化的“查看更新方式”。
|
|
13
|
+
|
|
14
|
+
## [0.2.28] - 2026-08-29
|
|
15
|
+
|
|
16
|
+
### Documentation
|
|
17
|
+
|
|
18
|
+
- 重写 npm 和中英文 README 首屏产品介绍,前置 MCP Server 连接、OAuth 2.0 PKCE、stdio/HTTP、Registry 与工具/Prompt 发现等高意图能力。
|
|
19
|
+
- 增加 npm 下载、GitHub Star/Fork/Release 徽标、真实演示、能力对比、中文教程入口与独立贡献指南。
|
|
20
|
+
- 扩充 `model-context-protocol`、`mcp-registry`、`mcp-manager`、`streamable-http` 等高意图检索词。
|
|
21
|
+
|
|
22
|
+
### Verification
|
|
23
|
+
|
|
24
|
+
- 新增中英文 README 与 `package.json` 版本一致性门禁和 4 项回归测试;138 项自动测试、lint 与 npm 发布包白名单/敏感内容扫描通过。
|
|
25
|
+
|
|
7
26
|
## [0.2.27] - 2026-08-28
|
|
8
27
|
|
|
9
28
|
### Fixed
|
|
@@ -437,7 +456,9 @@
|
|
|
437
456
|
- 外部 URL 与导入 Header 执行安全校验。
|
|
438
457
|
- iframe 消息校验同源和消息来源。
|
|
439
458
|
|
|
440
|
-
[Unreleased]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.
|
|
459
|
+
[Unreleased]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.29...HEAD
|
|
460
|
+
[0.2.29]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.28...v0.2.29
|
|
461
|
+
[0.2.28]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.27...v0.2.28
|
|
441
462
|
[0.2.27]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.26...v0.2.27
|
|
442
463
|
[0.2.26]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.25...v0.2.26
|
|
443
464
|
[0.2.25]: https://github.com/duhu2000/dsh-mcp-connector/compare/v0.2.24...v0.2.25
|
package/CONTRIBUTING.md
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# 贡献指南 / Contributing
|
|
2
|
+
|
|
3
|
+
感谢你帮助改进 `dsh-mcp-connector`。请不要在 Issue、PR、日志、截图或测试数据中提交 Token、API Key、Cookie、OAuth 凭据或真实业务数据。
|
|
4
|
+
|
|
5
|
+
Thank you for contributing. Never put tokens, API keys, cookies, OAuth credentials, or real business data in issues, pull requests, logs, screenshots, or fixtures.
|
|
6
|
+
|
|
7
|
+
## 参与方式
|
|
8
|
+
|
|
9
|
+
- 报告缺陷或提交功能建议:[GitHub Issues](https://github.com/duhu2000/dsh-mcp-connector/issues)
|
|
10
|
+
- 为公共市场增加连接器:阅读 [Connector onboarding](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/docs/ONBOARDING.md),连接器描述与插件代码分仓管理。
|
|
11
|
+
- 修复插件或改进文档:Fork 本仓库,从最新 `main` 创建单一目的的分支并提交 PR。
|
|
12
|
+
- 搭建私有目录:参考 [README 配置说明](README.md#配置) 和 [市场注册指南](docs/MARKET-REGISTRATION.md)。
|
|
13
|
+
|
|
14
|
+
## 本地开发
|
|
15
|
+
|
|
16
|
+
要求 Node.js 20 或更高版本。DSH 运行期 peer dependencies 由 Host 提供,本地安装使用:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install --legacy-peer-deps
|
|
20
|
+
npm run check
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
如果修改公共 Registry 或市场元数据,还应运行:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
npm run registry:build
|
|
27
|
+
npm run registry:validate
|
|
28
|
+
npm run market:check
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
UI 可以在无真实凭据的 mock 环境中验收:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
npm run dev:ui
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## PR 要求
|
|
38
|
+
|
|
39
|
+
1. 一个 PR 解决一个明确问题,不要夹带无关重构。
|
|
40
|
+
2. 新增或修改行为时增加对应测试;纯文档改动也必须通过 `npm run check`。
|
|
41
|
+
3. 中英文用户文档应同步更新。
|
|
42
|
+
4. README 中的当前版本必须与 `package.json` 一致,`npm run docs:check` 会阻断版本漂移。
|
|
43
|
+
5. 只使用无凭据 mock 或已脱敏数据做测试与截图。
|
|
44
|
+
|
|
45
|
+
## 从 Fork 到 PR
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
git switch main
|
|
49
|
+
git pull --ff-only
|
|
50
|
+
git switch -c feat/<short-purpose>
|
|
51
|
+
npm install --legacy-peer-deps
|
|
52
|
+
npm run check
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
提交时说明用户问题、解决方案、测试结果与必要的手工验收步骤。
|
package/README.en.md
CHANGED
|
@@ -1,21 +1,50 @@
|
|
|
1
|
-
# MCP Connector and
|
|
1
|
+
# MCP Connector and MCP Server Marketplace for DeepSeek Harness
|
|
2
2
|
|
|
3
|
-
> A
|
|
3
|
+
> A universal MCP connector and marketplace for connecting, authorizing, discovering, and managing MCP servers, initiated and maintained by the Qichacha (QCC) team
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Manage MCP connections from different providers in one place inside DeepSeek Harness Desktop/Web. Use OAuth 2.0 PKCE, API keys, stdio/HTTP, `mcpServers` JSON import, tool and prompt discovery, and an independently updated Registry of curated connectors.
|
|
6
6
|
|
|
7
7
|
> Here, “skill extension” means extending an agent through MCP tools and prompts; this package does not present itself as a standalone DSH Skill.
|
|
8
8
|
|
|
9
9
|
[简体中文](README.md)
|
|
10
10
|
|
|
11
|
-
[Chinese user guide](docs/USER-GUIDE.md) · [Connector onboarding](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/docs/ONBOARDING.md) · [Issues](https://github.com/duhu2000/dsh-mcp-connector/issues)
|
|
11
|
+
[Chinese user guide](docs/USER-GUIDE.md) · [Connector onboarding](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/docs/ONBOARDING.md) · [Contributing](CONTRIBUTING.md) · [Issues](https://github.com/duhu2000/dsh-mcp-connector/issues)
|
|
12
12
|
|
|
13
13
|
[](https://github.com/duhu2000/dsh-mcp-connector/actions/workflows/ci.yml)
|
|
14
14
|
[](https://www.npmjs.com/package/dsh-mcp-connector)
|
|
15
|
+
[](https://www.npmjs.com/package/dsh-mcp-connector)
|
|
16
|
+
[](https://github.com/duhu2000/dsh-mcp-connector/stargazers)
|
|
17
|
+
[](https://github.com/duhu2000/dsh-mcp-connector/forks)
|
|
18
|
+
[](https://github.com/duhu2000/dsh-mcp-connector/releases/latest)
|
|
15
19
|
[](LICENSE)
|
|
16
20
|
[](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/catalog-stats.json)
|
|
17
21
|
[](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/catalog-stats.json)
|
|
18
22
|
|
|
23
|
+
## Start in 30 seconds
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
dsh plugin --profile web add dsh-mcp-connector
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Fully restart DeepSeek Harness Desktop or `dsh web` after installation or upgrade, then open **MCP Connector** in the primary sidebar.
|
|
30
|
+
|
|
31
|
+

|
|
32
|
+
|
|
33
|
+
If the plugin helps you connect an MCP server faster, consider [starring the repository](https://github.com/duhu2000/dsh-mcp-connector/stargazers). Connector submissions, compatibility fixes, and documentation pull requests are welcome.
|
|
34
|
+
|
|
35
|
+
## Why use MCP Connector
|
|
36
|
+
|
|
37
|
+
| Capability | Basic MCP configuration panel | MCP Connector |
|
|
38
|
+
|---|:---:|:---:|
|
|
39
|
+
| Manual MCP server configuration | ✅ | ✅ |
|
|
40
|
+
| Independently updated curated connector catalog | Usually not included | ✅ |
|
|
41
|
+
| OAuth 2.0 PKCE and API keys | Partial | ✅ |
|
|
42
|
+
| HTTP, stdio, and `mcpServers` JSON import | Partial | ✅ |
|
|
43
|
+
| Tool and prompt discovery | Implementation-specific | ✅ |
|
|
44
|
+
| Authorization recovery and connection lifecycle management | Usually not included | ✅ |
|
|
45
|
+
| Connection health checks and Registry refresh | Usually not included | ✅ |
|
|
46
|
+
| Plugin version discovery and safe updates | Usually not included | ✅ |
|
|
47
|
+
|
|
19
48
|
## Features
|
|
20
49
|
|
|
21
50
|
- A primary sidebar entry below New Conversation and above workspaces/conversations, with a public footer-slot fallback for incompatible DSH DOM versions.
|
|
@@ -37,8 +66,6 @@ As of 2026-08-27, the public Registry publishes 79 connector descriptors. After
|
|
|
37
66
|
|
|
38
67
|
## Interface and demo
|
|
39
68
|
|
|
40
|
-

|
|
41
|
-
|
|
42
69
|
| Marketplace overview | Connector details and curated prompts |
|
|
43
70
|
|---|---|
|
|
44
71
|
|  |  |
|
|
@@ -74,6 +101,14 @@ Connected tools are exposed to the model with the `mcp__<serverName>__*` prefix.
|
|
|
74
101
|
|
|
75
102
|
The detailed [Chinese user guide](docs/USER-GUIDE.md) covers category browsing, the four authentication modes, HTTP/stdio configuration, JSON import, connection management, and troubleshooting.
|
|
76
103
|
|
|
104
|
+
## Guides and ecosystem
|
|
105
|
+
|
|
106
|
+
- [User guide: installation, authorization, JSON import, and troubleshooting](docs/USER-GUIDE.md)
|
|
107
|
+
- [Plugin updates: version discovery, providers, and rollback](docs/PLUGIN-UPDATE.md)
|
|
108
|
+
- [Marketplace registration: local cards, the public Registry, and OAuth requirements](docs/MARKET-REGISTRATION.md)
|
|
109
|
+
- [Third-party connector onboarding](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/docs/ONBOARDING.md)
|
|
110
|
+
- [Development, forks, and contributions](CONTRIBUTING.md)
|
|
111
|
+
|
|
77
112
|
## Connector catalog
|
|
78
113
|
|
|
79
114
|
The package contains a bundled fallback catalog. By default, it refreshes the public [dsh-mcp-connector-registry](https://github.com/duhu2000/dsh-mcp-connector-registry) through jsDelivr, then tries GitHub raw if the primary source fails; cached or bundled data remains available if neither remote source can be reached. jsDelivr branch URLs can lag behind a newly merged registry commit, so new cards may not appear immediately.
|
|
@@ -108,11 +143,11 @@ npm run market:check
|
|
|
108
143
|
npm run dev:ui
|
|
109
144
|
```
|
|
110
145
|
|
|
111
|
-
`npm run check` performs syntax checks, automated tests, and an npm package allowlist/sensitive-content audit. `npm run market:check` tracks the external DSH marketplace PR and live directory. Tags matching `v*` trigger GitHub Actions; the tag must match `package.json`. npm releases use Trusted Publishing through GitHub OIDC and do not require a long-lived `NPM_TOKEN`.
|
|
146
|
+
`npm run check` performs syntax checks, README/package version consistency validation, automated tests, and an npm package allowlist/sensitive-content audit. `npm run market:check` tracks the external DSH marketplace PR and live directory. Tags matching `v*` trigger GitHub Actions; the tag must match `package.json`. npm releases use Trusted Publishing through GitHub OIDC and do not require a long-lived `NPM_TOKEN`.
|
|
112
147
|
|
|
113
148
|
Every Registry merge regenerates `catalog-stats.json`; an hourly workflow in this repository synchronizes the Chinese and English product copy plus a local stats snapshot. The static npm README updates with package releases, while the live badges above read the Registry directly and therefore stay current without another npm release.
|
|
114
149
|
|
|
115
|
-
The current public version is [`dsh-mcp-connector@0.2.
|
|
150
|
+
The current public version is [`dsh-mcp-connector@0.2.29`](https://www.npmjs.com/package/dsh-mcp-connector), with [GitHub Release v0.2.29](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.29).
|
|
116
151
|
|
|
117
152
|
See [CHANGELOG.md](CHANGELOG.md) for version history and [docs/DESKTOP-E2E.md](docs/DESKTOP-E2E.md) for the Desktop release checklist.
|
|
118
153
|
|
package/README.md
CHANGED
|
@@ -1,21 +1,50 @@
|
|
|
1
|
-
# MCP
|
|
1
|
+
# MCP连接器:DeepSeek Harness MCP Server 连接与管理市场
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> 连接、授权、发现和管理 MCP Server 的通用 MCP Connector 与 Marketplace,由企查查(Qichacha/QCC)团队发起并维护
|
|
4
4
|
|
|
5
|
-
在 DeepSeek Harness Desktop
|
|
5
|
+
在 DeepSeek Harness Desktop/Web 中一站式管理不同厂商的 MCP 连接:支持 OAuth 2.0 PKCE、API Key、stdio/HTTP、`mcpServers` JSON 导入、工具与 Prompt 发现,并通过独立 Registry 持续更新精选连接器目录。
|
|
6
6
|
|
|
7
7
|
> 注:“技能扩展”指通过 MCP 工具和 Prompt 扩展智能体能力,本包不会伪装成独立 DSH Skill。
|
|
8
8
|
|
|
9
9
|
[English](README.en.md)
|
|
10
10
|
|
|
11
|
-
[用户手册](docs/USER-GUIDE.md) · [第三方连接器上架指南](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/docs/ONBOARDING.md) · [问题反馈](https://github.com/duhu2000/dsh-mcp-connector/issues)
|
|
11
|
+
[用户手册](docs/USER-GUIDE.md) · [第三方连接器上架指南](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/docs/ONBOARDING.md) · [参与贡献](CONTRIBUTING.md) · [问题反馈](https://github.com/duhu2000/dsh-mcp-connector/issues)
|
|
12
12
|
|
|
13
13
|
[](https://github.com/duhu2000/dsh-mcp-connector/actions/workflows/ci.yml)
|
|
14
14
|
[](https://www.npmjs.com/package/dsh-mcp-connector)
|
|
15
|
+
[](https://www.npmjs.com/package/dsh-mcp-connector)
|
|
16
|
+
[](https://github.com/duhu2000/dsh-mcp-connector/stargazers)
|
|
17
|
+
[](https://github.com/duhu2000/dsh-mcp-connector/forks)
|
|
18
|
+
[](https://github.com/duhu2000/dsh-mcp-connector/releases/latest)
|
|
15
19
|
[](LICENSE)
|
|
16
20
|
[](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/catalog-stats.json)
|
|
17
21
|
[](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/catalog-stats.json)
|
|
18
22
|
|
|
23
|
+
## 30 秒开始
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
dsh plugin --profile web add dsh-mcp-connector
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
安装或升级后完全重启 DeepSeek Harness Desktop 或 `dsh web`,然后打开左侧「🧩 MCP连接器」。
|
|
30
|
+
|
|
31
|
+

|
|
32
|
+
|
|
33
|
+
如果它帮你更快地接入 MCP Server,欢迎在 [GitHub 点个 Star](https://github.com/duhu2000/dsh-mcp-connector/stargazers);新的连接器、兼容性修复和文档改进也欢迎提交 PR。
|
|
34
|
+
|
|
35
|
+
## 为什么使用 MCP连接器
|
|
36
|
+
|
|
37
|
+
| 能力 | 普通 MCP 配置面板 | MCP连接器 |
|
|
38
|
+
|---|:---:|:---:|
|
|
39
|
+
| 手工配置 MCP Server | ✅ | ✅ |
|
|
40
|
+
| 持续更新的精选连接器目录 | 通常无 | ✅ |
|
|
41
|
+
| OAuth 2.0 PKCE 与 API Key | 部分 | ✅ |
|
|
42
|
+
| HTTP、stdio 与 `mcpServers` JSON 导入 | 部分 | ✅ |
|
|
43
|
+
| 工具与 Prompt 发现 | 视实现而定 | ✅ |
|
|
44
|
+
| 授权恢复与连接生命周期管理 | 通常无 | ✅ |
|
|
45
|
+
| 连接健康检查与 Registry 刷新 | 通常无 | ✅ |
|
|
46
|
+
| 插件版本检测与安全更新 | 通常无 | ✅ |
|
|
47
|
+
|
|
19
48
|
## 功能
|
|
20
49
|
|
|
21
50
|
- 左侧主导航入口:目标位置为“新会话”下方、“工作区/会话列表”上方;若 DSH DOM 结构不兼容,自动回退到底部公开插槽。
|
|
@@ -39,8 +68,6 @@
|
|
|
39
68
|
|
|
40
69
|
## 界面与演示
|
|
41
70
|
|
|
42
|
-

|
|
43
|
-
|
|
44
71
|
| 市场总览 | 连接器详情与精选 Prompt |
|
|
45
72
|
|---|---|
|
|
46
73
|
|  |  |
|
|
@@ -76,6 +103,14 @@ bash <(curl -fsSL https://raw.githubusercontent.com/duhu2000/dsh-mcp-connector/m
|
|
|
76
103
|
|
|
77
104
|
分类浏览、四种鉴权状态、自定义 HTTP/stdio、JSON 导入、连接管理与故障排查见完整的[用户手册](docs/USER-GUIDE.md)。
|
|
78
105
|
|
|
106
|
+
## 中文教程与生态入口
|
|
107
|
+
|
|
108
|
+
- [用户手册:安装、授权、JSON 导入与故障排查](docs/USER-GUIDE.md)
|
|
109
|
+
- [插件更新:版本检测、Provider 与回滚](docs/PLUGIN-UPDATE.md)
|
|
110
|
+
- [市场注册:本地卡片、公共 Registry 与 OAuth 要求](docs/MARKET-REGISTRATION.md)
|
|
111
|
+
- [第三方连接器上架指南](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/docs/ONBOARDING.md)
|
|
112
|
+
- [开发、Fork 与贡献指南](CONTRIBUTING.md)
|
|
113
|
+
|
|
79
114
|
## 配置
|
|
80
115
|
|
|
81
116
|
Bundle 默认配置位于 `cordis.patch.yml`:
|
|
@@ -103,11 +138,11 @@ npm run market:check
|
|
|
103
138
|
npm run dev:ui
|
|
104
139
|
```
|
|
105
140
|
|
|
106
|
-
`check`
|
|
141
|
+
`check` 执行语法检查、README/包版本一致性校验、自动测试和 npm 发布包白名单校验;`market:check` 检查外部 DSH 市场 PR 与线上目录;`dev:ui` 启动不含真实凭据的本地 mock 市场。CI 使用 `--legacy-peer-deps` 安装显式测试依赖,DSH 运行期 peer 仍由 Host 提供。`v*` Tag 会触发 GitHub Actions;Tag 必须与 `package.json` 版本一致。Release 通过 npm Trusted Publishing (GitHub OIDC) 发布,不依赖长期 `NPM_TOKEN`。
|
|
107
142
|
|
|
108
143
|
公共 Registry 每次合并后会生成 `catalog-stats.json`;本仓库的定时工作流每小时同步中英文介绍和统计快照。npm 页面中的静态正文随版本发布更新,上方动态统计徽标则直接读取 Registry,可在不发布新 npm 版本时保持实时数量一致。
|
|
109
144
|
|
|
110
|
-
当前公开版本为 [`dsh-mcp-connector@0.2.
|
|
145
|
+
当前公开版本为 [`dsh-mcp-connector@0.2.29`](https://www.npmjs.com/package/dsh-mcp-connector),对应 [GitHub Release v0.2.29](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.29)。
|
|
111
146
|
|
|
112
147
|
版本能力与变更记录见 [CHANGELOG.md](CHANGELOG.md)。
|
|
113
148
|
Desktop 发版回归见 [docs/DESKTOP-E2E.md](docs/DESKTOP-E2E.md)。
|
package/docs/PLUGIN-UPDATE.md
CHANGED
|
@@ -25,7 +25,9 @@ DSH Market 适配器从 `GET /dsh-market/api/v1/capabilities` 开始,要求 `s
|
|
|
25
25
|
5. 完整性校验通过后,按 Provider 返回的激活结论展示“刷新生效”或重启提示。Web 且 Provider 明确允许进程重启时才展示“立即重启”;Desktop 等由外壳管理生命周期的宿主只提示用户重启,不自行杀进程。
|
|
26
26
|
6. Provider 保留恢复点时展示“回滚”。回滚仍由 Provider 执行,MCP连接器不直接修改 profile、lockfile 或 `node_modules`。
|
|
27
27
|
|
|
28
|
-
失败结果使用稳定代码区分正在运行的 Agent
|
|
28
|
+
失败结果使用稳定代码区分正在运行的 Agent、其他安装任务占用、发布安全等待、镜像同步、版本未变化、超时和权限拒绝,以及 `DOWNGRADE_DETECTED`、`RESOLVED_VERSION_MISMATCH`、`INVALID_UPDATE_RESULT` 三类完整性故障。`RELEASE_TOO_FRESH` 明确显示为约 24 小时的发布安全等待期,并提供“立即更新(跳过等待)”;真正的镜像同步故障保留独立提示,不再混用同一文案。
|
|
29
|
+
|
|
30
|
+
当 DSH Desktop 或其他宿主没有兼容 Update Provider 时,标题区直接展示绑定 npm 精确版本的 CLI 命令,例如 `dsh plugin --profile web add --config.minimumReleaseAge=0 dsh-mcp-connector@<目标版本>`,并提供复制按钮与 npm 页面入口。运行时会把 `<目标版本>` 替换为 npm 已发布的确切版本;命令中的单次覆盖只用于用户主动跳过本次发布安全等待。Connector 仍不自行执行包管理器命令。
|
|
29
31
|
|
|
30
32
|
## 安全边界
|
|
31
33
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# UI 素材说明
|
|
2
|
+
|
|
3
|
+
本目录用于保存 `dsh-mcp-connector` 的公开界面截图。素材于 2026-08-24
|
|
4
|
+
从本机 DSH `web` + `dsh-mcp-connector@0.2.18`(0.2.19 未改动市场 UI)验收环境采集;
|
|
5
|
+
远程 Registry 为当日 `main` 的 61 条描述,和 4 张随包卡片合并后市场显示 65 张。画面只展示
|
|
6
|
+
公开市场元数据、示例 Prompt 和工具名称/说明,不包含 OAuth Token、API Key、本机路径、
|
|
7
|
+
用户会话或查询结果。
|
|
8
|
+
|
|
9
|
+
仓库根目录的 [`screenshots.json`](../../screenshots.json) 按市场总览、连接器详情、工具发现、
|
|
10
|
+
JSON 导入的顺序声明这 4 张图片,供 awesome-dsh-plugin 和 DSH Market 的 App Store 风格详情页
|
|
11
|
+
直接采集。`npm run storefront:check` 会校验数量、相对路径、格式、重复项与文件存在性;
|
|
12
|
+
`npm run check` 已包含该门禁。
|
|
13
|
+
|
|
14
|
+
| 文件 | 展示内容 |
|
|
15
|
+
|---|---|
|
|
16
|
+
| `01-market-overview.jpg` | 65 张合并市场卡片(61 条 Registry + 4 张随包卡片)、推荐章节、9 分类和固定分类栏 |
|
|
17
|
+
| `02-connector-detail.jpg` | Seedream 第三方服务说明、精选 Prompt 和未连接状态 |
|
|
18
|
+
| `03-tool-discovery.jpg` | 北大法宝多 Server 工具数量、描述、搜索和独立滚动区 |
|
|
19
|
+
| `04-json-import.jpg` | Streamable HTTP / stdio JSON 导入与本机凭据提示 |
|
|
20
|
+
|
|
21
|
+
`../demo.gif` 由以上 4 个状态生成,时长 16 秒,分辨率 960×540。更新 UI 后应使用 1280×720
|
|
22
|
+
浏览器视口重新采集,并检查画面不包含凭据、本机路径、真实会话、查询结果或其他
|
|
23
|
+
不应公开的内容。若使用实机已安装连接器采集,只能展示公开工具名称/说明,不得展示
|
|
24
|
+
输入表单中的真实凭据或工具调用结果。
|
|
25
|
+
|
|
26
|
+
截图中的“已安装”数量和连接状态来自采集时的本机验收环境,仅用于展示交互,会因用户
|
|
27
|
+
安装情况、授权有效期和服务可用性而不同。
|
package/lib/client.js
CHANGED
|
@@ -135,6 +135,29 @@ window.__ModuleLoader__.load({
|
|
|
135
135
|
gap: 6px;
|
|
136
136
|
min-width: 0;
|
|
137
137
|
}
|
|
138
|
+
.mcpConnectorManualUpdate {
|
|
139
|
+
display: flex;
|
|
140
|
+
align-items: center;
|
|
141
|
+
gap: 6px;
|
|
142
|
+
min-width: 0;
|
|
143
|
+
flex: 1 1 360px;
|
|
144
|
+
}
|
|
145
|
+
.mcpConnectorManualCommand {
|
|
146
|
+
box-sizing: border-box;
|
|
147
|
+
min-width: 0;
|
|
148
|
+
max-width: 430px;
|
|
149
|
+
overflow-x: auto;
|
|
150
|
+
padding: 5px 8px;
|
|
151
|
+
color: #374151;
|
|
152
|
+
background: #f9fafb;
|
|
153
|
+
border: 1px solid #d1d5db;
|
|
154
|
+
border-radius: 8px;
|
|
155
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
|
|
156
|
+
font-size: 11px;
|
|
157
|
+
line-height: 1.35;
|
|
158
|
+
white-space: nowrap;
|
|
159
|
+
user-select: text;
|
|
160
|
+
}
|
|
138
161
|
.mcpConnectorUpdateStatus {
|
|
139
162
|
max-width: 240px;
|
|
140
163
|
overflow: hidden;
|
|
@@ -175,6 +198,7 @@ window.__ModuleLoader__.load({
|
|
|
175
198
|
.mcpConnectorUpdateButton:focus-visible { background: #3730a3; }
|
|
176
199
|
.mcpConnectorUpdateStatus { color: #bbf7d0; background: #14532d; }
|
|
177
200
|
.mcpConnectorUpdateStatus[data-tone="error"] { color: #fecaca; background: #7f1d1d; }
|
|
201
|
+
.mcpConnectorManualCommand { color: #e5e7eb; background: #111827; border-color: #4b5563; }
|
|
178
202
|
.mcpConnectorUpdateSecondary { color: #d1d5db; background: transparent; border-color: #4b5563; }
|
|
179
203
|
.mcpConnectorMarketClose { color: #c4c8d0; }
|
|
180
204
|
.mcpConnectorMarketClose:hover,
|
|
@@ -361,7 +385,8 @@ window.__ModuleLoader__.load({
|
|
|
361
385
|
const labels = {
|
|
362
386
|
AGENTS_RUNNING: "有任务正在运行,请结束后重试",
|
|
363
387
|
OPERATION_BUSY: "插件市场正在处理其他任务",
|
|
364
|
-
RELEASE_TOO_FRESH: "
|
|
388
|
+
RELEASE_TOO_FRESH: "新版本处于发布安全等待期(约 24 小时)",
|
|
389
|
+
MIRROR_SYNC_PENDING: "镜像尚未同步完整安装包",
|
|
365
390
|
VERSION_UNCHANGED: "下载后版本未变化",
|
|
366
391
|
DOWNGRADE_DETECTED: "已阻止版本降级",
|
|
367
392
|
RESOLVED_VERSION_MISMATCH: "下载版本与预期不一致",
|
|
@@ -373,6 +398,21 @@ window.__ModuleLoader__.load({
|
|
|
373
398
|
return labels[failure?.code] ?? failure?.message ?? "更新失败";
|
|
374
399
|
}
|
|
375
400
|
|
|
401
|
+
function manualUpgradeCommand(version) {
|
|
402
|
+
const parsed = parseClientVersion(version);
|
|
403
|
+
if (parsed === null) return null;
|
|
404
|
+
return `dsh plugin --profile web add --config.minimumReleaseAge=0 ${PLUGIN_PACKAGE_NAME}@${parsed.normalized}`;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
async function copyManualUpgradeCommand(command) {
|
|
408
|
+
if (typeof window.navigator?.clipboard?.writeText === "function") {
|
|
409
|
+
await window.navigator.clipboard.writeText(command);
|
|
410
|
+
return true;
|
|
411
|
+
}
|
|
412
|
+
window.prompt?.("请复制以下升级命令", command);
|
|
413
|
+
return false;
|
|
414
|
+
}
|
|
415
|
+
|
|
376
416
|
function parseClientVersion(value) {
|
|
377
417
|
if (typeof value !== "string") return null;
|
|
378
418
|
const normalized = value.trim().replace(/^v/i, "");
|
|
@@ -530,6 +570,7 @@ window.__ModuleLoader__.load({
|
|
|
530
570
|
const [updateStarting, setUpdateStarting] = (0, react.useState)(false);
|
|
531
571
|
const [rollbackRunning, setRollbackRunning] = (0, react.useState)(false);
|
|
532
572
|
const [restarting, setRestarting] = (0, react.useState)(false);
|
|
573
|
+
const [manualCommandCopied, setManualCommandCopied] = (0, react.useState)(false);
|
|
533
574
|
const frameRef = (0, react.useRef)(null);
|
|
534
575
|
const closeRef = (0, react.useRef)(null);
|
|
535
576
|
(0, react.useEffect)(() => {
|
|
@@ -600,6 +641,9 @@ window.__ModuleLoader__.load({
|
|
|
600
641
|
window.clearTimeout(pollTimer);
|
|
601
642
|
};
|
|
602
643
|
}, [open]);
|
|
644
|
+
(0, react.useEffect)(() => {
|
|
645
|
+
if (open) setManualCommandCopied(false);
|
|
646
|
+
}, [open, versionStatus?.latestVersion]);
|
|
603
647
|
(0, react.useEffect)(() => {
|
|
604
648
|
if (!open) return void 0;
|
|
605
649
|
let disposed = false;
|
|
@@ -788,7 +832,7 @@ window.__ModuleLoader__.load({
|
|
|
788
832
|
type: "button",
|
|
789
833
|
className: "mcpConnectorUpdateButton",
|
|
790
834
|
onClick: () => startUpdate(force),
|
|
791
|
-
children: force ? "强制重试" : "重试更新"
|
|
835
|
+
children: updateOperation.failure?.code === "RELEASE_TOO_FRESH" ? "立即更新(跳过等待)" : force ? "强制重试" : "重试更新"
|
|
792
836
|
}),
|
|
793
837
|
rollbackRunning && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
794
838
|
className: "mcpConnectorUpdateStatus",
|
|
@@ -887,12 +931,43 @@ window.__ModuleLoader__.load({
|
|
|
887
931
|
children: `一键更新到 v${providerUpdateCheck.latestVersion}`
|
|
888
932
|
});
|
|
889
933
|
}
|
|
934
|
+
const command = manualUpgradeCommand(versionStatus?.latestVersion);
|
|
935
|
+
if (command !== null) {
|
|
936
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
937
|
+
className: "mcpConnectorManualUpdate",
|
|
938
|
+
children: [
|
|
939
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", {
|
|
940
|
+
className: "mcpConnectorManualCommand",
|
|
941
|
+
title: command,
|
|
942
|
+
children: command
|
|
943
|
+
}),
|
|
944
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
945
|
+
type: "button",
|
|
946
|
+
className: "mcpConnectorUpdateButton",
|
|
947
|
+
onClick: () => {
|
|
948
|
+
copyManualUpgradeCommand(command).then((copied) => {
|
|
949
|
+
if (copied) setManualCommandCopied(true);
|
|
950
|
+
}, (error) => {
|
|
951
|
+
console.warn("[mcp-connector] copy upgrade command failed:", error);
|
|
952
|
+
window.prompt?.("请复制以下升级命令", command);
|
|
953
|
+
});
|
|
954
|
+
},
|
|
955
|
+
children: manualCommandCopied ? "已复制" : "复制升级命令"
|
|
956
|
+
}),
|
|
957
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
958
|
+
type: "button",
|
|
959
|
+
className: "mcpConnectorUpdateButton mcpConnectorUpdateSecondary",
|
|
960
|
+
onClick: () => window.open(NPM_PACKAGE_URL, "_blank", "noopener,noreferrer"),
|
|
961
|
+
children: "查看 npm"
|
|
962
|
+
})
|
|
963
|
+
]
|
|
964
|
+
});
|
|
965
|
+
}
|
|
890
966
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
891
967
|
type: "button",
|
|
892
968
|
className: "mcpConnectorUpdateButton",
|
|
893
|
-
title: `npm 已发布 v${versionStatus?.latestVersion}`,
|
|
894
969
|
onClick: () => openDshPluginMarket(actions),
|
|
895
|
-
children:
|
|
970
|
+
children: "查看更新方式"
|
|
896
971
|
});
|
|
897
972
|
};
|
|
898
973
|
const src = window.location.origin + "/mcp-connector/ui/";
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-mcp-connector",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.2.29",
|
|
4
|
+
"description": "Connect and manage MCP servers in DeepSeek Harness — a universal MCP connector and marketplace with OAuth 2.0 PKCE, API keys, stdio/HTTP, mcpServers JSON import, tools, and prompts. Maintained by Qichacha/QCC.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"exports": {
|
|
@@ -22,9 +22,12 @@
|
|
|
22
22
|
"docs/PLUGIN-UPDATE.md",
|
|
23
23
|
"docs/STDIO-SUPPORT.md",
|
|
24
24
|
"docs/USER-GUIDE.md",
|
|
25
|
+
"docs/screenshots",
|
|
25
26
|
"cordis.patch.yml",
|
|
26
27
|
"README.md",
|
|
27
28
|
"README.en.md",
|
|
29
|
+
"screenshots.json",
|
|
30
|
+
"CONTRIBUTING.md",
|
|
28
31
|
"CHANGELOG.md",
|
|
29
32
|
"LICENSE",
|
|
30
33
|
"install.sh",
|
|
@@ -34,18 +37,22 @@
|
|
|
34
37
|
],
|
|
35
38
|
"scripts": {
|
|
36
39
|
"test": "node --test",
|
|
37
|
-
"lint": "node --check lib/index.js && node --check lib/web.js && node --check lib/client.js && node --check lib/version-status.js && node --check lib/schema.js && node --check lib/catalog.js && node --check lib/prompts.js && node --check lib/probe.js && node --check lib/mcp-validation.js && node --check lib/mcp-http.js && node --check lib/migration.js && node --check lib/stores.js && node --check lib/grant-journal.js && node --check lib/oauth.js && node --check lib/grant-lifecycle.js && node --check lib/callback-server.js && node --check lib/mcp-provision.js && node --check lib/util.js && node --check lib/constants.js && node --check lib/tools.js && node --check lib/connectors/oauth-connector.js && node --check lib/connectors/manual-connector.js && node --check lib/connectors/json-connector.js && node --check scripts/probe-connector.mjs && node --check scripts/build-registry.mjs && node --check scripts/ui-harness.mjs && node --check scripts/check-market-registration.mjs && node --check scripts/sync-registry-stats.mjs",
|
|
40
|
+
"lint": "node --check lib/index.js && node --check lib/web.js && node --check lib/client.js && node --check lib/version-status.js && node --check lib/schema.js && node --check lib/catalog.js && node --check lib/prompts.js && node --check lib/probe.js && node --check lib/mcp-validation.js && node --check lib/mcp-http.js && node --check lib/migration.js && node --check lib/stores.js && node --check lib/grant-journal.js && node --check lib/oauth.js && node --check lib/grant-lifecycle.js && node --check lib/callback-server.js && node --check lib/mcp-provision.js && node --check lib/util.js && node --check lib/constants.js && node --check lib/tools.js && node --check lib/connectors/oauth-connector.js && node --check lib/connectors/manual-connector.js && node --check lib/connectors/json-connector.js && node --check scripts/probe-connector.mjs && node --check scripts/build-registry.mjs && node --check scripts/ui-harness.mjs && node --check scripts/check-market-registration.mjs && node --check scripts/check-readme-version.mjs && node --check scripts/check-storefront-screenshots.mjs && node --check scripts/sync-registry-stats.mjs",
|
|
38
41
|
"registry:build": "node scripts/build-registry.mjs",
|
|
39
42
|
"registry:validate": "node scripts/probe-connector.mjs catalog/catalog.json --validate-only",
|
|
40
43
|
"dev:ui": "node scripts/ui-harness.mjs",
|
|
41
44
|
"market:check": "node scripts/check-market-registration.mjs",
|
|
42
45
|
"registry:stats:sync": "node scripts/sync-registry-stats.mjs",
|
|
46
|
+
"docs:check": "node scripts/check-readme-version.mjs",
|
|
47
|
+
"storefront:check": "node scripts/check-storefront-screenshots.mjs",
|
|
43
48
|
"verify-pack": "node scripts/verify-pack.mjs",
|
|
44
|
-
"check": "npm run lint && npm test && npm run verify-pack",
|
|
49
|
+
"check": "npm run lint && npm run docs:check && npm run storefront:check && npm test && npm run verify-pack",
|
|
45
50
|
"prepublishOnly": "npm run check"
|
|
46
51
|
},
|
|
47
52
|
"keywords": [
|
|
48
53
|
"deepseek-harness",
|
|
54
|
+
"deepseek",
|
|
55
|
+
"harness",
|
|
49
56
|
"dsh",
|
|
50
57
|
"dsh-plugin",
|
|
51
58
|
"cordis",
|
|
@@ -54,6 +61,14 @@
|
|
|
54
61
|
"mcp-server",
|
|
55
62
|
"mcp-connector",
|
|
56
63
|
"mcp-marketplace",
|
|
64
|
+
"model-context-protocol",
|
|
65
|
+
"mcp-hub",
|
|
66
|
+
"mcp-manager",
|
|
67
|
+
"mcp-registry",
|
|
68
|
+
"mcp-tools",
|
|
69
|
+
"mcp-store",
|
|
70
|
+
"remote-mcp",
|
|
71
|
+
"streamable-http",
|
|
57
72
|
"connector",
|
|
58
73
|
"connection",
|
|
59
74
|
"connection-manager",
|
|
@@ -64,6 +79,8 @@
|
|
|
64
79
|
"agent-skills",
|
|
65
80
|
"skill-extension",
|
|
66
81
|
"ai-tools",
|
|
82
|
+
"llm-tools",
|
|
83
|
+
"ai-agents",
|
|
67
84
|
"oauth",
|
|
68
85
|
"oauth2",
|
|
69
86
|
"pkce",
|