前言¶
在 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 中顯示爲帶命名空間前綴的工具名。分類上在社區目錄中歸入「聯網工具」。
核心功能¶
- 遠程 Streamable HTTP:插件把流式 HTTP 連接交給內置 MCP 客戶端,不在本機
spawn子進程實現 Context7 協議。 - 庫解析與文檔查詢:智能體可先調用
resolve-library-id解析庫標識(除非已有 Context7 id,例如/vercel/next.js),再調用query-docs獲取文檔。 - 可選 API Key:匿名調用可用,但限流較低;在 context7.com/dashboard 創建密鑰後,以憑據名(默認環境/憑據引用
CONTEXT7_API_KEY)保存,僅通過Authorization: Bearer發往配置的url,不寫入cordis.patch.yml。 - 憑據變更自動重連:當同一憑據名的
credentials/reference-updated觸發時,插件會釋放子客戶端並重新連接。 - 調用超時:單次工具調用超時時間爲 60 秒(0.1.0 起非配置項)。
工具的名稱、 schema 與返回結果由遠端 MCP 提供,本包不重複實現業務邏輯。
工作原理簡述¶
經過上面的能力說明,連接鏈路可概括爲:
- 通過
ctx.credentials解析apiKeyEnv(默認CONTEXT7_API_KEY);憑據存儲優先於進程環境,空值不視爲錯誤。 - 請求配置的
url;有密鑰時只放在 Authorization 頭,不放在 URL 查詢串。 - 掛載一個
@deepseek-ai/dsh-mcp-client子實例,對外暴露遠端工具。 - 單次調用 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。推薦流程:
- 若尚未知道 Context7 id,先讓智能體調用
mcp__context7__resolve-library-id(實際前綴取決於serverName配置)。 - 再調用
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 客戶端已佔用serverNamecontext7。 - 返回 429:匿名限流;配置
CONTEXT7_API_KEY後等待重連。 serverName衝突:在 config 中改用其他serverName,工具對外名稱會隨之改變。
結尾¶
dsh-context7-mcp 把 Context7 託管文檔能力以標準 MCP 工具形態接入 DSH,適合在智能體工作流裏按需查庫文檔。更多元數據與安裝入口見社區目錄與倉庫: