Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Pay for AI inference with USDC micropayments on Polygon. No API keys needed.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
DRAIN_PRIVATE_KEY「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
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/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"drain": {
"command": "npx",
"args": [
"-y",
"drain-mcp"
],
"env": {
"DRAIN_PRIVATE_KEY": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"drain": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"drain-mcp"
],
"env": {
"DRAIN_PRIVATE_KEY": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント kimbo128 で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:DRAIN_PRIVATE_KEY
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.1.3)がレジストリに届いたのは9 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, arr-mcp
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
One server, 40 tools, the whole media stack: *arrs, Jellyfin, Plex, Seerr, Cleanuparr, downloaders
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
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 | MPP | |
|---|---|---|
| Setup | Open channel ($0.02 gas) | None |
| Per request | $0.0001–$0.01 | Varies by provider |
| Best for | High-volume sessions | Single requests, REST APIs |
| Payment | USDC on Polygon | USDC on Tempo chain |
Use drain-mcp when you need to:
Do NOT use drain-mcp when:
1. drain_providers(protocol: "mpp") → Find MPP providers
1. drain_providers(protocol: "drain") → Find DRAIN providers
drain_cooperative_close(channelId). Instant refund of unspent deposit. Always do this when finished.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.
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:
| Header | Value |
|---|---|
X-Payment-Protocol | drain-v2 |
X-Payment-Provider | Provider wallet address (open channel to this) |
X-Payment-Contract | DRAIN contract address |
X-Payment-Chain | 137 (Polygon Mainnet) |
X-Payment-Signing | URL for EIP-712 signing parameters |
X-Payment-Docs | Provider docs endpoint |
DRAIN Flow:
402 with headersdrain-mcp or use the signing API at the X-Payment-Signing URLX-Payment-Provider addressX-DRAIN-Voucher headerEverything you need is in the 402 response. No prior registration required.
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
Get details about a provider including usage instructions (docs). The docs explain how to format requests for that provider.
{ "provider": "hs58-openai" }
Check wallet USDC balance, POL for gas, and DRAIN contract allowance.
Approve USDC spending for the DRAIN contract. Required once before opening channels.
{ "amount": "100" }
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.
Check a channel's deposit, spending, remaining balance, and expiry.
List all known channels with status (active/expired/closed). Find expired channels that need closing.
Send a paid request through a DRAIN channel. Works for ALL DRAIN provider types:
{
"channelId": "0x...", "model": "gpt-4o", "messages": [{"role": "user", "content": "Hello"}] }
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" }
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.
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" }
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..." }
Close an expired channel and reclaim unspent USDC. Use when the channel has passed its expiry timestamp.
{ "channelId": "0x..." }
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
GET https://handshake58.com/api/mcp/providersProviders are not limited to LLM chat. Each provider has a category field and a docs endpoint explaining how to format requests.
| Category | Description | Message Format |
|---|---|---|
| llm | Language models (GPT-4o, Claude, Grok, Gemini) | Standard chat messages |
| image | Image generation | JSON in user content (see docs) |
| audio | Audio/TTS/STT | JSON in user content (see docs) |
| code | Code generation | Standard chat or JSON (see docs) |
| scraping | Web scraping, data extraction | JSON in user content (see docs) |
| vpn | VPN services | JSON in user content (see docs) |
| multi-modal | Multi-modal models | Standard chat messages |
| other | Everything else | Always check docs |
Rule: For any category other than `llm`, call `drain_provider_info` first to read the docs.
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
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
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
| Use Case | Amount | Duration |
|---|---|---|
| Quick test / single query | $0.50 - $1 | 1h |
| Short task (few queries) | $2 - $5 | 4h |
| Extended session | $5 - $20 | 24h |
| Long-running agent | $20 - $100 | 7d |
"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.
npm install -g drain-mcp
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)"
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.
{
"mcpServers": { "drain": { "command": "drain-mcp", "env": { "DRAIN_PRIVATE_KEY": "0x..." } } } }
| Variable | Required | Default | Description |
|---|---|---|---|
DRAIN_PRIVATE_KEY | Yes | — | Polygon wallet private key (also used for MPP/Tempo) |
DRAIN_CHAIN_ID | No | 137 | 137 (Polygon) or 80002 (Amoy testnet) |
DRAIN_RPC_URL | No | Public RPC | Custom Polygon RPC endpoint |
DRAIN_MPP_MAX_DEPOSIT | No | 1 | Max USDC per MPP session deposit |
DRAIN_PRIVATE_KEY is loaded into memory by the local MCP process. It is used for:
The key is never transmitted to any server. Providers verify signatures against on-chain state.
DRAIN: Exposure is capped by the smart contract:
drain_close_channelMPP: Each request is paid individually at the provider's advertised price. No pre-d
冒頭だけを表示しています。続きはリポジトリで読めます