Error reference

MemPalace mode=graphiti requires mcpEndpoint

2 min read

Selecting the graphiti memory backend without an mcpEndpoint fails at construction.

Why this backend is special

The comment at the throw explains the shape:

Graphiti speaks its own vocabulary, so it implements MemPalaceClient directly rather than sitting behind McpAdapterClient — which expects a MemPalace-shaped server that does not exist.

Most backends behind this interface are adapted: a generic MCP client translates between the memory model and whatever the server speaks. Graphiti does not fit that, because it has its own concepts, so it implements the client interface itself and talks to its own server.

That is why it needs its own endpoint rather than inheriting a transport.

The sibling error

MemPalace mode=mcp requires an MCP transport to be provided is the same check on the generic path. Both are per-mode validation in the same switch: each backend asserts what it specifically needs rather than one up-front check demanding every field any backend might want.

How to fix it

Set mcpEndpoint to the Graphiti MCP server URL, or choose a different mode. The available modes are local, falkor-lite, mcp, graphiti and disabled — and disabled is a real choice rather than an absence, so "no memory" and "memory misconfigured" do not look the same.

Worth knowing before you rely on it

The Graphiti path has been exercised against a stub rather than a live server. It is built, not proven, and this page describes how it is wired rather than how it behaves in production.

Five backends, one interface

The modes exist because memory is the part of this system most likely to be replaced. Local storage for development, a lightweight graph for small deployments, MCP for a generic server, Graphiti for a temporal knowledge graph, and disabled for none.

Keeping them behind one interface means the planner's recall path does not change when the backend does — and each mode validating its own configuration, rather than one check demanding every field, is what keeps that interface honest.