mcp-l402-gate-example
mcp-l402-gate-example
@powforge/mcp-l402-gateの動作を示す最小限のMCPサーバーです。
bitcoin_dataというツールが1つあり、現在のBTC/USD価格とmempool.spaceからの推奨メモリプール手数料を取得します。各呼び出しは以下によってゲート制御されます:
L402 Lightningインボイス(呼び出し元が呼び出しごとにサトシを支払います)。
公開PowForgeオラクルに対するDepth-of-Identity(DoI)スコアの照会。しきい値を下回る場合、支払いを行っても通過できません。
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ウォレット)、プリイメージを取得してから再試行してください:
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設定
変数 | 説明 | 必須 | デフォルト |
| L402マカロン署名用のHMACキー。 | はい | - |
| LNBitsインスタンスのベースURL。 | はい | - |
| LNBitsのインボイス/読み取りキー。管理者キーは絶対に使用しないでください。 | はい | - |
| DoIオラクルのベースURL。 | いいえ |
|
| HTTPポート。 | いいえ |
|
| 呼び出しごとに請求されるサトシ。 | いいえ |
|
| ゲートを通過するための最小DoI複合スコア。 | いいえ |
|
DoIスコアのしきい値
これらはオラクルがrankとして返すものと同じバケットです。誤った呼び出しのコストに見合うものを選んでください:
| ランク | 適した用途 |
0 | unknown | 純粋なペイウォール。アイデンティティは重要ではありません。 |
10 | emerging | 初回呼び出しの悪用を防ぐ。ほとんどの公開MCPツールに適したデフォルト値。 |
40 | active | ツールが実際のGPUを消費する、または高コストな副作用がある場合。 |
100 | established | コンプライアンスに敏感な、またはシングルテナントSaaSスタイルのエンドポイント。 |
200 | trusted | 高い信頼性を必要とする管理者ツール。 |
ゲートの仕組み
ゲートがない場合、402 + マカロンフローは呼び出し元が10サトシを支払ったことを証明するだけです。新規の攻撃者ウォレットも同じ10サトシを支払います。これは単なるワイヤーフォーマットであり、悪用に対する制御は弱いです。
@powforge/mcp-l402-gateはL402インボイスを保持しつつ、2つ目のチェックを追加します。マカロンが検証されると、ゲートは呼び出し元の公開鍵についてDoIオラクルを呼び出し、Schnorr署名されたスコアを取得してMIN_SCOREと比較します。スコアは4つの次元(ソーシャル、アクセス、証明、経済)にわたる観測可能な不可逆的作業から構成されているため、新規のシビル攻撃者が1分でスコアを稼ぐことはできません。
完全な失敗モードの表は@powforge/mcp-l402-gate READMEにあります。
ファイル
server.js- MCPサーバー、約110行。.env.example-.envにコピーして記入してください。package.json-expressおよび@powforge/mcp-l402-gateに依存しています。
リンク
ドキュメントと価格: powforge.dev/mcp
公開DoIオラクル: identity.powforge.dev
ライセンス
MIT。
This server cannot be deployed
Maintenance
Related MCP Connectors
Pay-per-action access to APIs and MCP tools over Lightning L402 and Base USDC x402.
Monetize any MCP server: x402 paywall, pay-per-call billing in USDC on Base, agent marketplace.
Programmatic web-scraping MCP server powered by x402 micro-transactions on Base.
MCP server for Boson Protocol — on-chain agentic commerce for physical & digital goods.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP 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.179MIT
- AlicenseAqualityBmaintenanceMCP 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-mcp486 npm4MIT
- AlicenseAqualityCmaintenanceMCP 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.358 npm1MIT
- AlicenseBqualityDmaintenanceMCP 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.2611 npm1MIT