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 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.27...HEAD
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
@@ -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 Connection Manager Marketplace for DeepSeek Harness
1
+ # MCP Connector and MCP Server Marketplace for DeepSeek Harness
2
2
 
3
- > A general-purpose MCP connector, plugin extension, and integration marketplace initiated and maintained by the Qichacha (QCC) team
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
- Browse and install MCP connectors from different providers in DeepSeek Harness Desktop. Connect MCP servers through OAuth, API key/URL configuration, JSON import, or a connector descriptor URL; discover tools and prompts, extend agent skills, start a new conversation, and manage installed connections.
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
  [![CI](https://github.com/duhu2000/dsh-mcp-connector/actions/workflows/ci.yml/badge.svg)](https://github.com/duhu2000/dsh-mcp-connector/actions/workflows/ci.yml)
14
14
  [![npm](https://img.shields.io/npm/v/dsh-mcp-connector.svg)](https://www.npmjs.com/package/dsh-mcp-connector)
15
+ [![npm downloads](https://img.shields.io/npm/dm/dsh-mcp-connector.svg)](https://www.npmjs.com/package/dsh-mcp-connector)
16
+ [![GitHub stars](https://img.shields.io/github/stars/duhu2000/dsh-mcp-connector?style=flat)](https://github.com/duhu2000/dsh-mcp-connector/stargazers)
17
+ [![GitHub forks](https://img.shields.io/github/forks/duhu2000/dsh-mcp-connector?style=flat)](https://github.com/duhu2000/dsh-mcp-connector/forks)
18
+ [![GitHub Release](https://img.shields.io/github/v/release/duhu2000/dsh-mcp-connector)](https://github.com/duhu2000/dsh-mcp-connector/releases/latest)
15
19
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
16
20
  [![Registry connectors](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fduhu2000%2Fdsh-mcp-connector-registry%2Fmain%2Fcatalog-stats.json&query=%24.registryCount&label=Registry%20connectors&color=5865f2)](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/catalog-stats.json)
17
21
  [![Marketplace cards](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fduhu2000%2Fdsh-mcp-connector-registry%2Fmain%2Fcatalog-stats.json&query=%24.marketCount&label=Marketplace%20cards&color=16a34a)](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
+ ![16-second MCP Connector walkthrough](https://raw.githubusercontent.com/duhu2000/dsh-mcp-connector/main/docs/demo.gif)
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
- ![16-second MCP Connector walkthrough](https://raw.githubusercontent.com/duhu2000/dsh-mcp-connector/main/docs/demo.gif)
41
-
42
69
  | Marketplace overview | Connector details and curated prompts |
43
70
  |---|---|
44
71
  | ![Marketplace overview](https://raw.githubusercontent.com/duhu2000/dsh-mcp-connector/main/docs/screenshots/01-market-overview.jpg) | ![Connector details](https://raw.githubusercontent.com/duhu2000/dsh-mcp-connector/main/docs/screenshots/02-connector-detail.jpg) |
@@ -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.24`](https://www.npmjs.com/package/dsh-mcp-connector), with [GitHub Release v0.2.24](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.24).
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连接器与连接管理市场(DeepSeek Harness 插件 / 扩展)
1
+ # MCP连接器:DeepSeek Harness MCP Server 连接与管理市场
2
2
 
3
- > 通用 MCP Connector / Connection Manager / Integration Marketplace,由企查查(Qichacha/QCC)团队发起并维护
3
+ > 连接、授权、发现和管理 MCP Server 的通用 MCP Connector 与 Marketplace,由企查查(Qichacha/QCC)团队发起并维护
4
4
 
5
- 在 DeepSeek Harness Desktop 中浏览和安装不同厂商的 MCP连接器,连接 MCP Server,通过 OAuth、API Key/URL 或 JSON 接入服务,发现工具与 Prompt,扩展 AI 技能,并管理已安装连接。
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
  [![CI](https://github.com/duhu2000/dsh-mcp-connector/actions/workflows/ci.yml/badge.svg)](https://github.com/duhu2000/dsh-mcp-connector/actions/workflows/ci.yml)
14
14
  [![npm](https://img.shields.io/npm/v/dsh-mcp-connector.svg)](https://www.npmjs.com/package/dsh-mcp-connector)
15
+ [![npm downloads](https://img.shields.io/npm/dm/dsh-mcp-connector.svg)](https://www.npmjs.com/package/dsh-mcp-connector)
16
+ [![GitHub stars](https://img.shields.io/github/stars/duhu2000/dsh-mcp-connector?style=flat)](https://github.com/duhu2000/dsh-mcp-connector/stargazers)
17
+ [![GitHub forks](https://img.shields.io/github/forks/duhu2000/dsh-mcp-connector?style=flat)](https://github.com/duhu2000/dsh-mcp-connector/forks)
18
+ [![GitHub Release](https://img.shields.io/github/v/release/duhu2000/dsh-mcp-connector)](https://github.com/duhu2000/dsh-mcp-connector/releases/latest)
15
19
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
16
20
  [![Registry connectors](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fduhu2000%2Fdsh-mcp-connector-registry%2Fmain%2Fcatalog-stats.json&query=%24.registryCount&label=Registry%20connectors&color=5865f2)](https://github.com/duhu2000/dsh-mcp-connector-registry/blob/main/catalog-stats.json)
17
21
  [![Marketplace cards](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fraw.githubusercontent.com%2Fduhu2000%2Fdsh-mcp-connector-registry%2Fmain%2Fcatalog-stats.json&query=%24.marketCount&label=Marketplace%20cards&color=16a34a)](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
+ ![MCP 连接器 16 秒演示](https://raw.githubusercontent.com/duhu2000/dsh-mcp-connector/main/docs/demo.gif)
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
- ![MCP 连接器 16 秒演示](https://raw.githubusercontent.com/duhu2000/dsh-mcp-connector/main/docs/demo.gif)
43
-
44
71
  | 市场总览 | 连接器详情与精选 Prompt |
45
72
  |---|---|
46
73
  | ![市场总览](https://raw.githubusercontent.com/duhu2000/dsh-mcp-connector/main/docs/screenshots/01-market-overview.jpg) | ![连接器详情](https://raw.githubusercontent.com/duhu2000/dsh-mcp-connector/main/docs/screenshots/02-connector-detail.jpg) |
@@ -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` 执行语法检查、自动测试和 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`。
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.24`](https://www.npmjs.com/package/dsh-mcp-connector),对应 [GitHub Release v0.2.24](https://github.com/duhu2000/dsh-mcp-connector/releases/tag/v0.2.24)。
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)。
@@ -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、其他安装任务占用、镜像同步、版本未变化、超时和权限拒绝,以及 `DOWNGRADE_DETECTED`、`RESOLVED_VERSION_MISMATCH`、`INVALID_UPDATE_RESULT` 三类完整性故障。可重试失败保留重试操作;Registry 刚发布但镜像仍未同步时,用户可在看到明确提示后选择强制重试。
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
 
@@ -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: `查看 v${versionStatus?.latestVersion} 更新方式`
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.27",
4
- "description": "General-purpose MCP connector, connection manager, plugin extension, and integration marketplace for DeepSeek Harness, initiated and maintained by Qichacha/QCC.",
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",
@@ -0,0 +1,6 @@
1
+ [
2
+ "docs/screenshots/01-market-overview.jpg",
3
+ "docs/screenshots/02-connector-detail.jpg",
4
+ "docs/screenshots/03-tool-discovery.jpg",
5
+ "docs/screenshots/04-json-import.jpg"
6
+ ]