How to add a memory MCP plugin to DeepSeek Harness

Configuration & UsagePublished 2026-10-02Author: DeepSeek Plugin Market
DeepSeek HarnessDSH pluginMCPmemory pluginstdio
DeepSeek Harness connects MCP memory servers with dsh-mcp-client: local ones use stdio, remote ones streamable-http, tools named mcp__<serverName>__<tool>.

DeepSeek Harness connects MCP memory servers through @deepseek-ai/dsh-mcp-client: local servers use transport: stdio with command and args, remote ones use streamable-http with url and headers, and the model side sees tools named mcp__<serverName>__<tool>. Three reference configs ship for memorix, mcp-reference-memory and engram, all off by default and loaded with --patch.

How to connect a memory MCP server in DeepSeek Harness: dsh-mcp-client and three reference configs

DeepSeek Harness provides MCP support through the client package @deepseek-ai/dsh-mcp-client, and the project ships three reference configs for memorix, mcp-reference-memory and engram under apps/cli/config/examples/mcp-memory, all off by default (source). Connecting takes four steps:

  1. Know the reference configs — the three overlays target different memory backends: memorix.cordis.yml, mcp-reference-memory.cordis.yml and engram.cordis.yml. Expected: pick the one closest to your needs as a template.
  2. Choose a load method — point --patch at the file, or move its contents into $DSH_HOME/profiles/<name>/cordis.patch.yml. Expected: without loading, these configs do nothing at all.
  3. Set data directory variables — add MEMORIX_DATA_DIR, MEMORY_FILE_PATH, ENGRAM_DATA_DIR or ENGRAM_PROJECT per backend. Expected: data lands in the directory you choose, easy to back up.
  4. Verify at startup — after launch, check the tool list for mcp__-prefixed tools. Expected: their appearance means the connection succeeded.

How to configure a local MCP server in DeepSeek Harness: transport: stdio and command

A local MCP server uses transport: stdio in the plugin entry with command, args, env and cwd fields, and serverName gives the service name; at startup the command is launched as a child process communicating over standard input and output (source). The field list:

  1. name — the plugin name, pointing at @deepseek-ai/dsh-mcp-client.
  2. serverName — the name of this MCP service, deciding the tool prefix. Expected: choose a clear, stable name such as memory.
  3. transport: stdio — declares communication through a local child process.
  4. command and args — the executable to launch and its arguments. Expected: the command must be runnable on the target machine.
  5. env and cwd — environment variables and working directory passed to the child process. Expected: data-directory variables usually go here.
  6. insert and id — control placement and unique identity so the entry coexists with existing config.
yaml
# $DSH_HOME/profiles/<profile>/cordis.patch.yml (illustrative structure)
- insert:
    - name: "@deepseek-ai/dsh-mcp-client"
      id: memory-mcp
      config:
        serverName: memory
        transport: stdio
        command: npx
        args: ["-y", "some-memory-mcp"]
        env:
          MEMORY_FILE_PATH: /path/to/memory.json

How to configure a remote MCP server in DeepSeek Harness: streamable-http and tool naming

A remote MCP server sets transport to streamable-http and supplies url plus optional headers; once connected, tools are exposed to the model as mcp__<serverName>__<tool> (source). Configure it like this:

  1. Switch to a remote transport — transport: streamable-http with url pointing at the server. Expected: no local child process is needed.
  2. Add auth headers — put a token in headers when auth is required. Expected: never commit long-lived tokens to a repository.
  3. Know the full tool name — a server tool search under serverName: memory is exposed as mcp__memory__search. Expected: the model calls by the full name, and renaming it breaks the call.
  4. Verify connectivity — trigger a retrieval-style operation after startup. Expected: results coming back mean the path works.

If you want ready-made DSH plugins for memory instead of wiring MCP yourself, filter by "memory" in the DSH Plugin Hub.

DSH plugin market

Caveats and limits of DeepSeek Harness MCP memory configuration

  1. Reference configs are off by default: the three under apps/cli/config/examples/mcp-memory are examples only and need --patch or a move into a patch to take effect.
  2. serverName decides the tool name: changing it changes mcp__<serverName>__<tool>, breaking calls you already wrote.
  3. command must run locally: the stdio approach depends on a locally executable command, which may be absent in CI or a container.
  4. Keep tokens out of the repo: remote MCP headers often carry a token, so inject them from environment variables.
  5. Set data directories explicitly: without MEMORIX_DATA_DIR and similar variables, data may land on a default path that is hard to find when backing up or migrating.

For the install side of MCP plugins, see dsh plugin multi-profile install; for override order, see How to change DSH plugin config.

Sources: MCP memory (official docs), dsh CLI README (official repository)

FAQ

How does DeepSeek Harness connect to an MCP memory server, and which package is needed?

DeepSeek Harness connects to MCP servers through the client package @deepseek-ai/dsh-mcp-client, and the project ships three reference configs for memorix, mcp-reference-memory and engram under apps/cli/config/examples/mcp-memory. Those three are off by default and must be loaded with --patch.

How do I configure a local MCP server in DeepSeek Harness with stdio?

A local MCP server uses transport: stdio in the plugin entry, with fields for command, args, env and cwd, and the service name given by serverName. At startup the command is launched as a child process that communicates over standard input and output.

How do I configure a remote MCP server in DeepSeek Harness with streamable-http?

A remote MCP server sets transport to streamable-http and supplies url plus optional headers. Unlike stdio it needs no local child process, which suits an existing memory service endpoint.

Once MCP is connected, how does the model call tools, and what is the mcp__<serverName>__<tool> naming rule?

DeepSeek Harness exposes each MCP server's tools as mcp__<serverName>__<tool>, where serverName is the service name from your config and tool is the name the server exposes. The model calls by this full name, so serverName should be clear and stable.

Why do the three official MCP memory reference configs not work by default?

Because they are only example overlays under apps/cli/config/examples/mcp-memory and are not loaded by default. To use one, point the startup flag --patch at the matching cordis.yml, or move its contents into a profile cordis.patch.yml.

Related Terms

dsh-mcp-client
dsh-mcp-client is the MCP client plugin package of DeepSeek Harness (@deepseek-ai/dsh-mcp-client), which connects supported MCP servers and exposes their tools to the model.— DeepSeek Harness official docs - MCP memory
MCP
MCP (Model Context Protocol) is the open standard for connecting external tools and data sources to a model under one protocol, and DeepSeek Harness consumes MCP servers as a client through dsh-mcp-client.— DeepSeek Harness official docs - MCP memory
transport: stdio
transport: stdio is how DeepSeek Harness connects a local MCP server, launching a child process via command, args, env and cwd and communicating over standard input and output.— DeepSeek Harness official docs - MCP memory
mcp__<serverName>__<tool>
mcp__<serverName>__<tool> is the naming rule DeepSeek Harness uses when exposing MCP tools, where serverName is the configured service name and tool is the server-side tool name, and the model calls by this full name.— DeepSeek Harness official docs - MCP memory

Sources