Configure the direct Devin Desktop (formerly Windsurf) MCP client with XMEMO_KEY and stable instance attribution.
Prerequisite
Use Devin Desktop (formerly Windsurf) with its direct MCP configuration support. Devin Desktop connects directly using an environment-backed bearer token with XMEMO_KEY.
- Endpoint: https://xmemo.dev/mcp.
- Transport: Streamable HTTP.
- Auth mode: direct bearer token from XMEMO_KEY.
- Config file: ~/.config/devin/mcp_config.json (%APPDATA%\devin\mcp_config.json on Windows; installs prior to the rename used ~/.codeium/windsurf/mcp_config.json).
- Client ID: windsurf (remains windsurf for compatibility).
- Readiness status: Evidence required (planned marketplace, not certified).
Install / setup
Configure manually: add the XMemo server block to ~/.config/devin/mcp_config.json (%APPDATA%\devin\mcp_config.json on Windows) under mcpServers. Note: npx @xmemo/client mcp add windsurf currently writes the pre-rename location ~/.codeium/windsurf/mcp_config.json (useful only for pre-rename installs), so Devin Desktop users should configure manually or move the file. Client ID remains windsurf for compatibility.
- Direct client: configure manually in ~/.config/devin/mcp_config.json (%APPDATA%\devin\mcp_config.json on Windows) with XMEMO_KEY in the environment.
- Note: npx @xmemo/client mcp add windsurf currently writes the pre-rename location ~/.codeium/windsurf/mcp_config.json (useful only for pre-rename installs), so Devin Desktop users should configure manually or move the file.
{
"mcpServers": {
"XMemo": {
"serverUrl": "https://xmemo.dev/mcp",
"headers": {
"Authorization": "Bearer ${env:XMEMO_KEY}",
"X-Memory-OS-Agent-ID": "windsurf",
"X-Memory-OS-Agent-Instance-ID": "${env:XMEMO_AGENT_INSTANCE_ID}"
}
}
}
}
Set the credential
Set XMEMO_KEY in the environment before launching Devin Desktop. Keep the token in the environment rather than hardcoding it into the configuration file.
export XMEMO_KEY='<your-xmemo-token>'
Generate / confirm XMEMO_AGENT_INSTANCE_ID
Generate a stable non-secret instance identifier per local Devin Desktop installation so attribution remains consistent across restarts.
export XMEMO_AGENT_INSTANCE_ID='<stable-local-devin-desktop-instance-id>'
# Persist and reuse this value for the same local install
Preserve the existing config block
Use the configuration block rendered on this page. Configure manually at ~/.config/devin/mcp_config.json (%APPDATA%\devin\mcp_config.json on Windows). Client ID remains windsurf for compatibility.
Restart the client
Restart Devin Desktop after updating ~/.config/devin/mcp_config.json or the environment so the MCP server connection is established.
Test with a real recall call
Make the first MCP call read-only. This is an actual recall invocation, not a health-check placeholder, and it does not write memory.
recall({ query: "connection check", limit: 1 })
Expected response (literal shape)
A successful call returns the public ranked text shape below; the reference and content are real values from the authorized memory space.
### XMemo Memory Results:
1. Reference: <opaque-memory-id> | Location: <location>
> <memory content>
Common Errors
Devin Desktop is a direct bearer client; verify environment variables if connection issues occur.
- 401 invalid_token — XMEMO_KEY is missing, expired, revoked, or otherwise invalid: verify XMEMO_KEY in the environment and restart Devin Desktop.
- 403 insufficient_scope — the token does not grant memory:read: issue a token with the required scope.
- Invalid XMEMO_AGENT_INSTANCE_ID values are normalized to no instance attribution rather than raising an auth error.
Certification and readiness
Certification status: Evidence required. Marketplace status: Planned. Integration evidence is required before full certification is granted.
- Certification status: Evidence required.
- Marketplace status: Planned.
- Readiness note: See /product/docs#client-capability-matrix; configure manually at ~/.config/devin/mcp_config.json.