MCP server for sovereign AI memory — tamper-evident, cryptographically signed, deterministic state
Project description
Hunt Protocol MCP Server
MCP server that exposes Hunt Protocol sovereign memory operations as tools. Connect any MCP-compatible AI client (Claude Code, Claude Desktop, ChatGPT via bridge) to a cryptographically signed, append-only vault with deterministic state reduction.
Category: Sovereign AI Memory via MCP Status: Shipped v0.1.0
Install
cd hunt-mcp
pip install .
Requires Python 3.10+. Dependencies: fastmcp>=2.0, cryptography>=41.0.
Quick Start
# Run against the included reference backpack
python server.py
# Run against your own vault
HUNT_VAULT_PATH=/path/to/vault python server.py
# Enable write operations (observations + assertions)
HUNT_SIGNING_KEY_B64="your-base64-ed25519-private-key" python server.py
Claude Code Integration
claude mcp add hunt-protocol -- python /path/to/hunt-mcp/server.py
With a custom vault:
claude mcp add hunt-protocol -e HUNT_VAULT_PATH=/path/to/vault -- python /path/to/hunt-mcp/server.py
With write access:
claude mcp add hunt-protocol \
-e HUNT_VAULT_PATH=/path/to/vault \
-e HUNT_SIGNING_KEY_B64="your-key-here" \
-- python /path/to/hunt-mcp/server.py
Tools
Read Tools (no key required)
| Tool | Description |
|---|---|
vault_status |
Vault health: event count, state hash, merkle root, key info, compliance summary |
list_events |
List events with filters (type, actor, namespace, limit, offset) |
get_event |
Full event by event_id |
get_state |
Current reduced state (all namespaces or filtered) |
get_beliefs |
Query beliefs by namespace, optional key pattern (subject:predicate) |
get_evidence |
Evidence trail for a specific belief key |
verify_vault |
Run integrity + compliance checks, return pass/fail details |
search_events |
Search events by payload content (subject, predicate, value substring) |
Write Tools (require HUNT_SIGNING_KEY_B64)
| Tool | Description |
|---|---|
append_observation |
Add observation: subject, predicate, value, confidence |
append_assertion |
Add assertion: subject, predicate, value, confidence |
Environment Variables
| Variable | Required | Description |
|---|---|---|
HUNT_VAULT_PATH |
No | Path to vault directory (default: ./examples/reference_backpack) |
HUNT_SIGNING_KEY_B64 |
For writes | Base64-encoded Ed25519 private key |
How It Works
Every vault is a directory containing:
- events/events.ndjson — Append-only event log (signed, content-addressed)
- identity/ — Genesis record + public key registry
- policies/ — Safety policy, sync contract, retention rules
- manifest.json — Deterministic file index with SHA-256 hashes
- merkle_root.txt — Integrity anchor (Merkle tree root)
The MCP server loads events, runs a deterministic reducer to compute state across four namespaces (canonical, local, contested, archived), and exposes everything through typed tools.
Architecture
The server wraps the Hunt Protocol L0 modules:
| Module | Responsibility |
|---|---|
canonical_json |
RFC 8785 deterministic JSON serialization |
integrity |
SHA-256 file hashing, Merkle trees, path safety |
signing |
Ed25519 keypair management, event/manifest signing |
reducer |
Deterministic four-namespace state reducer |
manifest |
Manifest generation and verification |
sync |
Event log I/O, causal chain verification, fork detection |
bootstrap |
Vault creation from scratch |
rekey |
Key rotation protocol |
Creating a New Vault
from hunt_protocol.bootstrap import bootstrap_backpack
from pathlib import Path
result = bootstrap_backpack(Path("./my_vault"))
print(f"UID: {result.uid}")
print(f"Root key: {result.root_key_id}")
print(f"Private key (save this!): {result.root_private_key_b64}")
Then point the server at it:
HUNT_VAULT_PATH=./my_vault HUNT_SIGNING_KEY_B64="<private-key>" python server.py
License
Apache 2.0 — Provara
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file provara-0.1.1.tar.gz.
File metadata
- Download URL: provara-0.1.1.tar.gz
- Upload date:
- Size: 28.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f7d177415206690a91d6f1441a7d1c3832e26499b857d1c635f3172f24f8bc1a
|
|
| MD5 |
e64d3d5b2431f89a2329f52e7c2907fb
|
|
| BLAKE2b-256 |
c0b35496c14ec9d511a874bf8e5a9eabcf1e02d3c57dcd45ec3590e908055f03
|
File details
Details for the file provara-0.1.1-py3-none-any.whl.
File metadata
- Download URL: provara-0.1.1-py3-none-any.whl
- Upload date:
- Size: 28.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c5d07ce5de0b3c72167cd14b15d293f78eafa6d5ce53ab0cb22fccd9cef9cc0a
|
|
| MD5 |
f7c8e47633871b48d8de19e091fb6f54
|
|
| BLAKE2b-256 |
035921299c80812c4c30bcddaa2150325dc8ca94e377518bc671053f341fe1af
|