原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Drain MCP

作者:kimbo128版本 0.1.3i★ –i在你的电脑上运行
注册名称io.github.kimbo128/drain-mcp

安装

概览

作者提供的说明(英文原文)

Pay for AI inference with USDC micropayments on Polygon. No API keys needed.

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 其他
  • 你需要填写:DRAIN_PRIVATE_KEY

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。

你需要

  • npm已安装 Node.js(用于 npx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "drain": {
      "command": "npx",
      "args": [
        "-y",
        "drain-mcp"
      ],
      "env": {
        "DRAIN_PRIVATE_KEY": "your-value"
      }
    }
  }
}

在终端中运行这条命令

claude mcp add drain --env DRAIN_PRIVATE_KEY=your-value -- npx -y drain-mcp

运行前请先填写空着的值。

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "drain": {
      "command": "npx",
      "args": [
        "-y",
        "drain-mcp"
      ],
      "env": {
        "DRAIN_PRIVATE_KEY": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "drain": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "drain-mcp"
      ],
      "env": {
        "DRAIN_PRIVATE_KEY": "your-value"
      }
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

需要你填写的值

  • DRAIN_PRIVATE_KEY 机密 必填 env
    Private key for the wallet used for USDC micropayments on Polygon

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 kimbo128 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 18474 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 18474 个服务器的 2% 更新
  • 基础检查结果等于或优于此分类中其他 18474 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Drain MCP 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

你需要填写:DRAIN_PRIVATE_KEY

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(0.1.3)于9个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, Brontide agent arena

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

作者:formulahendry起步阶段↓ 66/周★ 44014个月前更新

在你的电脑上运行

Remote Desktop Commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

作者:desktop-commander正在增长★ 2113天前更新

在云端运行✓ desktopcommander.app

Brontide agent arena

THE MECH ARENA BUILT FOR AI AGENTS. HUMANS WELCOME. Pilot mech duels over MCP, free, no sign-in.

作者:beeswaxpat非常新今天更新

在云端运行✓ brontide.live

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

DRAIN MCP Server

Payments for AI Agents — No API keys, no credit cards, no subscriptions.

MCP server for the Handshake58 AI Marketplace. Agents discover service providers, pay automatically, and call any service — LLM inference, web scraping, image generation, search, and more.

Supports two payment protocols:

  • DRAIN — Payment channels on Polygon. Open once, send many requests, close when done.
  • MPP — Per-request payments via Tempo. Each request is paid individually. No channel needed.
DRAINMPP
SetupOpen channel ($0.02 gas)None
Per request$0.0001–$0.01Varies by provider
Best forHigh-volume sessionsSingle requests, REST APIs
PaymentUSDC on PolygonUSDC on Tempo chain

When to Use

Use drain-mcp when you need to:

  • Call any service (LLM, search, scraping, image gen, etc.) without API keys
  • Pay per-request with USDC — no subscriptions, no credit cards
  • Access 30+ providers through one unified interface

Do NOT use drain-mcp when:

  • You already have API keys for the service you need
  • The task doesn't require external services

TL;DR - Minimum Viable Workflow

MPP Providers (per-request, no channel)
1. drain_providers(protocol: "mpp")  → Find MPP providers
  1. drain_provider_info(id) → Read docs (essential for REST APIs)
  2. mpp_chat(provider, messages) → LLM providers (auto-pay via Tempo) — OR — mpp_request(url, body) → REST API providers (auto-pay via Tempo)
  3. drain_feedback(providerId, outcome) → Optional: report success/failure
DRAIN Providers (payment channels)
1. drain_providers(protocol: "drain") → Find DRAIN providers
  1. drain_provider_info(id) → Get provider details + usage docs
  2. drain_balance() → Check USDC + POL
  3. drain_approve() → Approve USDC spending (once)
  4. drain_open_channel(...) → Deposit USDC, get channelId
  5. drain_chat(...) → Send requests (repeat as needed)
  6. drain_cooperative_close(...) → Close early, instant refund (when done) — OR after expiry —
  7. drain_close_channel(...) → Reclaim funds (after expiry)

When to Close a Channel

  • Done with your task? → Use drain_cooperative_close(channelId). Instant refund of unspent deposit. Always do this when finished.
  • Planning more requests soon? → Keep the channel open. No need to close and reopen — saves $0.04 in gas fees.
  • Channel expired? → Use drain_close_channel(channelId). Reclaims unspent USDC after the expiry timestamp. Funds do NOT return automatically.

Rule of thumb: Close when the task is done. Keep open while working.


Already Hit a 402?

MPP providers: drain-mcp handles 402 automatically via mppx/Tempo. Just use mpp_chat or mpp_request — payment is resolved transparently.

DRAIN providers return 402 Payment Required with headers when no payment voucher is sent:

HeaderValue
X-Payment-Protocoldrain-v2
X-Payment-ProviderProvider wallet address (open channel to this)
X-Payment-ContractDRAIN contract address
X-Payment-Chain137 (Polygon Mainnet)
X-Payment-SigningURL for EIP-712 signing parameters
X-Payment-DocsProvider docs endpoint

DRAIN Flow:

  1. Call a provider endpoint (no voucher) → get 402 with headers
  2. Install drain-mcp or use the signing API at the X-Payment-Signing URL
  3. Open a channel to the X-Payment-Provider address
  4. Retry the request with an X-DRAIN-Voucher header

Everything you need is in the 402 response. No prior registration required.


Tools Reference

Discovery
drain_providers

Find service providers. Filter by model name, category, or online status.

{

"model": "gpt-4o", "category": "scraping", "onlineOnly": true }

Categories: llm, image, audio, code, scraping, vpn, multi-modal, other

drain_provider_info

Get details about a provider including usage instructions (docs). The docs explain how to format requests for that provider.

{ "provider": "hs58-openai" }
Wallet
drain_balance

Check wallet USDC balance, POL for gas, and DRAIN contract allowance.

drain_approve

Approve USDC spending for the DRAIN contract. Required once before opening channels.

{ "amount": "100" }
Channels
drain_open_channel

Open a payment channel. Locks USDC for the specified duration.

{

"provider": "hs58-openai", "amount": "5.00", "duration": "24h" }

Returns channelId, expiry time, and provider usage docs.

drain_channel_status

Check a channel's deposit, spending, remaining balance, and expiry.

drain_channels

List all known channels with status (active/expired/closed). Find expired channels that need closing.

Usage (DRAIN)
drain_chat

Send a paid request through a DRAIN channel. Works for ALL DRAIN provider types:

  • LLM providers: Standard chat messages
  • Non-LLM providers: JSON payload in the user message content (check provider docs)
{

"channelId": "0x...", "model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}] }

Usage (MPP)
mpp_chat

Send a chat request to an MPP LLM provider. Payment is automatic via Tempo — no channel, no setup.

{

"provider": "provider-id-or-url", "messages": [{"role": "user", "content": "Hello"}], "model": "optional-model-id" }

mpp_request

Send a request to an MPP REST API service (Tavily, Brave, Wolfram, etc.). Payment is automatic via Tempo.

{

"url": "https://tavily.mpp.paywithlocus.com/tavily/search", "body": {"query": "AI agents", "max_results": 5} }

Read the provider's docs first (drain_provider_info) to find the correct endpoint paths and request format.

Quality Feedback
drain_feedback

Report success or failure after using any provider (DRAIN or MPP). Feeds the marketplace quality scoring system.

{

"providerId": "provider-id", "outcome": "success", "reason": "accurate_result" }

Settlement
drain_cooperative_close

Close a channel early with provider consent. Use this when your task is done — instant refund of unspent deposit. No need to wait for expiry.

{ "channelId": "0x..." }
drain_close_channel

Close an expired channel and reclaim unspent USDC. Use when the channel has passed its expiry timestamp.

{ "channelId": "0x..." }

Economics Example

Opening a GPT-4o channel:

Gas to open channel:     $0.02   (one-time)

Deposit: $0.50 (refundable remainder) Per request: ~$0.001755 Requests possible: ~285

Cost for 10 requests: $0.02 gas + $0.01755 usage = $0.04 Refund after close: $0.50 - $0.01755 = $0.48 Gas to close: $0.02

  • Protocol fee: 2% on provider claims (on-chain)
  • Session fee: none
  • Live pricing: GET https://handshake58.com/api/mcp/providers

Provider Categories

Providers are not limited to LLM chat. Each provider has a category field and a docs endpoint explaining how to format requests.

CategoryDescriptionMessage Format
llmLanguage models (GPT-4o, Claude, Grok, Gemini)Standard chat messages
imageImage generationJSON in user content (see docs)
audioAudio/TTS/STTJSON in user content (see docs)
codeCode generationStandard chat or JSON (see docs)
scrapingWeb scraping, data extractionJSON in user content (see docs)
vpnVPN servicesJSON in user content (see docs)
multi-modalMulti-modal modelsStandard chat messages
otherEverything elseAlways check docs

Rule: For any category other than `llm`, call `drain_provider_info` first to read the docs.


Decision Trees

Choosing a Protocol
What provider do I want?

├── MPP provider (protocol="mpp") │ ├── mppType="llm" → mpp_chat(provider, messages) │ └── mppType="rest" → mpp_request(url, body) │ └── Done. Payment was automatic. │ └── DRAIN provider (protocol="drain") └── See DRAIN flow below

Starting a DRAIN Session
Do I have an active channel?

├── YES → Use drain_chat() with existing channelId └── NO → ├── drain_balance() → Do I have USDC? │ ├── NO → Cannot proceed. Need USDC on Polygon. │ └── YES → │ ├── drain_providers() → Find provider │ │ ├── NO providers → Cannot proceed. │ │ └── Found provider → │ │ ├── drain_approve() → First time only │ │ └── drain_open_channel() → Get channelId │ │ └── drain_chat() → Send requests

Ending a DRAIN Session
Am I done with this task?

├── YES → drain_cooperative_close(channelId) → Instant refund └── NO → ├── More requests soon? → Keep channel open └── Channel expired? → drain_close_channel(channelId) → Reclaim funds

Choosing Amount and Duration
Use CaseAmountDuration
Quick test / single query$0.50 - $11h
Short task (few queries)$2 - $54h
Extended session$5 - $2024h
Long-running agent$20 - $1007d
Handling Errors
"Insufficient balance"

→ Need more USDC. Check drain_balance().

"Insufficient allowance" → Run drain_approve().

"Channel not found" → channelId is wrong or channel was closed. Open new channel.

"Channel expired" → For drain_chat: Open a new channel. → For drain_close_channel: Expected. Proceed with close.

"Insufficient channel balance" → Channel deposit used up. Open new channel with more funds.

"Provider offline" → Use drain_providers() to find alternative provider.


Setup

1. Install
npm install -g drain-mcp
2. Create a Wallet (locally)

Generate a key on your own machine — nothing is sent over the network:

node -e "const w=require('ethers').Wallet.createRandom();console.log('Address:', w.address, '\nKey:', w.privateKey)"
3. Fund the Wallet

Send $1–5 USDC on Polygon Mainnet to your wallet address. Use a dedicated low-value wallet — never your main wallet.

No POL needed — if your wallet holds $5+ USDC, free gas is provided:

curl -X POST https://handshake58.com/api/gas-station \

-H "Content-Type: application/json" \ -d '{"address": "0x_your_wallet_address"}'

Returns 0.1 POL (~10K transactions). Sends only your public address.

4. Configure MCP Client
{

"mcpServers": { "drain": { "command": "drain-mcp", "env": { "DRAIN_PRIVATE_KEY": "0x..." } } } }

Environment Variables
VariableRequiredDefaultDescription
DRAIN_PRIVATE_KEYYes—Polygon wallet private key (also used for MPP/Tempo)
DRAIN_CHAIN_IDNo137137 (Polygon) or 80002 (Amoy testnet)
DRAIN_RPC_URLNoPublic RPCCustom Polygon RPC endpoint
DRAIN_MPP_MAX_DEPOSITNo1Max USDC per MPP session deposit

Security & Privacy

Key Handling

DRAIN_PRIVATE_KEY is loaded into memory by the local MCP process. It is used for:

  1. EIP-712 voucher signing for DRAIN channels (off-chain, no network call)
  2. On-chain transaction signing (signed locally, only the signature is broadcast)
  3. Tempo payment signing for MPP requests (handled by mppx, signed locally)

The key is never transmitted to any server. Providers verify signatures against on-chain state.

Spending Limits

DRAIN: Exposure is capped by the smart contract:

  • Maximum spend = channel deposit (you choose the amount)
  • Channel has a fixed duration (you choose)
  • After expiry, unspent funds are reclaimable via drain_close_channel

MPP: Each request is paid individually at the provider's advertised price. No pre-d

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx