ProtocolModel Context Protocol TransportHTTP · stdio DefaultRead-only, scoped

Your memory, one URL away.

MemRails speaks MCP. Point any compatible client at one server URL and your memory shows up as tools your agent can call — query the stack, write a refactor, inspect a packet — with no glue code to write or integration to maintain. The same packet contract you already build against, exposed the way the rest of your stack expects it.

Memory as an MCP server

One endpoint, and memory becomes a tool.

Add the MemRails server to your client config and the retrieval stack registers itself as callable tools. No SDK to install in your agent, no adapter to keep in sync with the contract — the client discovers what's available and your model uses it.

~/.config/mcp/mcp.json
client config
{
  "mcpServers": {
    "memrails": {
      "url": "https://mcp.memrails.dev",
      "transport": "http",
      "scope": "read"
    }
  }
}
discovery
connected
# client handshakes, lists capabilities
→ initialize
← tools: 3  resources: 1
  memory.query     # read
  memory.write     # write
  memory.inspect   # read
  memory://files   # resource

# ready — no code shipped
The tools it exposes

Three tools, the whole contract.

The server exposes the protocol as a small, legible tool surface. Each maps directly to the packet contract you already know — query returns a compressed packet, write proposes a refactor into the market, inspect opens provenance. Nothing new to learn.

memory.query
read

Run a query through L1–L5 and return a compressed packet with confidence, token count, and provenance. The same synthesis the library and harness produce.

in: query, intent, max_tokens → out: packet
memory.write
write

Propose a refactor — a new claim, a confidence change, a contradiction — into the refactor market. Staked, reviewed by validators, never silently applied.

in: claim, evidence, stake → out: refactor_id
memory.inspect
read

Open a packet's lineage: the evidence bundle, the provenance weights, the input and output hashes. The Console inspector, available to your agent at call time.

in: packet_id → out: provenance, hashes
Works with any MCP client

If it speaks MCP, it speaks to your memory.

The server is a standard MCP implementation, so it works with any compliant client out of the box. No per-client adapters, no bespoke plugins — the same URL drops into all of them.

Claude Code Claude Desktop Cursor Windsurf Cline Zed VS Code LangGraph Custom client
Adapters to maintain
0

One server speaks to every client. Nothing per-integration.

Lines to add a client
5

One JSON block in the client's config. That's the whole install.

Contract drift
None

Tools are discovered live, so they can't fall out of sync.

Resources & scoping

Exposed on purpose, scoped by default.

Memory files surface as MCP resources, so a client can read the corpus directly when it needs to. Access is read-only until you grant write, and every scope maps to the same audit trail you see in Console.

Resources

Files, not a black box.

Markdown memory is published as memory:// resources. A client can list and read them directly — the source of truth, not a derived index.

memory://files memory://keys
Scopes

Read-only until you say so.

A server starts read. Granting write opens memory.write into the refactor market — an explicit choice, never a default.

scope: read scope: write
Audit

Every call, on the ledger.

Tool calls through MCP log exactly like every other packet — hashed in, hashed out, reconcilable. The transport changes; the audit trail doesn't.

One URL · every client

Add it once, use it everywhere.

Drop the server into your client config and your agent has memory as a tool in five lines. Read-only by default, exportable always, audited the same as everything else.