dsh-context7-mcp:在 DeepSeek Harness 中对接 Context7 文档 MCP

前言

在 DeepSeek Harness(DSH)里做智能体开发时,查阅第三方库文档往往要走本地 npx 或自行拼接检索链路,版本也容易和项目里实际依赖不一致。Context7 提供托管 MCP 服务,可按库名或 Context7 id 拉取当前、与版本相关的文档。社区插件 dsh-context7-mcp(维护者 NingYuanLee)把该远程 MCP 接到 DSH 内置的 @deepseek-ai/dsh-mcp-client,工具以 mcp__context7__* 出现在同一会话里,无需在本机再起 Context7 进程。本文为第三方社区插件说明,非 DeepSeek 或 Context7 官方产品;安装与运行仍以 DSH 当前进程权限为准,使用前建议核对源码与 MIT 许可证。

这是什么

dsh-context7-mcp 是 Cordis 插件包(npm 名 dsh-context7-mcp,Cordis 行 id 为 context7-mcp)。它在 DSH 中连接 Context7 托管 MCP 服务器(默认端点 https://mcp.context7.com/mcp),注册远端发布的工具。发布时对应工具为 resolve-library-id 与 query-docs,在 Harness 中显示为带命名空间前缀的工具名。分类上在社区目录中归入「联网工具」。

核心功能

  1. 远程 Streamable HTTP:插件把流式 HTTP 连接交给内置 MCP 客户端,不在本机 spawn 子进程实现 Context7 协议。
  2. 库解析与文档查询:智能体可先调用 resolve-library-id 解析库标识(除非已有 Context7 id,例如 /vercel/next.js),再调用 query-docs 获取文档。
  3. 可选 API Key:匿名调用可用,但限流较低;在 context7.com/dashboard 创建密钥后,以凭据名(默认环境/凭据引用 CONTEXT7_API_KEY)保存,仅通过 Authorization: Bearer 发往配置的 url,不写入 cordis.patch.yml。
  4. 凭据变更自动重连:当同一凭据名的 credentials/reference-updated 触发时,插件会释放子客户端并重新连接。
  5. 调用超时:单次工具调用超时时间为 60 秒(0.1.0 起非配置项)。

工具的名称、 schema 与返回结果由远端 MCP 提供,本包不重复实现业务逻辑。

工作原理简述

经过上面的能力说明,连接链路可概括为:

  1. 通过 ctx.credentials 解析 apiKeyEnv(默认 CONTEXT7_API_KEY);凭据存储优先于进程环境,空值不视为错误。
  2. 请求配置的 url;有密钥时只放在 Authorization 头,不放在 URL 查询串。
  3. 挂载一个 @deepseek-ai/dsh-mcp-client 子实例,对外暴露远端工具。
  4. 单次调用 60 秒超时;连接断开时遵循 MCP 客户端自有重连策略。

安装与启用

发布到 npm 后,在指定 profile 下安装(资料中的官方命令):

dsh plugin --profile web add dsh-context7-mcp

包声明了 dsh.bundle.patch,dsh plugin add 会把 bundle 写入对应 profile。若当前会话看不到 mcp__context7__* 工具,需要重启 DeepSeek Harness。

可选凭据:在插件设置中配置,或在启动 DSH 的环境中导出与 apiKeyEnv 同名的变量(默认即 CONTEXT7_API_KEY)。保存或清除凭据会触发重连。

环境要求(以 README 与 package.json 为准):

项 要求
Node >=22.19.0
dsh >=0.2.1-rc.2 <0.3.0-0 或 >=0.2.2-0 <0.3.0-0
已验证 dsh 0.2.2-rc.1
依赖能力 credentials、tools、随 DSH 提供的 @deepseek-ai/dsh-mcp-client

当前包版本为 0.1.2,许可证 MIT。

配置项

在 profile 中可通过 patch 覆盖整个 config 对象(后续 patch 会整体替换,需重复保留仍要使用的字段):

- id: context7-mcp
  config:
    apiKeyEnv: CONTEXT7_API_KEY
    url: https://mcp.context7.com/mcp
    serverName: context7
字段 默认值 含义
apiKeyEnv CONTEXT7_API_KEY 凭据引用名,密钥不落盘到本配置
url https://mcp.context7.com/mcp 远程 MCP 端点,仅 http/https,不在 URL 中带密钥
serverName context7 工具命名空间:mcp__<serverName>__<tool>,须匹配 [A-Za-z0-9_-]{1,32} 且在同作用域 MCP 客户端中唯一

典型用法

向智能体提问时,按 Context7 约定指明库名或 Context7 id。推荐流程:

  1. 若尚未知道 Context7 id,先让智能体调用 mcp__context7__resolve-library-id(实际前缀取决于 serverName 配置)。
  2. 再调用 mcp__context7__query-docs 拉取与问题相关的文档片段。

插件不向磁盘写入业务数据;卸载时断开 MCP 并注销工具,但不会删除已保存的 CONTEXT7_API_KEY 凭据。

卸载命令:

dsh plugin --profile <name> remove dsh-context7-mcp

适用场景与注意

适合:需要在 DSH 会话内查最新、带版本语境的库文档,且希望避免本地再跑一套 Context7 MCP 进程的开发者。

安全与隐私(README SECURITY 摘要):

  • 密钥仅发往配置的端点,日志中对含密钥的客户端错误做脱敏。
  • 库名与文档相关问题会发送到 Context7;插件不直接读取凭据文件。
  • 社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,插件亦不代表 Context7 官方集成。

排错:

  • 看不到 mcp__context7__*:连接被拒,或另一 MCP 客户端已占用 serverName context7。
  • 返回 429:匿名限流;配置 CONTEXT7_API_KEY 后等待重连。
  • serverName 冲突:在 config 中改用其他 serverName,工具对外名称会随之改变。

结尾

dsh-context7-mcp 把 Context7 托管文档能力以标准 MCP 工具形态接入 DSH,适合在智能体工作流里按需查库文档。更多元数据与安装入口见社区目录与仓库:

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

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

小夜