Hekkova MCP Server
Hekkova MCP 서버
AI 에이전트를 위한 영구 메모리 계층입니다. MCP 호환 AI(Claude, ChatGPT, Gemini, Cursor, 커스텀 에이전트)를 연결하고 사진, 비디오, 오디오, 텍스트와 같은 모먼트를 Polygon 블록체인에 IPFS + Filecoin 저장소, Lit Protocol 암호화, 그리고 공개 범위를 제어할 수 있는 개인정보 보호 등급을 사용하여 영구적으로 민팅하세요.
빠른 시작
# 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/mcpClaude Desktop과 연결
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"
}
}
}
}프로덕션 환경에서는 URL과 API 키를 교체하세요:
{
"mcpServers": {
"hekkova": {
"type": "url",
"url": "https://mcp.hekkova.com/mcp",
"headers": {
"Authorization": "Bearer hk_live_YOUR_API_KEY"
}
}
}
}hekkova.com/dashboard/keys에서 API 키를 받으세요.
도구 참조
도구 | 설명 |
| 미디어(사진, 비디오, 오디오, 텍스트)를 Polygon에 영구적으로 민팅합니다. 단계에 따라 암호화하고, IPFS에 고정하며, ERC-721 NFT를 민팅합니다. 블록 ID를 반환합니다. |
| 공개 URL(트윗, 인스타그램 게시물, 이미지, 웹 페이지)을 가져와 민팅합니다. og:title과 og:image를 자동으로 추출합니다. |
| 민팅된 모든 모먼트의 페이지 목록입니다. 단계, 카테고리 또는 검색 쿼리로 필터링할 수 있습니다. |
| 블록 ID별 단일 모먼트에 대한 전체 세부 정보(CID, 트랜잭션 해시, 단계, 태그 등)를 가져옵니다. |
| 모먼트의 개인정보 보호 단계를 변경합니다. 1 크레딧(텍스트/이미지) 또는 2 크레딧(비디오)이 소모됩니다. 레거시 플랜에는 월 10회의 무료 단계 변경이 포함됩니다. |
| 모든 모먼트를 JSON 또는 CSV로 내보냅니다. 모든 블록 ID와 IPFS CID가 포함된 24시간 다운로드 URL을 반환합니다. |
| 남은 민팅 크레딧, 현재 플랜(free / arc_builder / legacy) 및 단계 변경 잔액을 확인합니다. |
| 계정 식별 정보: Light ID, 표시 이름, 지갑 주소, 기본 단계 및 레거시 플랜 상태를 확인합니다. |
개인정보 보호 단계
단계 | 액세스 | 암호화 |
| 소유자 전용 | Lit Protocol (소유자 지갑 ACC) |
| 가까운 서클 (2~10명) | Lit Protocol (공유 액세스 조건) |
| 확장 그룹 (최대 50명) | Hekkova ERC-721을 통한 토큰 게이트 |
| 완전 공개 | 없음 |
모먼트 카테고리
카테고리 | 의미 |
| 주요 인생 이벤트 |
| 희귀한 순간 |
| 일생일대의 순간 |
| 시간 잠금 — |
| 분류되지 않음 |
속도 제한
플랜 | 요청/분 | 민팅/분 |
샌드박스 (테스트 키) | 10 | 1 |
스탠다드 (유료 팩) | 60 | 10 |
레거시 플랜 | 120 | 20 |
속도 제한 헤더는 모든 응답에 포함됩니다:
X-RateLimit-Limit: 60
X-RateLimit-Remaining: 58
X-RateLimit-Reset: 1710680460테스트 실행
# Make sure the server is running in another terminal
npm run dev
# Run the test client
npm run test-client배포
Vercel (서버리스)
npm install -g vercel
vercelvercel.json을 추가하세요:
{
"builds": [{ "src": "src/server.ts", "use": "@vercel/node" }],
"routes": [{ "src": "/(.*)", "dest": "src/server.ts" }]
}프로젝트 → 설정 → 환경 변수에서 Vercel 대시보드의 모든 환경 변수를 설정하세요.
Railway
npm install -g @railway/cli
railway login
railway init
railway upRailway 대시보드에서 환경 변수를 설정하세요. Railway는 npm start 스크립트를 자동으로 감지합니다.
Fly.io
npm install -g flyctl
fly auth login
fly launchFly는 fly.toml을 생성합니다. 다음으로 비밀 값을 설정하세요:
fly secrets set SUPABASE_URL=... SUPABASE_SERVICE_KEY=... THIRDWEB_SECRET_KEY=...
fly deploy프로젝트 구조
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.mdSupabase 스키마
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);전체 사양
전체 기술 사양을 확인하세요: hekkova-mcp-server-spec.md
프로덕션 엔드포인트: https://mcp.hekkova.com/mcp
This server cannot be installed
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