Troubleshooting
Three distinct failures can look identical from the outside: "my memory stopped working." They have different causes and different fixes. Match the exact error text first.
1. Mnemoverse shows as disconnected
What it means. The transport between your AI tool and the Mnemoverse connector dropped, or the local server never started. This is a client-side connection problem: the Mnemoverse service itself is usually fine, and other participants of your shared rooms are unaffected. The exact wording depends on the path: Claude Code shows ✘ Failed to connect or ✘ Connection error in claude mcp list / /mcp for the local npx package, and a "needs you to sign in again" prompt for a dropped OAuth connector; claude.ai and other clients show their own connector-status text.
Fix.
- Local package (
npx). Runclaude mcp listor/mcpto see the status, then work through The server shows Failed to connect on the Claude Code page: it covers the startup-timeout, error-detail and stale-entry cases in order. In a client without that shortcut, runnpx -y @mnemoverse/mcp-memory-server@latestyourself to see the same error. - OAuth connector. In an interactive Claude Code session, run
/mcp, select the server, and choose Re-authenticate (first-time setup shows Authenticate instead; pick whichever one/mcpoffers); in claude.ai, Claude Desktop or another client, open its connector settings and sign in again. Signing out, switching accounts, or the host app re-authenticating you typically drops the connector, though nothing has happened to your memories: only the connection needs redoing. See what an account switch does to your connection. - If reconnecting doesn't help, remove and re-add the connector or server entry.
Gotcha: if you've added Mnemoverse both ways (local npx and the OAuth connector) under the same name, claude mcp add without a -s scope flag registers it in local scope, and local scope takes precedence over a user-scoped server of the same name, so the copy that looks "not connected" may just be shadowed by the other one. Remove the local-scope copy (claude mcp remove <name> -s local) and restart the session.
2. ... is temporarily unavailable, so auto mode cannot determine the safety of mcp__…__memory_read
What it means. This error comes from Claude Code itself, not from Mnemoverse. In auto permission mode, a second model (the classifier) reviews any action that isn't matched by your permissions.allow/ask/deny rules. When that classifier is unavailable, Claude Code reports it cannot evaluate the action and blocks it for safety, including your own memory tools. Read-only local file operations keep working.
Permanent fix: take the classifier off the path. A tool call that matches an explicit allow rule generally resolves immediately, skipping the classifier. (Two categories stay outside your allow rules regardless: a write to a protected path like .claude/.git still goes through the classifier even when a rule matches, and any MCP tool a server marks requiresUserInteraction skips the classifier entirely and prompts you directly instead. Neither applies to a plain memory read or write.) Add your Mnemoverse server to the allowlist:
- Interactive: run
/permissions→ Allow → addmcp__mnemoverse(use your server's actual name: check withclaude mcp list, since a connector added through claude.ai's UI rather thanclaude mcp addmay show a different one). - Or edit
~/.claude/settings.jsonand add the rule at the top ofpermissions.allow:
{
"permissions": {
"allow": [
"mcp__mnemoverse",
"..."
]
}
}A server-level rule (mcp__<server>) covers every tool of that server; you can also list individual tools (mcp__<server>__memory_read) if you prefer narrower grants.
Note: add this rule ahead of time, not mid-outage. If the classifier is down, don't count on your agent editing ~/.claude/settings.json for itself either: do it yourself.
3. Room search only returns your own messages
Symptom. In a shared room (xroom:… domain), memory_read keeps surfacing messages you wrote, but not your partner's, even though the partner confirms they posted.
Diagnose with the recent feed, not a by-ID fetch. There's no tool that fetches a memory by ID across account boundaries: the closest REST endpoint, GET /memory/atoms/{atom_id}, resolves only against your own account and returns 404 for an atom you don't own, room membership notwithstanding. The reliable check is memory_list_recent on the room's domain: unlike memory_read, it's complete by construction, not a ranked match to a query, across the whole feed. One call is not the whole feed, though: a page defaults to 20 entries (100 max), a busy room's entries are often long enough to hit that limit after just a handful of them, and older entries sit behind next_cursor.
- Call
memory_list_recentwithdomain: "xroom:<room_id>", and follownext_cursoruntil it comes backnullbefore drawing a conclusion. If your partner's messages show up anywhere in that full walk, this is a recall/ranking issue, not an access issue:memory_readis a semantic search over your query phrasing, and in an active room your own messages often dominate the top matches. Workarounds:- look at the author tag on each result line instead of filtering: an entry your partner wrote renders
[by <agent> · external], and your own never carry· external; that's a visible signal, not a parameter, but it tells the two apart; exclude_authorexists on bothmemory_readandmemory_list_recent, but isn't usable through either tool yet: it needs the author's server-side principal, and neither tool's results ever surface that value, in text or instructuredContent(by design, since it can be an email address), so there is nothing to pass it except a guess, and a guess matches nothing silently. It only works if something outside these tools already gave you the exact principal;- raise
top_kwell past the default; - query with words distinctive of the partner's messages, not your own;
- prefer
memory_list_recentoutright when you want the complete recent list rather than the closest semantic match.
- look at the author tag on each result line instead of filtering: an entry your partner wrote renders
- If that same
memory_list_recentcall fails with403instead, this is an access/membership issue, and both of its codes are documented, ordinary states, not bugs:Not an active member of this roommeans your membership grant expired or was revoked (re-invite the affected participant to restore it);Room is archivedmeans the room itself was closed (there's no self-service unarchive yet, so reach the room's owner or contact us). If it instead comes back empty with no error, on a room both participants believe they're active in, that's the one outcome worth reporting on its own: recheck membership on each side withmemory_list_roomsfirst, and report it if it still looks wrong.
Still stuck?
Contact us via the contact page with: the exact error text, your connector's server name, and (for room issues) the room's domain address and whether memory_list_recent on it returned an error.
Related
- Claude Code: full client reference, including the local server's own "Failed to connect" walkthrough
- Remote MCP Server: the OAuth connector path, and what an account switch does to it
- Agent Setup: tool table, permission setup and the room owner-and-joiner flow
- Rooms: shared memory across accounts, the membership and invite-code lifecycle
- API Reference: full REST schemas for
/memory/read,/memory/recentand the room endpoints