Skip to main content
Glama

Novyx MCP - Desktop Extension

Desktop Extension (.mcpb) for Claude Desktop. This repo is the one-click installer shell for the Python novyx-mcp engine.

Current desktop extension: 1.0.6 Current MCP engine target: novyx-mcp 2.8.0

Features

  • Reviewable Memory - Draft, review, diff, merge, or reject agent memory before it becomes permanent.

  • Governed Actions - Submit, approve, deny, and explain agent actions when connected to Novyx Cloud.

  • Time-Travel Rollback - Preview and restore memory to a known-good point.

  • Audit Trails - Inspect cryptographic proof of memory operations.

  • Knowledge Graph - Link memories and query subject-predicate-object triples.

  • Context Spaces - Keep project and team memory separated.

  • Local-First - Works instantly with SQLite and no API key.

  • Cloud Upgrade - Optional hosted governance, approvals, replay, Runtime v2, threat intelligence, and team workflows.

Related MCP server: engram-mcp

Installation

From the Anthropic Directory (recommended):

Install directly from Claude Desktop -> Settings -> Extensions.

Manual install:

  1. Download the latest .mcpb file from Releases

  2. Double-click the file, or drag it into Claude Desktop

Prerequisites: Python 3.10+ must be installed. The extension first tries uvx --upgrade novyx-mcp, then falls back to python3 -m novyx_mcp, python -m novyx_mcp, and finally the novyx-mcp executable.

Configuration

No configuration required for local mode. The extension works out of the box with a local SQLite database.

Optional - Cloud mode:

When prompted during installation, enter your Novyx API key. Get a free key at novyxlabs.com (5,000 memories, no credit card).

Cloud mode enables:

  • Cross-device memory sync

  • Hosted governance and approval workflows

  • Runtime v2 agents, missions, capabilities, checkpoints, and interventions

  • Replay, cortex, and threat-intelligence workflows

  • Team spaces when hosted sharing is available

share_space is currently visible but disabled in novyx-mcp 2.8.0 until hosted invitation redemption is available. It returns a clear local-only response instead of issuing unusable tokens.

What To Try First

Use the desktop extension when Claude needs reviewable memory instead of untracked context:

draft_memory(
  observation="Deploys fail if REDIS_URL is unset in staging",
  tags=["ops", "staging"],
  importance=8,
  branch_id="staging-fixes"
)

memory_branch("staging-fixes")
draft_diff("drf_abc123")
merge_branch("staging-fixes")

That flow keeps memory changes inspectable before they become permanent.

Usage Examples

Example 1: Store and recall memories

User prompt:

Remember that the project deadline is March 15th and we're using React with TypeScript.

What happens: Claude calls the remember tool to store tagged memories. Later:

What tech stack are we using for this project?

What happens: Claude calls recall with a semantic search, finds the stored memory about React + TypeScript, and answers accurately.

Example 2: Roll back a mistake

User prompt:

I accidentally told you the deadline was March 15th - it's actually April 1st. Roll back the wrong memory and fix it.

What happens: Claude calls rollback_preview and rollback to undo the incorrect memory, then remember to store the corrected date. The audit trail shows the full history: original store -> rollback -> corrected store.

Example 3: Build a knowledge graph

User prompt:

Track these relationships: Alice manages the frontend team, Bob manages the backend team, and both teams report to Carol.

What happens: Claude calls add_triple to create knowledge graph entries:

  • Alice -> manages -> frontend team

  • Bob -> manages -> backend team

  • frontend team, backend team -> reports_to -> Carol

Later, asking "Who does the frontend team report to?" triggers a query_triples call that returns the answer.

Example 4: Isolated project contexts

User prompt:

Create a separate memory space for my side project so it doesn't mix with work memories.

What happens: Claude calls create_space to create an isolated context. Memories stored in that space are scoped and do not appear in general searches.

Privacy Policy

Novyx MCP operates in two modes:

Local mode (default): All data is stored locally in a SQLite database at ~/.novyx/local.db. No data is sent to any external server. No analytics or telemetry.

Cloud mode (opt-in): When you provide an API key, memories are sent to the Novyx API (novyx-ram-api.fly.dev) for storage and sync. Data is encrypted in transit (TLS) and at rest. We do not share your data with third parties. See our full privacy policy at novyxlabs.com/privacy.

You can switch between modes at any time by adding or removing your API key.

Data retention: Local data persists until you delete it. Cloud data is retained until you delete it or close your account. Audit trails are immutable by design.

For privacy questions, contact blake@novyxlabs.com.

Support

How It Works

This Desktop Extension is a thin Node.js wrapper that spawns the Python novyx-mcp server as a child process. The Node.js layer handles process lifecycle; the Python server handles all MCP logic.

Launch order:

  1. uvx --upgrade novyx-mcp (fastest; no install needed)

  2. python3 -m novyx_mcp (if pip installed)

  3. python -m novyx_mcp

  4. novyx-mcp (if pipx installed)

Release

Build the desktop extension bundle:

npm run validate
npm run package

The package script writes dist/novyx-mcp-desktop-<version>.mcpb. The bundle contains manifest.json, server/index.js, icons, license, README, and package metadata with manifest.json at the archive root.

License

MIT

Available Tools

23 tools
add_tripleA

Add a knowledge graph triple (subject -> predicate -> object).

Entities are auto-created by name if they don't exist.

Args:
    subject: The subject entity name.
    predicate: The relationship predicate.
    object_name: The object entity name.

Returns:
    JSON string with the created triple details.

Inputs: subject (required), predicate (required), object_name (required). Returns: result

auditA
Read-only

Get the audit trail of memory operations.

Args:
    limit: Maximum number of audit entries to return (default 20).
    operation: Optional filter by operation type (CREATE, UPDATE, DELETE, ROLLBACK).

Returns:
    JSON string with audit trail entries.

Inputs: limit, operation. Returns: result

cortex_insightsA
Read-only

List auto-generated memory insights.

Cortex detects patterns across your memories and generates insights automatically.
Requires Enterprise tier or Novyx Cloud.

Args:
    limit: Maximum insights to return (default 20).

Returns:
    JSON string with generated insights.

Inputs: limit. Returns: result

cortex_runA

Manually trigger a Cortex cycle.

Runs consolidation (merge duplicate memories) and reinforcement (boost frequently
recalled memories, decay forgotten ones). Normally runs automatically every 6 hours.
Requires Pro tier or Novyx Cloud.

Returns:
    JSON string with cycle results (consolidated, reinforced counts).

Inputs: no named parameters. Returns: result

cortex_statusA
Read-only

Get Cortex autonomous intelligence status.

Shows whether Cortex is enabled, last run time, and consolidation/reinforcement stats.
Requires Pro tier or Novyx Cloud.

Returns:
    JSON string with Cortex status and last run info.

Inputs: no named parameters. Returns: result

create_spaceA

Create a shared context space for multi-agent collaboration.

Spaces let multiple agents share memories with fine-grained permissions.
The creator is the owner and can grant read/write access to other agents or tenants.

Args:
    name: Name for the space.
    description: Optional description of the space's purpose.
    allowed_agents: Optional list of agent IDs that can access this space.
    tags: Optional tags for the space.

Returns:
    JSON string with the created space details including space_id.

Inputs: name (required), tags, description, allowed_agents. Returns: result

delete_spaceB
Destructive

Delete a context space (owner only).

Args:
    space_id: The space ID to delete.

Returns:
    JSON string indicating success.

Inputs: space_id (required). Returns: result

forgetA
Destructive

Delete a memory by its UUID.

Args:
    memory_id: The UUID of the memory to delete.

Returns:
    JSON string indicating success or failure.

Inputs: memory_id (required). Returns: result

list_memoriesA
Read-only

List stored memories with optional tag filtering.

Args:
    limit: Maximum number of memories to return (default 50).
    tags: Optional tag filter to narrow results.

Returns:
    JSON string with the list of memories.

Inputs: tags, limit. Returns: result

list_spacesA
Read-only

List all context spaces you can access.

Returns spaces you own and spaces shared with you.

Returns:
    JSON string with list of spaces and their memory counts.

Inputs: no named parameters. Returns: result

memory_statsA
Read-only

Get memory statistics for the current account.

Returns:
    JSON string with total memories, average importance, tag distribution, etc.

Inputs: no named parameters. Returns: result

query_triplesA
Read-only

Query knowledge graph triples with optional filters.

At least one filter should be provided. Returns all matching triples.

Args:
    subject: Filter by subject entity name.
    predicate: Filter by relationship predicate.
    object_name: Filter by object entity name.

Returns:
    JSON string with matching triples.

Inputs: subject, predicate, object_name. Returns: result

recallA
Read-only

Search memories semantically using natural language.

Args:
    query: Natural language search query.
    limit: Maximum number of results to return (default 5).
    tags: Optional tag filter.
    min_score: Minimum similarity score 0-1 (default 0).

Returns:
    JSON string with matching memories and their scores.

Inputs: query (required), tags, limit, min_score. Returns: result

rememberA

Store a memory observation in Novyx.

Args:
    observation: The memory content to store.
    tags: Optional list of tags for categorization.
    importance: Importance score 1-10 (default 5).
    context: Optional context string.
    ttl_seconds: Optional time-to-live in seconds. Memory auto-expires after this duration.

Returns:
    JSON string with the stored memory UUID and details.

Inputs: observation (required), tags, context, importance, +1 more. Returns: result

replay_diffA
Read-only

Diff memory state between two timestamps.

Shows what was added, removed, and modified in a time range.
Requires Pro tier or Novyx Cloud.

Args:
    start: Start timestamp (ISO).
    end: End timestamp (ISO).

Returns:
    JSON string with added, removed, and modified memories.

Inputs: end (required), start (required). Returns: result

replay_lifecycleA
Read-only

Full biography of a single memory.

Shows creation, every update, every recall, every link, and deletion.
Use this to understand why a memory exists and how it evolved.
Requires Pro tier or Novyx Cloud.

Args:
    memory_id: UUID of the memory to inspect.

Returns:
    JSON string with the memory's full lifecycle events.

Inputs: memory_id (required). Returns: result

replay_snapshotA
Read-only

Reconstruct memory state at a specific point in time.

Returns all memories and their link graph as they existed at timestamp T.
Requires Pro tier or Novyx Cloud.

Args:
    at: ISO timestamp to reconstruct state at.
    limit: Maximum memories to return (default 500).

Returns:
    JSON string with memory snapshot and edges.

Inputs: at (required), limit. Returns: result

replay_timelineA
Read-only

Get the full timeline of memory operations. The tape you scrub through.

Shows every create, update, delete, and rollback event with timestamps.
Requires Pro tier or Novyx Cloud.

Args:
    since: Start of time range (ISO timestamp).
    until: End of time range (ISO timestamp).
    operations: Comma-separated filter: create, update, delete, rollback.
    limit: Maximum entries to return (default 100).

Returns:
    JSON string with timeline entries.

Inputs: limit, since, until, operations. Returns: result

rollbackA
Destructive

Rollback memory to a point in time.

Supports ISO timestamps (e.g. '2026-01-15T10:00:00Z') and relative time
expressions (e.g. '2 hours ago').

Args:
    target: ISO timestamp or relative time expression.
    dry_run: If true, preview changes without applying them.

Returns:
    JSON string with rollback results or preview.

Inputs: target (required), dry_run. Returns: result

share_spaceA

Share a space/tag with another user by email.

Requires Novyx Cloud — not available in local mode.

Args:
    tag: The tag or space tag to share.
    email: Email address of the recipient.
    permission: Access level — 'read' or 'write' (default 'read').

Returns:
    JSON string with the share token and join URL.

Inputs: tag (required), email (required), permission. Returns: result

space_memoriesA
Read-only

List or search memories within a context space.

Args:
    space_id: The space ID to query.
    query: Optional search query to filter memories semantically.
    limit: Maximum number of memories to return (default 50).

Returns:
    JSON string with memories in the space.

Inputs: space_id (required), limit, query. Returns: result

update_spaceA

Update a context space (owner only).

Args:
    space_id: The space ID to update.
    name: New name for the space.
    description: New description.
    allowed_agents: Updated list of allowed agent IDs.
    tags: Updated tags.

Returns:
    JSON string with the updated space details.

Inputs: space_id (required), name, tags, description, +1 more. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 23 tools

    Disambiguation4/5

    Most tools have distinct purposes, but there is some overlap between audit and replay_timeline (both show operations) and between list_memories and recall (list vs search). However, descriptions clarify differences.

    Naming Consistency3/5

    Naming conventions are mixed: some use verb_noun (remember, create_space), some noun_noun (cortex_insights, memory_stats), and some single word (audit). Not fully consistent.

    Tool Count5/5

    23 tools is well-scoped for a comprehensive memory system with knowledge graphs, spaces, replay, and Cortex features. Each tool serves a distinct purpose.

    Completeness3/5

    Covers most CRUD operations for memories and spaces, but lacks update_memory and update/delete for triples. Replay and Cortex features are thorough.

    Maintenance

    ActivityInactive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers