在 DeepSeek Harness (DSH) 中接入 GitHub MCP Server

August 14, 2026 · View on GitHub

把 GitHub 官方 MCP Server 接入 DeepSeek Harness,让 agent 获得读写 GitHub 仓库的原生能力。 本教程基于 Windows 10 + DeepSeek Harness (dsh) + Clash 代理环境的实战记录。

背景

DeepSeek Harness (DSH) 自带 @deepseek-ai/dsh-mcp-client 插件,支持 stdiostreamable-http 两种 MCP 传输。接入后,MCP 服务器的工具会以 mcp__<serverName>__<toolName> 的形式注册为 agent 的原生工具。

本教程使用 本地 stdio 模式 运行 GitHub 官方 MCP Server 二进制,这是最稳定的方案——它不依赖 agent 主进程的网络栈,可独立配置代理,避免与模型 API 的网络路径冲突。

前置条件

依赖说明
DeepSeek Harness已安装并运行(Web 模式 dsh web
GitHub 账号用于创建 Personal Access Token
github-mcp-server 二进制GitHub Releases 下载对应平台的版本
(可选)Clash 等代理国内网络访问 GitHub 需要

步骤 1:创建 GitHub Fine-grained PAT

  1. 打开 https://github.com/settings/personal-access-tokens/new

  2. 填写:

    • Token namedsh-github-mcp
    • Expiration:按需(建议 90 天)
    • Repository accessAll repositories(或指定仓库)
  3. Permissions(最小权限原则,按需勾选):

    权限等级说明
    ContentsRead and write读写代码、commit、push
    IssuesRead and write查看/创建 Issue
    Pull requestsRead and write查看/创建 PR
    MetadataRead-only仓库基础信息(自动必选)
    Administration不勾防止删除/转让仓库
  4. 点击 Generate token,复制 github_pat_xxx...(只显示一次)

  5. 设置环境变量(PowerShell):

    [Environment]::SetEnvironmentVariable("GITHUB_PERSONAL_ACCESS_TOKEN", "github_pat_你的token", "User")
    

步骤 2:下载 github-mcp-server 二进制

https://github.com/github/github-mcp-server/releases 下载最新 release 对应平台的压缩包(如 github-mcp-server_Windows_x86_64.zip),解压后记录二进制绝对路径。

坑 1:国内网络直接下载 release 经常中断(文件 8MB+ 会被截断)。如果 github.com 下载不稳定,可用 curl -L 跟随重定向链下载,或用代理下载。

验证二进制可用:

# Windows
github-mcp-server.exe --version
# 应输出 Version: x.y.z

步骤 3:修改 DSH profile 配置

编辑 profile 的 patch 文件:

# Windows 默认路径
C:\Users\Administrator\.dsh\profiles\web\cordis.patch.yml

写入:

# Your patch layer for this dsh profile, applied after every bundle layer
- insert:
    - id: mcp-github
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: github
        transport: stdio
        command: C:\path\to\github-mcp-server.exe
        args: ['stdio']
        env:
          GITHUB_PERSONAL_ACCESS_TOKEN: !!js process.env.GITHUB_PERSONAL_ACCESS_TOKEN
        toolCallTimeoutMs: 60000

坑 2(关键):新插件条目必须写在 - insert: 块里,不能直接写 - id: xxx 顶层条目。加载器只认 insert 列表和按 id 覆盖的条目,裸条目会被静默忽略。

坑 3(关键):patch 引用的插件必须出现在 profile 的依赖清单里。编辑 profile 的 package.json

{
  "name": "dsh-profile-web",
  "private": true,
  "dependencies": {
    "@deepseek-ai/dsh-mcp-client": "0.1.0-rc.6"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app"
      ]
    }
  }
}

步骤 4:重启 DSH

必须在新的终端窗口里启动,确保读到新设置的环境变量:

# 1. 先验证环境变量(必须看到 token 再继续)
echo %GITHUB_PERSONAL_ACCESS_TOKEN%

# 2. 杀掉旧 DSH 进程
taskkill /F /PID <旧PID>

# 3. 重启
dsh web

坑 4(关键)setx 写入的环境变量不会自动生效到已打开的窗口。必须关掉所有旧窗口,新开一个窗口再启动 DSH,否则进程读不到 token。

步骤 5:验证

  1. 检查 DSH 是否正确 spawn 了 MCP 二进制

    Get-Process -Name "github-mcp-server"
    # 应能看到进程,且父进程是 DSH 的 node 进程
    
  2. 验证 MCP 握手(可选,手动测试 stdio 协议):

    # 向二进制发送 initialize + tools/list
    echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | github-mcp-server.exe stdio
    
  3. 直接对话验证:让 agent"查看我的 GitHub 账户",如果返回账户信息,说明 mcp__github__* 工具已生效。

常见坑汇总

#现象原因解决
1release 下载不完整网络对 github.com 不稳curl -L 跟重定向或走代理
2MCP 工具没出现,配置"看起来对"patch 裸条目被忽略必须用 - insert:
3插件无法解析依赖未在 package.json 声明在 profile package.json 添加依赖
4重启后 token 读不到setx 不刷新已开窗口新开窗口再启动
5模型 API 报错(如 DeepSeek 请求失败)全局 HTTPS_PROXY 干扰了模型 API别用全局代理;stdio 模式可独立配置代理
6远程 streamable-http 连不上agent 主进程的 fetch 不走系统代理用本地 stdio 模式替代

本地 stdio vs 远程 streamable-http

维度本地 stdio远程 streamable-http
连接agent spawn 本地二进制agent 直连远程 URL
代理二进制独立环境变量,可单独配依赖 agent 主进程网络栈
影响面不影响 agent 其他网络请求全局代理会干扰模型 API
适用国内网络、有代理需求网络直连顺畅的环境

推荐优先用本地 stdio 模式,隔离性最好。

参考资料


本教程来自实际配置记录,基于 DeepSeek Harness + Windows 环境。