Back to Blog
Sep 25, 2026·Efe·6 min read·How-to · MCP

Claude Desktop MCP Memory: Setup for Windsurf

Claude Desktop MCP memory is one config entry per app with no server to run: point the client at the remote MCP server, authenticate with a project key, and verify recall in a fresh conversation. This guide covers Claude Desktop and Windsurf side by side.

On this page

  1. What MCP memory adds to desktop agents
  2. Prerequisites: one project key
  3. Claude Desktop MCP memory setup
  4. Windsurf MCP setup
  5. Verify the connection end to end
  6. Limits, costs, and good practices

What MCP memory adds to desktop agents

Claude Desktop and Windsurf start every conversation with an empty context window. They know what you paste in, and nothing else. The reason you chose Postgres over SQLite, the command that runs integration tests, the header staging requires — none of it survives into the next chat unless it lives outside the conversation.

A context window is working memory with a fixed budget. As a session grows, the agent summarizes or drops older turns. You cannot prompt around that: durable facts need a store that outlives the transcript, which is what a memory layer provides. Why coding agents forget conventions covers the same failure mode.

MCP (Model Context Protocol) is the standard Claude Desktop and Windsurf already use to reach external tools. Audaxic exposes one remote endpoint at https://memory-mcp.audaxic.com/mcp, speaking Streamable HTTP and authenticating with a Bearer ak_... project key. There is no server or container to run: Claude Desktop connects through the npx mcp-remote bridge (Node.js required), and Windsurf connects to the URL directly.

Because the endpoint is remote, one project key works across machines and MCP-compatible clients. A fact saved from Claude Desktop on your laptop is retrievable from Windsurf on your desktop.

What gets stored is what you would otherwise repeat at the start of every chat: preferences like "use pnpm", decisions with their reasons, and gotchas such as a required staging header. The agent searches that store when a question relates to it, so a fact saved weeks ago can come back in today's conversation without you repeating it. Only the matches return, which keeps the context window occupied by the task rather than by an archive.

Prerequisites: one project key

You need one credential: a project key. Create it in the dashboard under Projects and copy the ak_... value when the dashboard shows it. Treat it like any other secret — it is the only thing that stands between the server and your project's memories.

The key also defines scope. Data is isolated per organization with namespace-scoped vector search, and a project key reaches only its own project namespace. Keep one project per repository and memories do not leak across codebases. Share one project on purpose and every client holding the key reads and writes the same memory. Servers run in the US and EU, and we never train on customer data.

Setting Value
Endpoint https://memory-mcp.audaxic.com/mcp
Transport Streamable HTTP
Authentication Authorization: Bearer ak_...
Local install None (Claude Desktop uses the npx mcp-remote bridge; Node.js required)
Clients Claude Desktop, Windsurf, Cursor, any MCP-compatible client

Cursor connects through MCP only — there is no Cursor plugin — while Claude Code, Codex, and OpenCode have their own plugins. All of them can read and write the same project when they use the same key.

Claude Desktop MCP memory setup

Claude Desktop reads MCP servers from its configuration file. Add the memory server as one entry inside the existing mcpServers object. Claude Desktop uses the npx mcp-remote bridge, so the entry uses command and args rather than a plain URL:

{
  "mcpServers": {
    "audaxic-memory": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://memory-mcp.audaxic.com/mcp",
        "--header",
        "Authorization: Bearer ak_your_project_key"
      ]
    }
  }
}

Save the file and restart Claude Desktop completely. The client loads MCP servers at startup, so closing the window is not enough. The MCP setup guide shows the same entry and notes that npx requires Node.js. If the file already has entries under mcpServers, add this object next to them rather than replacing what is there.

When a connection fails, check two things first: the Bearer prefix in front of the key, and whether the key belongs to the project you meant to use.

Keep the key out of version control. The Authorization header travels with every request, so leave the config file out of public repositories and screenshots. Rotating a leaked key is cheap; a leaked project namespace is not.

Windsurf MCP setup

Windsurf keeps MCP servers in its own MCP configuration. Open Windsurf's MCP settings, paste the same entry — note the serverUrl key — and refresh the server list:

{
  "mcpServers": {
    "audaxic-memory": {
      "serverUrl": "https://memory-mcp.audaxic.com/mcp",
      "headers": {
        "Authorization": "Bearer ak_your_project_key"
      }
    }
  }
}

The MCP setup guide shows the Windsurf entry alongside the other clients. Once connected, Cascade sees the memory server beside your other MCP tools and calls it the same way it calls a search or terminal tool.

When both clients use the same key, they share one memory: a convention saved in one appears in the other immediately. To keep each client's memories apart, create two projects and use two keys. The key decides the boundary, not the client.

One key, one project boundary. Namespace-scoped search means a key cannot read another project's memories, and organizations are isolated from each other. Decide the scope before you hand the key to a second client.

Verify the connection end to end

A connected badge proves the Claude Desktop MCP memory transport opened; it does not prove retrieval works. Test the full loop:

  1. Open the MCP servers panel in Claude Desktop and confirm the memory server is connected and lists its tools. The tools reference documents their names — add_memory, search_memories, get_memories, and the delete tools — along with their parameters.
  2. In a new conversation, ask the agent to remember something specific: "Remember that the release branch is release/2026.09."
  3. Ask for it back in the same conversation to confirm the write path.
  4. Open a brand-new conversation and ask the same question again. This is the real test: a fresh chat has nothing in context, so a correct answer must have come from the memory server.
  5. Cross-check storage from the dashboard or the REST API: GET /list is paginated with limit and offset, and POST /search takes a query string. The quickstart has request examples for both.

If step 4 fails while step 5 succeeds, retrieval is the problem rather than storage — rephrase the question and search again before touching configuration. Step 5 also settles whether the memory was saved at all, without guesswork.

If the server never appears in the panel, validate the JSON first: a trailing comma or a missing quote stops the whole config file from loading. Then confirm the Bearer prefix and quit the app fully, because clients load MCP configuration at startup. A corporate proxy that intercepts HTTPS traffic can break the connection for every client at once — check that when nothing connects.

Long sessions that trim their context window are harmless here: the agent rewrites the transcript, but stored facts are untouched. That is why context compaction stops being a data-loss event.

Limits, costs, and good practices

Hobby is $0 per month: 10,000 adds, 1,000 retrieves, unlimited projects, and no credit card. Starter is $12 per month for 50,000 adds and 5,000 retrieves; paid tiers scale to 1,000,000 adds and 100,000 retrieves on Enterprise. Billing is flat, with no per-token fees and no overages, and graph memory is included on every plan from Hobby through Enterprise.

Understand the counting rules before you let an agent save freely. An add request is counted per memory extracted from a message batch, so one call that extracts five facts counts as five adds. Retrieves are tiered: the first ten memories returned count as one request, and each additional ten counts as one more, so a search returning 25 memories counts as three requests.

Two operational limits matter for scripts and busy setups. Management creates are capped at 100 per hour per IP. On the data plane, 100 failed authentication attempts per four hours per IP trigger a 429 with a Retry-After header; that is a brute-force guard rather than a request cap, so normal traffic will not hit it. If you call the REST API directly, send the date-based X-Api-Version header — the current version is 2026-09-25.

Good practices for desktop agents:

The payoff is one memory layer behind every client you connect: the same project facts in Claude Desktop, Windsurf, and any other MCP-compatible tool, without a local server to maintain.

FAQ

Does Claude Desktop MCP memory need a local server or Docker?

No. The endpoint is remote and speaks Streamable HTTP, so setup is one config entry with a Bearer ak_... project key — no server or container to run. Claude Desktop connects through the npx mcp-remote bridge (Node.js required); Windsurf connects to the URL directly.

Can Claude Desktop and Windsurf share the same memories?

Yes, when both are configured with the same project key. They read and write one project namespace, so a fact saved in one client is retrievable in the other. Use separate projects and keys if you want the memories kept apart.

Which tools does the memory server expose to these clients?

The connected server lists memory tools including add_memory, search_memories, and get_memories, plus the delete tools. The tools reference documents each name, parameter, and response shape.

What does memory cost, and how are requests counted?

Hobby is $0 per month with 10,000 adds, 1,000 retrieves, and unlimited projects; paid tiers start at $12 per month, billed flat with no overages. Adds count per memory extracted, while retrieves are counted in tens.

Try Audaxic free. Hobby is $0 — 10,000 adds, 1,000 retrieves, unlimited projects. Get an API key or read the quickstart. Related: Why Your Coding Agent Forgets Conventions (And How to Fix It) and Import Past Conversations: Claude Code, Codex, OpenCode to Memory and RAG vs Memory Layer vs Vector DB: Which Does Your Agent Need?.

Written by Efe — Sep 25, 2026 · More articles · X @AudaxicTech