Files
deepseek-harness/examples/mcp-memory/README.md
2026-07-31 02:08:35 -07:00

6.3 KiB

Third-party memory MCP examples

English | 中文

These three default-off reference configurations connect one memory system to DSH through @deepseek-ai/dsh-mcp-client. Pick one, or copy the same generic MCP row for another server.

These third-party configurations are provided as interoperability examples only. Their inclusion does not imply endorsement, recommendation, partnership, or ongoing support by DeepSeek.

What DSH does

DSH parses the selected Cordis overlay, starts a configured stdio command or connects to a configured Streamable HTTP URL, discovers MCP tools, and exposes them as mcp__<serverName>__<tool>. DSH does not download the server, initialize its database, choose its model or embedding provider, create a cloud account, migrate vendor data, or supervise a separate HTTP service. For stdio, the generic client launches and stops the child with the DSH plugin lifecycle; for HTTP, the upstream service must already be running.

The stdio bridge deliberately removes ambient credential-shaped and DSH_* variables before launching a child. Each example explicitly forwards only the variables needed for its baseline. If an optional upstream feature needs another secret, add that variable to the row's config.env instead of putting the secret directly in YAML.

Choose one

System Tested pin Transport Upstream prerequisite
Memorix memorix@1.3.0 (500792cad3144142293bfbb20acb4841c9f7fcfa) stdio Node 22.18+ and npm install --global memorix@1.3.0
MCP Reference Memory @modelcontextprotocol/server-memory@2026.7.4 (6dd0a683e198783e30feabf7abaf42f925bd18b1) stdio npm install --global @modelcontextprotocol/server-memory@2026.7.4
Engram v1.20.0 (ba9e46ced152c37a7cb9e576153c41995873e2fc) stdio Go 1.25.10+ and go install github.com/Gentleman-Programming/engram/cmd/engram@v1.20.0, or the matching release binary

Enable one

Use a stable user id across sessions, then pass one overlay to DSH:

export DSH_MEMORY_USER_ID=alice
dsh --config "$PWD/examples/mcp-memory/memorix.cordis.yml"

Replace the filename with mcp-reference-memory.cordis.yml or engram.cordis.yml. The path may point to a copied file anywhere on disk. No memory server is present in the shipped composition, so omitting --config keeps all three disabled.

To keep the selection in personal configuration, merge the chosen file's single insert patch into $DSH_HOME/config.yaml (normally ~/.dsh/config.yaml). Do not copy over an existing file: it may already contain unrelated personal patches.

Provider setup

Memorix

npm install --global memorix@1.3.0
export DSH_MEMORY_USER_ID=alice
dsh --config "$PWD/examples/mcp-memory/memorix.cordis.yml"

Memorix works in local heuristic mode without an LLM or embedding service. Configure optional providers in Memorix's own ~/.memorix/config.toml or project memorix.toml. The example keeps Memorix's Git-project identity from the DSH working directory and maps DSH_MEMORY_USER_ID to a private MEMORIX_DATA_DIR.

MCP Reference Memory

npm install --global @modelcontextprotocol/server-memory@2026.7.4
export DSH_MEMORY_USER_ID=alice
dsh --config "$PWD/examples/mcp-memory/mcp-reference-memory.cordis.yml"

This reference server stores a local knowledge graph and exposes entity, relation, observation, read, search, and open tools. It needs no model or embedding service. The example maps DSH_MEMORY_USER_ID to an isolated MEMORY_FILE_PATH.

Search is case-insensitive substring matching over entity names, types, and observations, not semantic retrieval. The server does not add embeddings, automatic summarization, conflict resolution, or a forgetting policy.

Engram

go install github.com/Gentleman-Programming/engram/cmd/engram@v1.20.0
export DSH_MEMORY_USER_ID=alice
dsh --config "$PWD/examples/mcp-memory/engram.cordis.yml"

The example maps the user id to an isolated ENGRAM_DATA_DIR. Engram still owns project selection: it detects the Git project from the DSH working directory, or accepts ENGRAM_PROJECT as an explicit override.

Optional shared model instruction

Add this short, vendor-neutral instruction to your existing model instructions if the server's tool descriptions do not trigger memory use reliably:

When the user asks you to remember something, call a memory write tool. When historical information may be relevant, search memory and use relevant results.

This is additive guidance only. The examples do not replace DSH's system-prompt persona.

Verify write, fresh-session recall, and use

Use one unique value, the same provider scope, and the same DSH_MEMORY_USER_ID throughout:

  1. In DSH session A, ask: Remember that my validation drink is lapsang-<unique suffix>. Confirm the model called the provider's write tool and the tool returned success.
  2. Create DSH session B in the same running Host. Do not copy session A's conversation. Ask: What is my validation drink? Check memory. Confirm the model called the provider's search or recall tool and returned the value.
  3. Still in session B, ask: Use that preference to suggest one drink for the meeting. Confirm the answer uses the recalled value.

A new DSH session is required; a Host restart is not. Restart or HMR is needed only after an MCP child crashes because the current generic client unregisters tools on disconnect and does not auto-reconnect. Initial discovery is asynchronous, so wait for the provider's mcp__... tools before sending the first validation prompt.

Bring another MCP server

Copy the same generic shape and use a unique id and serverName:

- insert:
    - id: memory-my-server
      name: '@deepseek-ai/dsh-mcp-client'
      config:
        serverName: my-memory
        transport: stdio
        command: my-memory-mcp
        args: []
        env: {}
        cwd: !!js process.cwd()

For a remote server, use transport: streamable-http, url, and headers instead. Provider-specific installation, identity, authentication, models, embeddings, persistence, and licensing remain the provider's responsibility.