Skip to main content
Glama

Servidor MCP de Hekkova

La capa de memoria permanente para agentes de IA. Conecta cualquier IA compatible con MCP (Claude, ChatGPT, Gemini, Cursor, agentes personalizados) y acuña momentos —fotos, vídeos, audio, texto— de forma permanente en la cadena de bloques Polygon con almacenamiento IPFS + Filecoin, cifrado del Protocolo Lit y niveles de privacidad que te permiten controlar quién ve qué.


Inicio rápido

# 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

Conectar con Claude Desktop

Añade esto a tu archivo de configuración de Claude Desktop:

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"
      }
    }
  }
}

Para producción, reemplaza la URL y la clave API:

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

Obtén tu clave API en hekkova.com/dashboard/keys.


Referencia de herramientas

Herramienta

Descripción

mint_moment

Acuña medios (foto, vídeo, audio, texto) permanentemente en Polygon. Cifra según la fase, fija en IPFS, acuña NFT ERC-721. Devuelve un ID de bloque.

mint_from_url

Obtiene una URL pública (tweet, publicación de Instagram, imagen, página web) y la acuña. Extrae og:title y og:image automáticamente.

list_moments

Lista paginada de todos los momentos acuñados. Filtrable por fase, categoría o consulta de búsqueda.

get_moment

Detalles completos de un solo momento por ID de bloque: CID, hash de transacción, fase, etiquetas y más.

update_phase

Cambia la fase de privacidad de un momento. Cuesta 1 crédito (texto/imagen) o 2 créditos (vídeo). El Plan Legacy incluye 10 cambios de fase gratuitos al mes.

export_moments

Exporta todos los momentos como JSON o CSV. Devuelve una URL de descarga de 24 horas con todos los ID de bloque y CID de IPFS.

get_balance

Comprueba los créditos de acuñación restantes, el plan actual (free / arc_builder / legacy) y el saldo de cambios de fase.

get_account

Identidad de la cuenta: Light ID, nombre para mostrar, dirección de billetera, fase predeterminada y estado del plan legacy.


Fases de privacidad

Fase

Acceso

Cifrado

new_moon

Solo propietario

Protocolo Lit (ACC de la billetera del propietario)

crescent

Círculo cercano (2–10 personas)

Protocolo Lit (condiciones de acceso compartido)

gibbous

Grupo extendido (hasta 50)

Token-gated mediante Hekkova ERC-721

full_moon

Totalmente público

Ninguno


Categorías de momentos

Categoría

Significado

super_moon

Evento importante de la vida

blue_moon

Momento poco común

super_blue_moon

Una vez en la vida

eclipse

Bloqueado por tiempo: sellado hasta eclipse_reveal_date

null

Sin categorizar


Límites de tasa

Plan

Solicitudes/min

Acuñaciones/min

Sandbox (claves de prueba)

10

1

Standard (cualquier paquete de pago)

60

10

Plan Legacy

120

20

Los encabezados de límite de tasa se incluyen en cada respuesta:

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

Ejecución de pruebas

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

# Run the test client
npm run test-client

Despliegue

Vercel (Serverless)

npm install -g vercel
vercel

Añade un vercel.json:

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

Establece todas las variables de entorno en el panel de Vercel en Proyecto → Configuración → Variables de entorno.

Railway

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

Establece las variables de entorno en el panel de Railway. Railway detectará automáticamente el script npm start.

Fly.io

npm install -g flyctl
fly auth login
fly launch

Fly generará un fly.toml. Establece los secretos con:

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

Estructura del proyecto

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)
│   │   └── encryption.ts  # Lit Protocol encryption (stub → real)
│   └── tools/
│       ├── mint-moment.ts
│       ├── mint-from-url.ts
│       ├── list-moments.ts
│       ├── get-moment.ts
│       ├── update-phase.ts
│       ├── export-moments.ts
│       ├── get-balance.ts
│       └── get-account.ts
├── scripts/
│   ├── seed.ts            # Creates test account + API key in Supabase
│   └── test-client.ts     # Exercises all 8 tools against the running server
├── package.json
├── tsconfig.json
├── .env.example
└── README.md

Esquema de Supabase

Necesitarás estas tablas en tu proyecto de Supabase:

-- Accounts
create table accounts (
  id text primary key default gen_random_uuid()::text,
  display_name text not null,
  light_id text,
  wallet_address text,
  mints_remaining integer not null default 0,
  total_minted integer not null default 0,
  default_phase text not null default 'new_moon',
  legacy_plan boolean not null default false,
  created_at timestamptz not null default now()
);

-- API Keys
create table api_keys (
  id text primary key default gen_random_uuid()::text,
  account_id text not null references accounts(id) on delete cascade,
  key_hash text not null unique,
  key_prefix text not null,
  environment text not null default 'live',
  created_at timestamptz not null default now(),
  revoked_at timestamptz
);

-- Moments
create table moments (
  id text primary key default gen_random_uuid()::text,
  account_id text not null references accounts(id) on delete cascade,
  block_id text not null unique,
  token_id integer not null,
  title text not null,
  description text,
  phase text not null,
  category text,
  encrypted boolean not null default false,
  media_cid text not null,
  metadata_cid text not null,
  media_type text not null,
  polygon_tx text not null,
  source_url text,
  source_platform text,
  eclipse_reveal_date timestamptz,
  tags text[] not null default '{}',
  timestamp timestamptz not null default now(),
  created_at timestamptz not null default now()
);

-- Indexes
create index on api_keys(key_hash);
create index on moments(account_id, timestamp desc);
create index on moments(block_id);

Especificación completa

Consulta la especificación técnica completa: hekkova-mcp-server-spec.md

Endpoint de producción: https://mcp.hekkova.com/mcp

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/Hekkova/hekkova-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server