Hekkova MCP Server

1

Add it to Claude Code

Run this in a terminal.

Run in terminal
claude mcp add --transport http -H "Authorization: Bearer hk_test_local_dev_key_12345678" hekkova http://localhost:3000/mcp
Required:SUPABASE_URLSUPABASE_SERVICE_KEYTHIRDWEB_SECRET_KEY
README.md

A permanent memory layer for AI agents to mint media and text as NFTs.

Hekkova MCP Server

The permanent memory layer for AI agents. Connect any MCP-compatible AI (Claude, ChatGPT, Gemini, Cursor, custom agents) and mint moments — photos, videos, audio, text — permanently to the Polygon blockchain with IPFS + Filecoin storage, Lit Protocol encryption, and privacy tiers that let you control who sees what.


Quick Start

# 1. Install dependencies
npm install

# 2. Copy and configure environment variables
cp .env.example .env
# Edit .env with your Supabase, Thirdweb, Pinata, and Stripe credentials

# 3. Seed the local test account and API key
npm run seed

# 4. Start the development server
npm run dev
# → Server running at http://localhost:3000/mcp

Connect with Claude Desktop

Add this to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "hekkova": {
      "type": "url",
      "url": "http://localhost:3000/mcp",
      "headers": {
        "Authorization": "Bearer hk_test_local_dev_key_12345678"
      }
    }
  }
}

For production, replace the URL and API key:

{
  "mcpServers": {
    "hekkova": {
      "type": "url",
      "url": "https://mcp.hekkova.com/mcp",
      "headers": {
        "Authorization": "Bearer hk_live_YOUR_API_KEY"
      }
    }
  }
}

Get your API key at hekkova.com/dashboard/keys.


Tool Reference

Tool Description
mint_moment Mint media (photo, video, audio, text) permanently to Polygon. Encrypts based on phase, pins to IPFS, mints ERC-721 NFT. Returns a Block ID.
mint_from_url Fetch a public URL (tweet, Instagram post, image, web page) and mint it. Extracts og:title and og:image automatically.
list_moments Paginated list of all minted moments. Filterable by phase, category, or search query.
get_moment Full details for a single moment by Block ID: CIDs, transaction hash, phase, tags, and more.
update_phase Change a moment's privacy phase. Free between encrypted tiers (New Moon → Crescent → Gibbous). $0.49 to/from Full Moon. Free for Legacy Plan.
export_moments Export all moments as JSON or CSV. Returns a 24-hour download URL with all Block IDs and IPFS CIDs.
get_balance Check remaining mint credits, current plan (free / arc_builder / legacy), and phase shift balance.
get_account Account identity: Light ID, display name, wallet address, default phase, and legacy plan status.

Privacy Phases

Phase Access Encryption
new_moon Owner only Lit Protocol (owner wallet ACC)
crescent Close circle (2–10 people) Lit Protocol (shared access conditions)
gibbous Extended group (up to 50) Token-gated via Hekkova ERC-721
full_moon Fully public None

Moment Categories

Category Meaning
super_moon Major life event
blue_moon Rare moment
super_blue_moon Once-in-a-lifetime
eclipse Time-locked — sealed until eclipse_reveal_date
null Uncategorized

Rate Limits

Plan Requests/min Mints/min
Sandbox (test keys) 10 1
Standard (any paid pack) 60 10
Legacy Plan 120 20

Rate limit headers are included on every response:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
X-RateLimit-Reset: 1710680460

Running Tests

# Make sure the server is running in another terminal
npm run dev

# Run the test client
npm run test-client

Deployment

Vercel (Serverless)

npm install -g vercel
vercel

Add a vercel.json:

{
  "builds": [{ "src": "src/server.ts", "use": "@vercel/node" }],
  "routes": [{ "src": "/(.*)", "dest": "src/server.ts" }]
}

Set all environment variables in the Vercel dashboard under Project → Settings → Environment Variables.

Railway

npm install -g @railway/cli
railway login
railway init
railway up

Set environment variables in the Railway dashboard. Railway will auto-detect the npm start script.

Fly.io

npm install -g flyctl
fly auth login
fly launch

Fly will generate a fly.toml. Set secrets with:

fly secrets set SUPABASE_URL=... SUPABASE_SERVICE_KEY=... THIRDWEB_SECRET_KEY=...
fly deploy

Project Structure

hekkova-mcp/
├── src/
│   ├── server.ts          # Express + MCP server, auth middleware, rate limiter
│   ├── config.ts          # Typed config from environment variables
│   ├── types/index.ts     # TypeScript interfaces (Account, Moment, ApiKey, etc.)
│   ├── services/
│   │   ├── auth.ts        # API key validation and hashing
│   │   ├── database.ts    # Supabase queries (moments, accounts, API keys)
│   │   ├── blockchain.ts  # Thirdweb/Polygon minting (stub → real)
│   │   ├── storage.ts     # Pinata IPFS pinning (stub → real)
│   │   └── enc

Tools (8)

mint_momentMint media or text permanently to Polygon with encryption and IPFS storage.
mint_from_urlFetch a public URL and mint it as a moment.
list_momentsPaginated list of all minted moments with filtering options.
get_momentRetrieve full details for a single moment by Block ID.
update_phaseChange a moment's privacy phase and encryption tier.
export_momentsExport all moments as JSON or CSV.
get_balanceCheck remaining mint credits and plan status.
get_accountRetrieve account identity and wallet information.

Environment Variables

SUPABASE_URLrequiredSupabase project URL
SUPABASE_SERVICE_KEYrequiredSupabase service role key
THIRDWEB_SECRET_KEYrequiredThirdweb secret key for blockchain interactions

Configuration

claude_desktop_config.json
{"mcpServers": {"hekkova": {"type": "url", "url": "https://mcp.hekkova.com/mcp", "headers": {"Authorization": "Bearer hk_live_YOUR_API_KEY"}}}}

Try it

Mint a new moment containing this text: 'AI agents now have permanent memory' and set the privacy to full_moon.
Fetch the content from this URL and mint it as a new moment.
List all my moments categorized as super_moon.
Check my current account balance and remaining mint credits.
Update the privacy phase of my last minted moment to crescent.

Frequently Asked Questions

What are the key features of Hekkova?

Mint media and text as encrypted NFTs on Polygon. Permanent storage using IPFS and Filecoin. Customizable privacy tiers via Lit Protocol. Token-gated access control for moments. Automated metadata extraction from public URLs.

What can I use Hekkova for?

Creating a permanent, encrypted log of AI agent activities. Storing important digital artifacts on-chain for long-term retrieval. Sharing sensitive AI-generated insights with specific groups via token-gating. Archiving web content as immutable digital moments.

How do I install Hekkova?

Install Hekkova by running: npm install && npm run seed && npm run dev

What MCP clients work with Hekkova?

Hekkova works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep Hekkova docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare