Skip to main content
Glama
README.md
# 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

```bash
npm install
npm run build
```

## Usage in Claude Code (stdio)

Add to `~/.config/claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "novara-context": {
      "command": "node",
      "args": ["/path/to/novara-context/dist/index.js"]
    }
  }
}
```

## Usage as Remote Server (HTTP + Cloudflare Tunnel)

```bash
# 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:

```json
{"type":"entity","name":"Stephen Ellington","entityType":"Person","observations":["Founder of Novara"]}
{"type":"relation","from":"Stephen Ellington","to":"Novara","relationType":"FOUNDED"}
```

TDQS

A3.5/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: recall searches, remember upserts, link adds relations, forget removes observations, get_identity retrieves context, get_conventions fetches convention entities, store_decision stores decisions, and consolidate performs maintenance. No overlap.

Naming Consistency3/5

Tool names mix single verbs (recall, remember, link, forget, consolidate) with verb_noun patterns (get_identity, get_conventions, store_decision). While readable, the lack of a uniform convention reduces predictability.

Tool Count5/5

With 8 tools, the set covers core memory graph operations without being bloated. The count feels well-scoped for the server's purpose of managing an agent's memory.

Completeness3/5

The tool set covers basic CRUD (create/read/update via remember, recall, link) and maintenance (consolidate), but lacks a dedicated tool to delete entire entities or list all entities. Minor gaps like these could hinder agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues