DeepSeek Harness plugin

dsh-mcp-adapter

MCP adapter for DeepSeek Harness — one proxy tool instead of dumping every MCP schema into context.

Jump to install

Source facts

Repository
NexusAgentX/dsh-mcp-adapter
Latest update
Aug 14, 2026
Category
Tools & Capabilities
GitHub stars
0
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/NexusAgentX/dsh-mcp-adapter
Plugin: dsh-mcp-adapter
Author: NexusAgentX

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

dsh-mcp-adapter

Use MCP servers with DeepSeek Harness without burning the context window.

One mcp proxy tool. Lazy server start. On-demand search / describe / call. Configure from the Web /mcp menu.

English | [中文](#中文)

Why this exists

DeepSeek Harness already ships @deepseek-ai/dsh-mcp-client. That client connects at startup and registers every advertised MCP tool as a native mcp__<server>__<tool> function. Schema cost is paid on every request.

This adapter follows the pi-mcp-adapter contract instead:

  • one mcp proxy tool instead of hundreds of schemas
  • lazy server start
  • on-demand search / describe / call
  • standard .mcp.json discovery, plus a Web /mcp menu that can write the project file
  • optional directTools promotion for hot-path tools
  • metadata cache so search works before a live connect

It is an independent plugin. It is not affiliated with DeepSeek AI.

Do not mount this adapter and @deepseek-ai/dsh-mcp-client against the same servers. They would double-connect and fight over names.

Install

dsh plugin --profile web add dsh-mcp-adapter

Restart dsh web and hard-refresh the browser. The package is dual-face: the Host half registers tools and commands; the Web client half adds the /mcp popup and MCP tool cards.

There is no MCP form under Settings → Plugins. Official plugin settings are an allowlist; out-of-tree plugins cannot register a card there. Configuration happens in the /mcp menu or in JSON files.

Web UI (primary)

In Chat, type /mcp:

MenuWhat it does
Status / Sources / PromptsInspect state
DeepWiki, Context7, Notion, GitHub, Chrome DevToolsOne-click add to project .mcp.json
server · Connect / AuthorizeConnect, or open the OAuth browser flow
server · Disable / RemoveConfirm, then stop or delete

Custom server (also writes .mcp.json and reloads in-process):

/mcp add docs url=https://mcp.example.com/mcp
/mcp add fs command=npx args=-y,@modelcontextprotocol/server-filesystem,/tmp

Then ask the model to mcp({ search: "screenshot" }). Tool cards use the same DisclosureRow / StateDot / SearchBlock chrome as first-party Skill and Tool rows. approveTools uses the Chat Ask dialog.

File config (shared / power user)

Preferred project file is still .mcp.json if you want the same servers in Cursor or other hosts:

{
  "mcpServers": {
    "chrome-devtools": {
      "command": "npx",
      "args": ["-y", "chrome-devtools-mcp@1.6.0"]
    }
  }
}
FilePurpose
~/.config/mcp/mcp.jsonUser-global shared MCP config
~/.agents/mcp.jsonUser-global tool-agnostic MCP config
~/.agents/mcp/mcp.jsonUser-global tool-agnostic MCP config
.mcp.jsonProject-local shared MCP config (Web add/remove writes here)
$DSH_HOME/mcp.jsondsh global override (~/.dsh/mcp.json by default)
.dsh/mcp.jsondsh project override

Later files win. /mcp disable and /mcp enable write only the disabled field to .dsh/mcp.json. They never copy credentials.

Host-specific configs (Cursor, Claude Code, Codex, OpenCode, Windsurf, VS Code) are detected by dsh-mcp-adapter init and /mcp list. They are not loaded unless you set settings.hostConfigDiscovery to "on" or list them in imports.

{
  "imports": ["cursor"],
  "settings": {
    "hostConfigDiscovery": "off",
    "toolPrefix": "server",
    "idleTimeout": 10
  },
  "mcpServers": {}
}

Server options

{
  "mcpServers": {
    "my-server": {
      "command": "npx",
      "args": ["-y", "some-mcp-server"],
      "lifecycle": "lazy",
      "idleTimeout": 10,
      "requestTimeoutMs": 30000,
      "directTools": ["search"],
      "includeTools": ["search", "get_*"],
      "excludeTools": ["admin_*"],
      "searchKeywords": {
        "search": ["find", "lookup"]
      }
    }
  }
}
FieldMeaning
lifecyclelazy (default), eager, keep-alive, lazy-keep-alive
idleTimeoutMinutes before an idle lazy server is closed (default 10, 0 disables)
directToolstrue or a name list — register those tools as native dsh tools
url / headers / bearerToken / bearerTokenEnvStreamable HTTP; SSE fallback on 404/405
auth / oauth"oauth" or "bearer"; OAuth tokens go in the OS credential store
socketrmcp-mux Unix-domain socket (mutually exclusive with command / url)
approveToolstrue or globs — Chat Ask before those tools run
disabledKeep the entry visible but do not connect

Model tools

mcp({ search: "screenshot" })
mcp({ describe: "chrome-devtools_take_screenshot" })
mcp({ tool: "chrome-devtools_take_screenshot", args: { format: "png" } })
mcp({ connect: "chrome-devtools" })
mcp({ action: "auth-start", server: "notion" })
mcp({ action: "auth-complete", server: "notion", args: { redirectUrl: "http://localhost:.../callback?code=..." } })
mcp({ prompt: "create_plan", server: "agent-board", args: "harden retry policy" })

args can be a JSON object or a JSON string. mcpScript can loop / search / call several MCP tools in one JavaScript request.

Human commands

/mcp
/mcp status
/mcp list
/mcp json
/mcp setup
/mcp prompts
/mcp add-preset <deepwiki|context7|notion|github|chrome-devtools>
/mcp add <name> url=<url>
/mcp add <name> command=<cmd> [args=a,b] [auth=oauth]
/mcp connect <server>
/mcp auth <server>
/mcp enable <server>
/mcp disable <server>
/mcp remove <server>

CLI

dsh-mcp-adapter init
dsh-mcp-adapter status

Status

Piece0.6.3
mcp proxy + lazy lifecycle + metadata cacheyes
Web /mcp configure / connect / authyes
Web cards (DisclosureRow / SearchBlock)yes
Web Ask for approveToolsyes
OAuth, prompts, mcpScript, Agent Plugins, socketsyes
Settings → Plugins formno (host allowlist)
elicitation / sampling / MCP UI appsnot in dsh host yet

License

[MIT](LICENSE)

Inspired by pi-mcp-adapter (MIT). See [NOTICE](NOTICE).

---

中文

DeepSeek Harness 用的 MCP 适配器:一个代理工具,按需搜索 / 描述 / 调用,不把每个 MCP schema 塞进上下文。

配置入口是 Web 的 /mcp,不是 Settings。 官方插件设置页不允许外部插件挂表单。

dsh plugin --profile web add dsh-mcp-adapter

重启 dsh web,硬刷新,在输入框敲 /mcp

  • 一键添加 DeepWiki / Context7 / Notion / GitHub / Chrome DevTools(写入项目 .mcp.json,立刻生效)
  • 对已有 server:连接、授权、停用、移除
  • 自定义:/mcp add docs url=https://…/mcp add fs command=npx args=-y,pkg

然后让模型 mcp({ search: "screenshot" })。卡片和官方 Skill / Tool 行同一套 DisclosureRow / StateDot / SearchBlock

也可以继续用手写 .mcp.json / ~/.config/mcp/mcp.json,和其他 MCP 宿主共用。不要和 @deepseek-ai/dsh-mcp-client 挂同一批 server。