Skip to main content
Glama
zekebuilds-lab

mcp-l402-gate-example

mcp-l402-gate-example

Минималистичный MCP-сервер, демонстрирующий работу @powforge/mcp-l402-gate.

Один инструмент, bitcoin_data, получает текущую цену BTC/USD и рекомендуемые комиссии в мемпуле с сайта mempool.space. Каждый вызов защищен шлюзом:

  1. L402 Lightning-счет (вызывающий платит сатоши за каждый вызов).

  2. Проверка оценки Depth-of-Identity (DoI) через публичный оракул PowForge. Если оценка ниже пороговой, оплата не даст доступа.

L402 сам по себе доказывает, что вызывающий заплатил. L402 + DoI доказывает, что они заплатили и обладают репутацией для конкретного открытого ключа, которая сохраняется между сессиями, а для её подделки требуются необратимые затраты ресурсов. Вторая часть — это то, что пропускает большинство комплектов для биллинга MCP.

Быстрый старт

git clone https://github.com/zekebuilds-lab/mcp-l402-gate-example
cd mcp-l402-gate-example
cp .env.example .env       # fill in GATE_HMAC_SECRET and LNBits creds
npm install
npm start

Сервер записывает URL инструмента и оракула в лог при запуске. Порт по умолчанию — 3100.

Related MCP server: l402-kit-mcp

Тестирование с помощью curl

Первый вызов не имеет авторизации, поэтому шлюз возвращает 402 с инвойсом:

curl -i -X POST http://localhost:3100/tools/bitcoin_data \
  -H 'Content-Type: application/json' \
  -H 'X-Caller-Pubkey: 02a1b2c3...your-hex-pubkey' \
  -d '{}'

Ожидаемый ответ:

HTTP/1.1 402 Payment Required
WWW-Authenticate: L402 macaroon="...", invoice="lnbc1..."
Content-Type: application/json

{
  "error": "payment required",
  "macaroon": "...",
  "invoice": "lnbc1...",
  "payment_hash": "..."
}

Оплатите поле invoice (любым LN-кошельком), получите preimage, а затем повторите попытку:

curl -i -X POST http://localhost:3100/tools/bitcoin_data \
  -H 'Content-Type: application/json' \
  -H 'X-Caller-Pubkey: 02a1b2c3...your-hex-pubkey' \
  -H 'Authorization: L402 <macaroon>:<preimage>' \
  -d '{}'

Вы получите цену BTC, оценки комиссий мемпула и оценку DoI вызывающего абонента.

Манифест также доступен для MCP-клиентов, которые анализируют каталоги инструментов:

curl http://localhost:3100/manifest.json

Конфигурация

Переменная

Описание

Обязательно

По умолчанию

GATE_HMAC_SECRET

HMAC-ключ для подписи макарун L402. Сгенерируйте с помощью openssl rand -hex 32.

да

-

LNBITS_URL

Базовый URL вашего экземпляра LNBits.

да

-

LNBITS_INVOICE_KEY

Ключ LNBits для создания счетов/чтения. Никогда не используйте ключ администратора.

да

-

ORACLE_URL

Базовый URL оракула DoI.

нет

https://identity.powforge.dev

PORT

HTTP-порт.

нет

3100

SATS_AMOUNT

Количество сатоши за вызов.

нет

1

MIN_SCORE

Минимальная совокупная оценка DoI для прохождения шлюза. 0 отключает проверку личности.

нет

0

Пороговые значения оценки DoI

Это те же категории, которые оракул возвращает как rank. Выберите ту, которая соответствует стоимости ошибочного вызова:

MIN_SCORE

Ранг

Подходит для

0

unknown

Чистый платный доступ. Личность не имеет значения.

10

emerging

Злоупотребления при первом вызове наносят ущерб. Разумное значение по умолчанию для большинства публичных инструментов MCP.

40

active

Инструмент потребляет реальные ресурсы GPU или имеет дорогостоящие побочные эффекты.

100

established

Конечные точки, чувствительные к комплаенсу или работающие по модели SaaS для одного арендатора.

200

trusted

Инструменты администрирования с высоким уровнем доверия.

Как работает шлюз

Без шлюза поток 402 + макарун доказывает, что вызывающий заплатил 10 сатоши. Новый кошелек злоумышленника платит те же 10 сатоши. Это нормальный формат передачи данных, но слабая защита от злоупотреблений.

@powforge/mcp-l402-gate сохраняет инвойс L402 и добавляет вторую проверку: когда макарун подтверждается, шлюз вызывает оракул DoI для открытого ключа вызывающего, получает обратно оценку, подписанную Schnorr, и сравнивает её с MIN_SCORE. Оценка складывается из наблюдаемой необратимой работы по четырем измерениям (социальное, доступ, поручительство, экономическое), поэтому новый сибил-аккаунт не сможет накрутить её за минуту.

Полная таблица режимов сбоев находится в README @powforge/mcp-l402-gate.

Файлы

  • server.js — MCP-сервер, ~110 строк.

  • .env.example — скопируйте в .env и заполните.

  • package.json — зависит от express и @powforge/mcp-l402-gate.

Ссылки

Лицензия

MIT.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server that enables AI agents to make autonomous Bitcoin Lightning Network payments using the L402 protocol. Agents can pay for API access, purchase resources, and complete transactions without human intervention — invoice comes in, sats go out, done.
    17
    9
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for l402-kit — enables AI agents (Claude, Cursor, etc.) to autonomously pay Bitcoin Lightning-protected APIs. Tools: l402_fetch, l402_balance, l402_spending_report. Run with: npx l402-kit-mcp
    4
    86 npm
    4
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server that gates API calls to AI agents using proof-of-work (free) or Lightning payment (3 sats), providing challenge, verify, and status tools for per-call authentication without accounts.
    3
    58 npm
    1
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    MCP server offering 26 Lightning-paid tools for Bitcoin mempool intelligence and sovereign on-prem AI inference, with no third-party APIs and pay-per-call in sats.
    26
    11 npm
    1
    MIT