Skip to main content
MCP server CX Codex

dsh-baton — Claude Code MCP server for DeepSeek Harness tasks

Hands a task from Claude or Claude to a local DeepSeek Harness and brings the answer back once the run ends. Useful when a second agent should take the heavy part.

Install into Claude Code · Platform CLI All methods and platforms ↓
claude mcp add dsh-baton -- npx -y dsh-baton-mcp
Open on GitHub

What dsh-baton does

The server speaks stdio to the client. Tool calls travel over an owner-only local socket into the dsh-baton-host plugin inside Harness, and that plugin drives the session in the desktop UI. You watch the work happen there, each message tagged with whoever sent it — Claude or Claude. A headless dsh path stays available as the fallback when the plugin is off.

Tools cover three areas. Workspaces: list, create, rename. Sessions: list, read, activity, rename. Runs: send, status, wait, cancel, list. dsh_send returns a run_id right away. If the session is mid-turn, followup queues your message for later and steer drops it into the current turn. Claude can block inside dsh_wait for up to 270 s per call; other clients get 50 s. An unfinished wait answers timed_out with the state alone, so call again.

You need DeepSeek Harness at 0.2.1-rc.2 or newer, signed in, and either Claude or Claude on the calling side. Node.js is not part of the picture. Should Harness report a failed registration, npx -y dsh-baton-mcp setup repeats it — that route does need Node.js ≥ 22.15. Claude asks for approval on MCP tool calls, and the dsh-baton tools stay blocked until you grant it; unattended codex exec runs want --approve-for-me.

What it helps with

  • move a long task from Claude into DeepSeek Harness without leaving the chat
  • watch a run unfold in the Harness UI and see which client sent each message
  • queue a second message while the agent is still working on the current turn
  • block until the job finishes and pull the final reply back
  • answer the questions a run raises partway through

Example prompts for the agent

  • Call dsh_list_workspaces and show me what I have
  • Send this log-cleanup job to my session and wait for it with dsh_wait
  • Push a clarification into the busy session with steer so the agent picks it up mid-turn

How to install dsh-baton

Platform CLI

claude mcp add dsh-baton -- npx -y dsh-baton-mcp

Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more

Questions about dsh-baton

How do I install dsh-baton in Claude Code?

Run claude mcp add dsh-baton -- npx -y dsh-baton-mcp. For Claude, the same call goes through codex mcp add.

What does dsh-baton do?

It passes a task from an MCP client into DeepSeek Harness and returns the result when the run ends. Along the way you get status, waiting, cancellation and answers to the run's questions.

What has to be in place before it works?

DeepSeek Harness 0.2.1-rc.2 or newer, signed in, with Claude or Claude on the other end.

Similar MCP servers

All MCP servers for Agent setup: memory, context, orchestration →

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor