novara-context MCP Server
Persistent memory, identity, and context for Claude sessions — works with Claude Code, Claude.ai, and OpenClaw.
Tools
| Tool | Description | |---|---| | recall | Search the memory graph by query | | remember | Add or update an entity in the memory graph | | link | Create a relation between two entities | | forget | Remove a specific observation from an entity | | get_identity | Returns SOUL.md + MEMORY.md context | | get_conventions | Returns conventions by domain (notion, repo, linkedin, aws, etc.) | | store_decision | Store a decision with title, content, and tags | | consolidate | Full graph maintenance: dedupe, prune stale observations, promote new facts from daily logs |
Setup
npm install
npm run build
Usage in Claude Code (stdio)
Add to ~/.config/claude/claude_desktop_config.json:
{
"mcpServers": {
"novara-context": {
"command": "node",
"args": ["/path/to/novara-context/dist/index.js"]
}
}
}
Usage as Remote Server (HTTP + Cloudflare Tunnel)
# Set required env vars
export MCP_MODE=http
export PORT=3099
export MCP_CLIENT_ID=novara-context-client
export MCP_CLIENT_SECRET=your-secret-here
# Start server
node dist/index.js &
# Expose via Cloudflare Tunnel
cloudflared tunnel --url http://localhost:3099
The server implements full OAuth 2.1 with PKCE and Dynamic Client Registration (RFC 7591) for Claude.ai connector compatibility.
Environment Variables
| Variable | Default | Description | |---|---|---| | MCP_MODE | stdio | stdio or http | | PORT | 3099 | HTTP port | | MCP_CLIENT_ID | novara-context-client | OAuth client ID | | MCP_CLIENT_SECRET | — | OAuth client secret (required for HTTP mode) | | MEMORY_FILE_PATH | ~/clawd/data/memory-graph/memory.jsonl | Memory graph data file |
Memory Graph Format
The graph is stored as JSONL — one JSON object per line:
{"type":"entity","name":"Stephen Ellington","entityType":"Person","observations":["Founder of Novara"]}
{"type":"relation","from":"Stephen Ellington","to":"Novara","relationType":"FOUNDED"}










