faucet-mcp
Enables a coding agent to request small dev funds (ETH/WETH/USDC/USDT) from a personal hot wallet with per-call and 24h caps, plus TOTP approval for amounts over soft caps.
README
faucet-mcp
MCP server that lets a coding agent request small dev funds (ETH/WETH/USDC/USDT) from a personal hot wallet, with caps and TOTP approval so a misbehaving agent can't drain it.
Why
Agent work on smart wallets constantly needs small dev top-ups: fund a fresh smart account, seed a session key, test on a new chain. Public faucets are unreliable and rate-limited; topping up by hand is friction. This is a self-hosted faucet over MCP behind tight per-call and 24h budgets.
Features
- Two MCP tools:
send(transfer) andstatus(balances + remaining budget). - Two-layer caps scoped per
(chain class, token pool):- Soft caps — enforced unconditionally.
- Hard caps (10× soft) — also unconditional and not bypassable with a code.
- TOTP approval required for amounts above the soft cap; codes are single-use within a 90s replay window.
- Token pools: USDC + USDT share a
STABLEwindow; ETH + WETH shareETHWETH. - JIT WETH wrap on native-ETH chains — sends WETH even when the funder only holds ETH.
- Rolling 24h windows, pruned on each read.
- Chains:
ethereum,base,arbitrum,optimism,polygon,plasma+ their sepolia testnets andplasma-testnet.
Caps (defaults)
| Chain class | Pool | Soft/call | Soft 24h | Hard/call | Hard 24h |
|---|---|---|---|---|---|
| mainnet | stable | 0.10 | 1.0 | 1.0 | 10.0 |
| mainnet | eth | 0.00002 | 0.0005 | 0.0002 | 0.005 |
| testnet | stable | 2 | 20 | 20 | 200 |
| testnet | eth | 0.001 | 0.01 | 0.01 | 0.1 |
Setup
bun install
bun run setup # generates a FAUCET_TOTP_SECRET + otpauth URI
cp .env.example .env # then fill FUNDING_PRIVATE_KEY and FAUCET_TOTP_SECRET
Add the printed otpauth:// URI (or scan the QR) into Apple Passwords / 1Password as a verification-code entry. Fund the hot wallet with small dev amounts on the chains/tokens you expect to use.
Smoke-test the TOTP loop:
bun run bin/verify.ts <6-digit code from your authenticator>
Configuration
| Variable | Required | Default | Description |
|---|---|---|---|
FUNDING_PRIVATE_KEY |
yes | — | 0x-prefixed hot wallet private key. |
FAUCET_TOTP_SECRET |
yes | — | Base32 TOTP secret (generated by bun run setup). |
FAUCET_STATE_FILE |
no | ~/.faucet/state.json |
Path for the rolling 24h send log + OTP replay cache. |
RPC_URL_<chainId> |
no | viem's public RPC | Override the RPC for a specific chain (e.g. RPC_URL_1=https://...). |
Wire into Claude Code
~/.claude.json or project .claude/settings.json:
{
"mcpServers": {
"faucet": {
"command": "bun",
"args": ["run", "--cwd", "/absolute/path/to/faucet-mcp", "src/server.ts"]
}
}
}
bun run --cwd <dir> makes Bun auto-load .env from the faucet directory, so the MCP can be invoked from any cwd.
Tools
send(amount, token, chain, recipient, code?)— execute a transfer.amountis a decimal string in human units (e.g."0.5"), never wei.codeis required only when the request exceeds the soft cap.status(chain?, token?)— funder balances, configured caps, used budget, remaining window. Use this to plan before callingsend.
License
MIT — see LICENSE.
For the full design notes, threat model, and limitations: see AGENTS.md.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.