Zkshare MCP Server

Privacy-oriented context API for users, AI agents, and back-office systems. A single HTTP entrypoint (`POST /api/v1/context`) handles **encrypted

Local serverstdioTypeScript

What is the Zkshare MCP server?

Privacy-oriented context API for users, AI agents, and back-office systems. A single HTTP entrypoint (POST /api/v1/context) handles encrypted fact storage, commitment-based proof envelopes, **semantic search over encrypted. That is what the zkshare mcp server brings to an AI assistant: the same capability, reachable through the Model Context Protocol rather than a separate app or dashboard.

The tools it exposes

The server publishes 7 tools. What each one is for:

  • Operation — Behavior
  • storeServer-sealed: caller sends value. Server encrypts with AES-256-GCM, computes a salted commitment, generates an embedding (or accepts a 1536-dim
  • prove — Loads a server-sealed fact, decrypts in memory, derives a yes/no answer for the supplied query (LLM with temperature: 0, or a heuristic when external
  • share — Same as prove, plus inserts a row into share_tokens (recipient_agent_id, expiry, proof) and returns a share_token. The token is a 24-byte base64url
  • search — Embeds the query, calls match_facts (a security definer SQL function with cosine distance over pgvector), and returns ranked summaries for
  • verify_proof — Validates an envelope without loading any fact. Malformed envelope returns 400 / VALIDATION_ERROR; well-formed envelope with a bad HMAC returns 200
  • sandbox — Executes a small allow-listed function inside an isolated node:vm sandbox (no host I/O, 50 ms timeout) and returns the result with attestation

What it needs from you

Configuration is passed through the environment: ZKSHARE_API_KEY, ZKSHARE_API_URL, ZKSHARE_ENCRYPTION_SECRET, ZKSHARE_PROOF_SECRET, INVALID_API_KEY, ZKSHARE_ENCLAVE_JWT_SECRET, UPSTASH_REDIS_REST_URL, UPSTASH_REDIS_REST_TOKEN. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.

Getting it running

zkshare-mcp on npm is all you need. Most clients run it directly, so configuration is a few lines and a restart.

How it compares

This sits in the database access group, where several servers overlap in what they claim to do but differ sharply once you actually set them up. Zkshare's toolset — Operation, store, prove and 4 more — is a fair guide to whether it matches your workflow. It is maintained by sp0oby; worth a glance at recent repository activity before you build anything load-bearing on it.

We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.

Things to watch

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • Missing credentials fail quietly in some clients — if no tools show up, check the environment block first.
  • Keep per-call confirmation enabled while you learn its behaviour; it is the cheapest safeguard you have.

Available tools

ToolWhat it does
OperationBehavior
store**Server-sealed:** caller sends value. Server encrypts with AES-256-GCM, computes a salted commitment, generates an embedding (or accepts a 1536-dim embedding), and persists with client_encrypted = false. **Client-sealed
proveLoads a server-sealed fact, decrypts in memory, derives a yes/no answer for the supplied query (LLM with temperature: 0, or a heuristic when external LLMs are disabled), and returns an HMAC-signed proof envelope. Returns
shareSame as prove, plus inserts a row into share_tokens (recipient_agent_id, expiry, proof) and returns a share_token. The token is a 24-byte base64url string, valid for seven days.
searchEmbeds the query, calls match_facts (a security definer SQL function with cosine distance over pgvector), and returns ranked summaries for **server-sealed rows only**. Client-sealed rows are excluded at the SQL level **a
verify_proofValidates an envelope without loading any fact. Malformed envelope returns 400 / VALIDATION_ERROR; well-formed envelope with a bad HMAC returns 200 with data.valid: false.
sandboxExecutes a small allow-listed function inside an isolated node:vm sandbox (no host I/O, 50 ms timeout) and returns the result with attestation metadata and a short-lived HS256 JWT (proof_of_execution). Every response adv

How to install the Zkshare MCP server

// ~/.cursor/mcp.json
{
  "mcpServers": {
    "zkshare": {
      "command": "npx",
      "args": ["-y", "zkshare-mcp"],
      "env": {
        "ZKSHARE_API_KEY": "zk_live_…",
        "ZKSHARE_API_URL": "https://zkshare.io"
      }
    }
  }
}

Configuration as documented by the project. Restart the client after saving.

Configuration

VariableDescriptionRequired
ZKSHARE_API_KEYCredential the server authenticates with.Yes
ZKSHARE_API_URLEndpoint or connection string the server talks to.Yes
ZKSHARE_ENCRYPTION_SECRETCredential the server authenticates with.Yes
ZKSHARE_PROOF_SECRETCredential the server authenticates with.Yes
INVALID_API_KEYCredential the server authenticates with.Yes
ZKSHARE_ENCLAVE_JWT_SECRETCredential the server authenticates with.Yes
UPSTASH_REDIS_REST_URLEndpoint or connection string the server talks to.Yes
UPSTASH_REDIS_REST_TOKENCredential the server authenticates with.Yes

Example prompts to try

  • Use Zkshare to Operation.
  • Use Zkshare to store.
  • Use Zkshare to prove.

Frequently asked questions

It connects Zkshare to MCP-compatible AI assistants such as Claude and Cursor, exposing 7 tools (Operation, store, prove, and more) that the assistant can call on your behalf. Instead of copying data back and forth by hand, the assistant works with Zkshare directly.