# dsh-cert-mcp [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE) [![DSH plugin](https://img.shields.io/badge/dsh--plugin-✅-green)](https://github.com/topics/dsh-plugin) [![Gitee](https://img.shields.io/badge/Gitee-mirror-c71d23?logo=gitee)](https://gitee.com/perrylink/dsh-cert-mcp) [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-cert-mcp?label=version)](https://github.com/PerryLink/dsh-cert-mcp/releases) [![npm version](https://img.shields.io/npm/v/%40perrylink%2Fdsh-cert-mcp)](https://www.npmjs.com/package/@perrylink/dsh-cert-mcp) [![npm downloads](https://img.shields.io/npm/dm/%40perrylink%2Fdsh-cert-mcp)](https://www.npmjs.com/package/@perrylink/dsh-cert-mcp) [![dsh-cert-mcp MCP server](https://glama.ai/mcp/servers/PerryLink/dsh-cert-mcp/badges/score.svg)](https://glama.ai/mcp/servers/PerryLink/dsh-cert-mcp) [![dsh-cert-mcp MCP server](https://glama.ai/mcp/servers/PerryLink/dsh-cert-mcp/badges/card.svg)](https://glama.ai/mcp/servers/PerryLink/dsh-cert-mcp) [English](README.md) · [简体中文](README-zh.md) · [Español](README-es.md) · [Português](README-pt.md) · [हिन्दी](README-hi.md) 只读 [MCP](https://modelcontextprotocol.io) 服务器,对外暴露 [dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification) 注册表:DeepSeek Harness(DSH)插件的认证等级、快照日期与五维证据。零运行时依赖,stdio 传输。 ## 工具 | 工具 | 输入 | 返回 | |---|---|---| | `get_certification` | `owner`、`repo` | 完整认证记录(等级、快照、五个维度、否决项、备注)或「无记录」 | | `list_certified` | — | 公开注册表的全部条目:仓库 / 等级 / 快照 | | `certification_spec` | — | 规范 v1 摘要:五个维度、等级刻度、否决规则 | 内嵌快照位于 `data/certified.json`(由认证仓同步而来),服务器最多每五分钟从公开注册表刷新一次。不写入、不涉及密钥、不执行代码。 ## 安装 ```sh git clone https://github.com/PerryLink/dsh-cert-mcp cd dsh-cert-mcp node src/index.js # stdio 服务器 ``` 也可以直接从已发布的 npm 包运行:`npx @perrylink/dsh-cert-mcp`。 ### 在 MCP 客户端中注册 Claude Code: ```sh claude mcp add dsh-cert -- node /src/index.js ``` Claude Desktop(`claude_desktop_config.json`): ```json { "mcpServers": { "dsh-cert": { "command": "node", "args": ["/src/index.js"] } } } ``` DSH:通过 [dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel) 以 stdio 服务器方式添加,或使用任何支持 `stdio` 的 MCP 客户端。 ### 作为 DSH bundle 安装 本包声明了 `dsh.bundle.patch` → `cordis.patch.yml`,因此也可作为 DeepSeek Harness bundle 安装: ```sh # git 通道(main 最新) dsh plugin --profile web add "github:PerryLink/dsh-cert-mcp#main" # npm 通道(已发布版本) dsh plugin --profile web add @perrylink/dsh-cert-mcp ``` 插入的 row 通过标准 Cordis 插件契约加载本包:host 半边是普通 ESM 模块,具名导出 `name`、`inject` 与 `apply(ctx)`。本包不含浏览器 UI,因此没有 `dsh.client` 声明。 ```js // bundle 入口(host 半边)—— patch row 加载的契约 export const name = '@perrylink/dsh-cert-mcp' export const inject = ['tools'] // 宿主工具面,由 dsh-tools 提供 export function apply(ctx) { // 注册只读认证查询面 // (get_certification / list_certified / certification_spec) } ``` **host 半边需要 `tools` 服务**(由 `@deepseek-ai/dsh-tools` 提供)。缺少该服务的 profile 不会静默丢失工具:Cordis 会把这个 row 停在 `PENDING`,在 profile 的插件列表里看得见。除此之外不需要任何东西——没有配置键、没有凭据,加载期也不联网。 **两个半边,同一条数据路径。** bundle row 与 stdio 服务器是同一份 `handleRequest` 核心的两个入口。server 半边是独立进程,任何 MCP 客户端都能拉起(`node src/index.js`),它**不在插件路径上**:安装本 bundle 不会启动它,卸载本 bundle 也不会碰它;反过来 `npx @perrylink/dsh-cert-mcp` 不会在 DSH 工具面上注册任何东西。 卸载:`dsh plugin --profile web remove @perrylink/dsh-cert-mcp`(或从 profile patch 里删掉该 row)。上面的独立 stdio MCP 服务器对任何 MCP 客户端照旧可用。 ## 为什么需要它 DeepSeek Harness 官方仓不运营插件注册表,也不接受外部 PR;发现渠道是 `dsh-plugin` GitHub topic 与社区列表,而它们都不做认证。`dsh-plugin-certification` 把「这个插件我能不能装」变成可复现的五维检查(清单、构建卫生、供应链 Scorecard、发布溯源、沙箱安装冒烟),并给出公开注册表与 README 徽章。本 MCP 服务器是同一份数据的 agent 界面:agent 在推荐或安装某个插件之前,可以先查它的认证记录。 ## 注册表 数据源:[PerryLink/dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification) —— `data/certified.json`,规范 v1。 ## 兼容性 - Node `^22.19.0 || >=24.0.0`。 - DSH `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0 || >=0.1.6-0 <0.2.0`(声明在 `engines.dsh`,并带 `dsh.manifestVersion: 1`)。 - peer:`@deepseek-ai/cordis` `^4.0.2`。host 半边运行时另需 `tools` 服务;stdio 半边除 Node 外什么都不需要。 ## 开发 ```sh pnpm install pnpm run typecheck # 唯一类型尺子:对已发布 host 面做 checkJs pnpm test # JSON-RPC 冒烟 + 真 Cordis 运行时套件 pnpm pack # 发布用 tarball ``` 运行时套件挂载**真实**的 `SystemPrompt`/`ToolRuntime` 注册表,断言:挂载本包会把三个认证工具放进 `ctx.tools.schemas()`;释放 fiber 后它们消失;缺少 `tools` 服务的上下文会让插件停在 `PENDING`。验收**刻意不用** `dsh --dump-config`:在那里,已挂载的 row 与 pending 的 fiber 看起来一模一样。 本仓**刻意只有一把类型尺子**:`@deepseek-ai/*` 经本仓自己的 `node_modules`(钉住的 devDependencies,即已发布线)解析,且本包不声明任何 DSH peer,因此第二份 `tsc` 配置只会是量同一类型宇宙的同一条命令。`typecheck:ci` 脚本作为历史 no-op 副本保留(它唯一的额外键是空 `paths: {}`),只为兼容既有引用,不是第二个类型面。独立的第二份证据是上面的运行时挂载门。 ## PerryLink DSH 插件家族 本项目是 [PerryLink](https://github.com/PerryLink) 维护的 [40 个 DeepSeek Harness 插件](https://github.com/PerryLink)之一。如果它帮到了你,其它插件大概也会: | 插件 | 一句话 | |---|---| | **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | 审批链上的第二模型自动复核,默认失败关闭 | | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | 强/廉模型自动分层路由,带确定性风险护栏与 `/tier` 命令 | | **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | 可持久化的后台子代理,带 Web UI 侧栏、消息与中断 | | **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | DeepSeek Harness 的成本治理:预算、碳排与延迟集中在一个面板 | | **[dsh-catalog](https://github.com/PerryLink/dsh-catalog)** | PerryLink 家族的 DSH Desktop Market 标准目录源 | | **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | 会话 + 工作区 + 配置的统一检查点,一条 `/rewind` 回退 | | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | 把 Claude Code、Codex、OpenCode、Hermes 的会话/记忆/技能迁入 DSH | | **[dsh-click](https://github.com/PerryLink/dsh-click)** | 跨平台原生桌面控制,Windows 优先 | | **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | Web 输入框的终端式历史:方向键与 Ctrl+R 搜索 | | **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | 确定性的数据集剖析、清洗与引用核验 | | **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | 面向 DeepSeek Harness 的提示注入、越狱与密钥外泄防御 | | **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | 工程纪律护栏:需求拷问、测试门、对抗式复核 | | **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | DeepSeek Harness 的统一静态图像生成路由 | | **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | 只读性能诊断:负载、溢写、压缩与缓存命中率 | | **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | 中国公募基金研究,带封存可追溯的来源快照 | | **[dsh-github](https://github.com/PerryLink/dsh-github)** | GitHub PR/issue/CI 集成,所有写操作都过审批门 | | **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | 行业与公司研究包:产业链图、政策时间线、公司卡片 | | **[dsh-kit](https://github.com/PerryLink/dsh-kit)** | 一条命令装齐核心家族成员的起步包 | | **[dsh-library](https://github.com/PerryLink/dsh-library)** | 本地文档知识库:混合检索与带引用的注入 | | **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | 本地 Ollama 模型发现与按任务路由,可回落云端 | | **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | LSP 诊断、格式化、补全、代码操作、符号与重命名 | | **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | 模型边界上的 PII 遮罩,host 侧保留还原表 | | **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | MCP 管理控制台:`/mcp` 命令、设置页与试调用 | | **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | 过审批门的跨会话记忆协议(`ctx.memory` + SQLite) | | **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | 从会话事件流导出 OpenTelemetry 与 Langfuse 遥测 | | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | 运行期可切换的模型输出风格 | | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | 声明式 allow/deny/ask 规则与进程级网络策略 | | **[dsh-plugin-certification](https://github.com/PerryLink/dsh-plugin-certification)** | 社区认证注册表:可复现核验的等级与徽章 | | **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | 面向 DSH 插件的零依赖静态 + 沙箱冒烟检测器 | | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | 插件开发知识库、agent 技能与 `dsh-plugin-dev` CLI 工具链 | | **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | PerryLink DSH 插件共享的零运行时依赖工具箱 | | **[dsh-plugin-portal](https://github.com/PerryLink/dsh-plugin-portal)** | 零依赖静态门户,把整个插件家族渲染成一页 | | **[dsh-plugin-upgrade-015](https://github.com/PerryLink/dsh-plugin-upgrade-015)** | 已合并的 `0.1.3-alpha.1` → `0.1.5-rc.1` 升级走廊卡 + 零依赖接缝扫描器 | | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | 多通道审批/提问桥:微信、Telegram、飞书 + 会话控制台 | | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | 可验证研究报告:证据账本、清单封存、逐条结论判定 | | **[dsh-score](https://github.com/PerryLink/dsh-score)** | 多维插件质量评分与有证据支撑的排行榜 | | **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | 在 Web 侧栏置顶会话与工作区,每钉一色 | | **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | 基于 git 的跨设备会话同步,冲突保留双方 | | **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | 安全审计技能包与 `plugin_vet` 供应链门 | | **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | 语音优先的会话回路:语音转文字输入、文字转语音回复 | | **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | 跨会话团队房间:共享消息总线、任务板与时间线 | | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | 隔离的安装并冒烟试驾,带通过/失败矩阵 | | **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | TickTick/滴答清单桥:会话头部面板 + 十一个 agent 工具 | | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | 厂商参数翻译与确定性 JSON 修复 | | **[dsh-wechat](https://github.com/pan17/dsh-wechat)** | 微信 ↔ DSH 桥(腾讯 iLink 机器人),与 [pan17](https://github.com/pan17/dsh-wechat) 共同开发、由其托管仓库 | | **[dsh-personal-directive](https://github.com/PerryLink/dsh-personal-directive)** | 个人指令注入器,带顶栏开关(liucai2026/dsh-personal-directive 的 fork) | ## 许可证 Apache-2.0。列表或等级是证据记录,不是安全保证:插件以你的权限运行在你的 DSH 进程内。