volta-mcp-server
This server enables secure, burn-after-read encrypted note sharing between AI agents and users, preventing sensitive information from appearing in chat history.
Create encrypted notes (
create_volta_note): Encrypt and store sensitive content (up to 2KB) using AES-256-GCM, receiving a one-time URL to share — the note is permanently destroyed after a single readRead and destroy notes (
read_volta_note): Retrieve decrypted content of a Volta note by providing its full URL (including the#fragmentdecryption key), permanently deleting it after retrievalSecure credential exchange: Safely transfer API keys, passwords, and credentials between agents and users without exposing them in conversation logs — works in both directions (agent-to-user and user-to-agent)
End-to-end encryption: All encryption/decryption happens locally; only ciphertext is stored on the Internet Computer, so even a compromised server cannot read the data
Ephemeral storage: Notes are automatically destroyed after a single read, or expire after 7 days if unread
Cross-platform: Compatible with Claude Code, Claude Desktop, Cursor, Windsurf, Cline, Continue.dev, and other MCP-compatible clients
Provides tools for storing and retrieving encrypted notes on Internet Computer (ICP) canisters, enabling burn-after-read functionality where ciphertext is permanently destroyed after first access
@voltanotes/mcp
MCP server for Volta Notes — create and read burn-after-read encrypted notes from any AI agent.
Notes are end-to-end encrypted using AES-256-GCM. The decryption key lives only in the URL fragment — it is never sent to any server. Notes are stored on the Internet Computer and permanently destroyed after a single read.
Why
AI agents regularly need sensitive information at runtime — API keys, passwords, credentials. Today, users paste these into chat where they're stored permanently in conversation history.
With this MCP server, the pattern becomes:
User creates a note at voltanotes.com and sends the one-time URL
Agent calls
read_volta_note— secret returned, note permanently destroyedNothing sensitive ever appears in chat history
Or in reverse — an agent can use create_volta_note to send credentials to a user via a self-destructing link.
Quick Start
Claude Code (CLI & Desktop App)
Step 1 — Install globally:
npm install -g @voltanotes/mcpStep 2 — Register the server:
claude mcp add -s user volta -- node $(npm root -g)/@voltanotes/mcp/dist/index.jsThat's it. Restart Claude Code and the create_volta_note and read_volta_note tools will be available.
Why
claude mcp addinstead of editing config files? Claude Code reads MCP servers from its own registry, not from~/.claude/mcp.json. Using the CLI ensures the server is registered correctly. The-s userflag makes it available across all projects.
nodenot found? Use the full path: replacenodewith the output ofwhich node(e.g./usr/local/bin/node).
Claude Desktop (Standalone)
Add to your claude_desktop_config.json:
{
"mcpServers": {
"volta": {
"command": "npx",
"args": ["-y", "@voltanotes/mcp"]
}
}
}Other MCP-compatible clients
The npx config above works with any client that supports the standard command/args MCP format — including Cursor, Windsurf, Cline, Continue.dev, and others. Check your client's MCP documentation for where to add server config.
Hermes Agent (Nous Research)
Volta MCP works with Hermes Agent via its MCP integration. Add the server to your Hermes config (~/.hermes/config.yaml):
mcp:
servers:
- name: volta
command: npx
args:
- "-y"
- "@voltanotes/mcp"Restart Hermes and the create_volta_note and read_volta_note tools will be available to your agent.
Agent-to-agent use case: Hermes agents running autonomously often need to pass credentials between workflows without exposing them in logs or memory. Volta Notes is purpose-built for this — one agent creates a note, passes the one-time URL to the next, and the secret is destroyed on read. Nothing persists in conversation history or tool output logs.
See Hermes MCP documentation for full configuration options.
Windows (Claude Code CLI)
The $(npm root -g) syntax doesn't work in PowerShell or CMD. Use this instead:
claude mcp add -s user volta -- node "%APPDATA%\npm\node_modules\@voltanotes\mcp\dist\index.js"Or use the Claude Desktop / npx method above, which works cross-platform.
Tools
create_volta_note
Creates an encrypted note and returns a one-time URL.
Parameter | Type | Description |
| string | Secret content to encrypt (max 2 KB) |
Returns: A voltanotes.com URL. The recipient opens it once, reads the content, and it's gone forever.
read_volta_note
Reads and permanently destroys a Volta note.
Parameter | Type | Description |
| string | Full Volta URL including |
Returns: The decrypted note content. The note is permanently deleted from the canister — a second read will fail.
Agent Prompt Snippet
Add this to any agent's system prompt to enable secure credential handoff:
When you need a secret from the user (API key, password, credentials):
1. Ask them to go to voltanotes.com and paste the secret into the note field
2. They'll get a one-time URL — ask them to send it to you
3. Use the read_volta_note tool with that URL to retrieve the secret
The secret is permanently destroyed after you read it — it never appears in chat history.Security Model
AES-256-GCM encryption happens locally before anything is sent to the canister
The encryption key exists only in the URL fragment (
#...) — browsers and servers never transmit fragmentsThe ICP canister stores only ciphertext — even if compromised, all data is unreadable
Notes are destroyed on first read. Unread notes expire after 7 days.
No accounts, no login, no tracking
How It Works
Agent calls create_volta_note("secret-api-key-123")
→ Local: generate AES-256 key + encrypt
→ ICP canister: store ciphertext → returns noteId
→ Return URL: voltanotes.com/r/{noteId}#{key}
User opens URL → read gate → clicks "Read note"
→ Browser: fetch ciphertext from canister (canister deletes it)
→ Browser: decrypt using key from # fragment
→ Display plaintext — note is gone foreverTroubleshooting
Check if the server is connected
claude mcp listYou should see volta: ... ✓ Connected. If not, see below.
Server not showing up
Did you use
claude mcp add? Editing~/.claude/mcp.jsonmanually won't work — Claude Code reads servers from its own registry. Always useclaude mcp addto register servers.Is
nodeon your PATH? Claude Code's shell has a minimal PATH. Ifnodeisn't found, use the full path:claude mcp add -s user volta -- $(which node) $(npm root -g)/@voltanotes/mcp/dist/index.jsRestart required. After adding or changing an MCP server, fully restart Claude Code (quit and reopen).
How do I know if the server started?
The server logs Volta MCP server started to stderr on successful startup. Run claude mcp list to check connection status.
Requirements
Node.js 18+ (uses built-in Web Crypto API)
License
MIT — Unprompted Labs
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/iamredmh/volta-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server