Server data from the Official MCP Registry
Web3 MCP proxy for AI agents: DeFi swaps, bridges, market data, wallets, and gated writes.
Web3 MCP proxy for AI agents: DeFi swaps, bridges, market data, wallets, and gated writes.
Valid MCP server (1 strong, 1 medium validity signals). No known CVEs in dependencies. Package registry verified. Imported from the Official MCP Registry.
16 files analyzed · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: CHAIN_ID
Environment variable: CONFIRM_WRITES
Environment variable: ETHERSCAN_API_KEY
Environment variable: ZEROX_API_KEY
Environment variable: COINGECKO_API_KEY
Environment variable: CCXT_CONFIG_PATH
Environment variable: OWS_PASSPHRASE
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-apegurus-web3agent": {
"env": {
"CHAIN_ID": "your-chain-id-here",
"ZEROX_API_KEY": "your-zerox-api-key-here",
"CONFIRM_WRITES": "your-confirm-writes-here",
"OWS_PASSPHRASE": "your-ows-passphrase-here",
"CCXT_CONFIG_PATH": "your-ccxt-config-path-here",
"COINGECKO_API_KEY": "your-coingecko-api-key-here",
"ETHERSCAN_API_KEY": "your-etherscan-api-key-here"
},
"args": [
"-y",
"web3agent"
],
"command": "npx"
}
}
}From the project's GitHub README.
See it in production: The Arena — 11 AI agents trade real capital through Web3Agent.
MCP package:
web3agent| npm: https://www.npmjs.com/package/web3agent | GitHub: https://github.com/Apegurus/web3agent | Contact: hello@apeguru.dev
Links: Website · GitHub · npm · The Arena · X / @Web3AgentFi
Give your AI agent EVM execution and DeFi tooling: swaps, bridges, limit and trigger orders, exchange trading, market data, research, wallet management. 190+ MCP tools. One install.
Works out of the box with Claude Code, Cursor, Windsurf, OpenCode, and Codex. Self-custodial. By default, write operations go through a confirmation queue: nothing executes without your approval unless you explicitly disable confirmations.
EVM execution is a solved problem. Stop rebuilding it. Plug in and ship.
Once installed, your AI agent can execute real DeFi operations in plain language:
Common flows avoid ABI handling and transaction building. Generic contract reads and writes are available when you provide or register an ABI, or when explorer ABI lookup is available. The agent handles routing, transaction preparation, and the confirmation queue. You approve, it executes.
npx web3agent init
This detects Claude Code, Cursor, Windsurf, OpenCode, or Codex and configures the MCP server automatically. Restart your host, then ask:
What Web3 tools do you have available, and what chain are you configured for?
For any other MCP-capable host, configure a stdio server that runs:
npx web3agent
The generic MCP config shape is:
{
"web3agent": {
"type": "stdio",
"command": "npx",
"args": ["web3agent"]
}
}
Writes are confirmation-gated by default, and wallet secrets are not exposed through MCP unless explicitly enabled.
For a step-by-step guide covering both human and agent setups, see docs/guides/universal-access.md.
npx web3agent init auto-configures Claude Code, Cursor, Windsurf, OpenCode, or Codex. No manual config edits for supported hosts.Use these after installation to get to value quickly:
List the supported chains and tell me which Web3 tools are safest to try first.
Resolve USDC, WETH, and DEGEN on Base. Show token addresses and decimals.
Quote swapping 0.01 ETH to USDC on Base, but do not execute anything.
Show yield opportunities above 5% APY and explain the main protocol risks.
Explain this wallet's recent activity on Base: 0x0000000000000000000000000000000000000000
| Host | Config location |
|---|---|
| Claude Code | ~/.claude/mcp.json |
| Cursor | .cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| OpenCode | .opencode/config.json |
| Codex | .codex/config.toml |
| OpenClaw | agent-mediated self-install via canonical guide |
Basic EVM operations use viem's chain registry and can target any viem-supported EVM chain when RPC access is available.
Enhanced swap and order integrations currently cover Ethereum, Base, Arbitrum, Optimism, Polygon, Linea, BSC, Avalanche, Sonic, Mode, Blast, Celo, and Gnosis. Token resolution, explorer, LI.FI, and market/research tools have provider-specific coverage; LI.FI bridge quotes and execution support 20+ chains through LI.FI's own chain list.
Default: Base (8453). Override with the CHAIN_ID env var or pass chainId per call.
| Capability | Provider | Notes |
|---|---|---|
| On-chain state | Native EVM tools | Balances, contract reads/writes, gas, ENS, multicall (27 tools) |
| Swaps | GOAT / Uniswap / Balancer | Same-chain, ERC-20/721 |
| Aggregated swaps | Orbs Liquidity Hub | Optimal pricing via solver network |
| Cross-chain bridges | LI.FI | 20+ chains |
| Lending | GOAT SDK / protocol integrations | Aave, Morpho, and major money-market surfaces where supported |
| Advanced orders | Orbs | Spot market, limit, TWAP, stop-loss, take-profit, delayed orders |
| Exchange trading | CCXT | Public/private access across 100+ exchanges (6 tools) |
| Block explorer | Blockscout + Etherscan | Address info, tx history, NFTs, contract ABIs, network stats (35 tools) |
| Market data | DefiLlama / CoinGecko / Binance | TVL, prices, DEX volume, stablecoin stats, sentiment (20 tools) |
| Research | DefiLlama / on-chain | Contract security, yield analysis, whale tracking, governance (13 tools) |
| Token resolution | Built-in registry + DexScreener | Symbol-to-address, long-tail assets |
| Wallet management | web3agent + Open Wallet Standard | CLI/MCP lifecycle, encrypted OWS vault when configured, legacy fallback |
| Confirmation queue | Built-in | Write operations require explicit approval by default |
| Agent protocols | aGDP / ACP / ERC-8183 / x402 / ERC-8004 | Agent marketplace, cooperation, payments |
| Price data | CoinGecko | Requires COINGECKO_API_KEY |
| 0x swaps | 0x | Requires ZEROX_API_KEY |
npx web3agent create
Scaffolds a ready-to-run project from one of three bundled templates:
Each starter uses the same web3agent lifecycle surfaces as MCP and CLI.
Root examples are included in the npm package:
# Safe import-only previews
node examples/swap.mjs
node examples/bridge.mjs
# Read-only live quote examples
node examples/swap.mjs --quote
node examples/bridge.mjs --quote
# Prepared external-wallet flows
WEB3AGENT_EXAMPLE_ACCOUNT=0x... node examples/swap.mjs --prepare
WEB3AGENT_EXAMPLE_ACCOUNT=0x... node examples/bridge.mjs --prepare
The examples default to small USDC-denominated flows and only prepare wallet actions when you pass --prepare.
import { prepareOperation, resolveCanonicalTokenSync } from "web3agent";
const chainId = 8453;
const usdc = resolveCanonicalTokenSync({ chainId, symbol: "USDC" });
const weth = resolveCanonicalTokenSync({ chainId, symbol: "WETH" });
if (!usdc || !weth) throw new Error("Missing canonical token");
const intent = await prepareOperation({
integration: "orbs",
kind: "swap",
account: "0xYourWallet",
chainId,
fromToken: usdc.address,
toToken: weth.address,
fromAmount: "10000000",
slippagePct: 0.5,
});
console.log(intent.nextActions);
import { prepareOperation, resolveCanonicalTokenSync } from "web3agent";
const fromChainId = 1;
const toChainId = 42161;
const from = resolveCanonicalTokenSync({ chainId: fromChainId, symbol: "USDC" });
const to = resolveCanonicalTokenSync({ chainId: toChainId, symbol: "USDC" });
if (!from || !to) throw new Error("Missing canonical token");
const bridge = await prepareOperation({
integration: "lifi",
kind: "bridge",
account: "0xYourWallet",
fromChainId,
toChainId,
fromToken: from.address,
toToken: to.address,
fromAmount: "1000000",
});
console.log(bridge.nextActions);
import { getAddressInfo, getTransactionHistory, listSupportedChains } from "web3agent";
const address = "0x0000000000000000000000000000000000000000";
const chainId = 8453;
const [chains, info, history] = await Promise.all([
listSupportedChains(),
getAddressInfo({ address, chainId }),
getTransactionHistory({ address, chainId, pageSize: 5 }),
]);
console.log({
supportedChains: chains.chains.length,
wallet: info,
recentTransactions: history.transactions,
});
Use web3agent when you want AI agents to discover or interact with your protocol without every team rebuilding wallet, chain, token, quote, explorer, and confirmation plumbing.
Integration surfaces:
web3agent for app-owned agents and browser-wallet flowsGood first integration targets:
For protocol support or integration questions, open an issue at https://github.com/Apegurus/web3agent/issues or contact hello@apeguru.dev.
# Initialize for your host (run once)
npx web3agent init
# Start the MCP server
npx web3agent
# CLI fallback (for non-MCP hosts or scripting)
npx web3agent tools list --json
npx web3agent tools call resolve_token --input '{"symbol":"USDC","chainId":8453}' --json
npx web3agent doctor --json
# Local-only wallet secret flows (requires OWS_PASSPHRASE >= 12 chars and an interactive TTY)
OWS_PASSPHRASE='...' npx web3agent wallet generate
OWS_PASSPHRASE='...' npx web3agent wallet generate --mnemonic
OWS_PASSPHRASE='...' npx web3agent wallet activate --from-file ./secret.txt --type private-key
# Options
npx web3agent --help
npx web3agent --version
Wallet secret MCP tools are disabled by default so private keys and mnemonics do not enter an AI agent's inference context. Use the local web3agent wallet ... commands above for safe generation/import. If you explicitly accept the risk of agent-visible secrets, set WEB3AGENT_ALLOW_AGENT_VISIBLE_SECRETS=1 to re-enable the legacy MCP behavior.
wallet_deactivate only deactivates the current runtime session and returns to read-only ephemeral mode. Use confirmation-gated wallet_delete when you intentionally want to permanently remove persisted wallet material.
By default, web3agent keeps wallet secrets out of MCP tool responses and agent-visible inputs. The local web3agent wallet ... commands are the recommended way to generate or import private keys and mnemonics because they require an interactive TTY and refuse JSON secret output. Set WEB3AGENT_ALLOW_AGENT_VISIBLE_SECRETS=1 only if you explicitly accept that private keys or mnemonics can be sent through the MCP host and visible to the agent/inference provider.
For persisted server-side wallets, setting OWS_PASSPHRASE is not mandatory, but strongly recommended. When it is set on macOS/Linux and OWS is available, web3agent uses the Open Wallet Standard encrypted vault instead of the legacy filesystem-protected wallet store. The OWS spec minimum is 12 characters; web3agent warns on weak runtime passphrases and local wallet generation/import rejects shorter values. Use a 16+ character mixed passphrase in production. Configure it in the process that runs web3agent, whether that is npx web3agent as an MCP server or an app/service using createRuntime({ env: { OWS_PASSPHRASE: "..." } }).
If OWS_PASSPHRASE is missing, empty, OWS is unavailable, the platform is Windows, or OWS_FORCE_LEGACY=1 is set, web3agent falls back to legacy wallet storage protected by file permissions only. Migrating a legacy wallet.json leaves a plaintext wallet.json.migrated rollback backup; delete it after verifying OWS access. For multi-agent services, run separate wallet-using runtimes in separate processes until per-runtime wallet isolation is supported.
Use the package root for stable, typed EVM capabilities from another app or agent layer.
import {
getChain,
listChainTokens,
resolveCanonicalTokenSync,
resolveToken,
} from "web3agent";
const chain = getChain(8453);
const usdc = resolveCanonicalTokenSync({ symbol: "USDC", chainId: 8453 });
const tokens = listChainTokens({ chainId: 8453 });
const discovered = await resolveToken({ symbol: "DEGEN", chainId: 8453 });
console.log(
chain?.name,
usdc?.address,
discovered.address,
tokens.tokens.length,
);
Use resolveCanonicalToken() for well-known registry tokens and native-token aliases. Use resolveToken() when you also want DexScreener discovery fallback for long-tail assets.
Use the root API when your app owns the signer (e.g. a browser wallet via wagmi or AppKit).
import {
prepareOperation,
resumeOperation,
simulateTransaction,
} from "web3agent";
prepareOperation(...) returns the next wallet actions plus resumeStateresumeOperation(...) continues until the operation completesTransaction actions are only considered complete once you return a confirmed result:
{ type: "transaction", txHash: "0x...", status: "confirmed" }
resumeOperation() independently verifies the receipt before advancing.
Architecture notes: docs/architecture/browser-wallet-operations.md
Use web3agent/runtime when you need tool discovery, generic invocation, or upstream passthrough tools.
import { createRuntime } from "web3agent/runtime";
const runtime = await createRuntime();
try {
console.log(runtime.getHealth());
console.log(
runtime
.listTools()
.slice(0, 5)
.map((tool) => tool.name),
);
const result = await runtime.invokeTool("list_supported_chains");
console.log(result.structuredContent);
} finally {
await runtime.shutdown();
}
See WEB3_CONTEXT.md for the full environment variable reference.
For authenticated exchange access via CCXT tools, set CCXT_CONFIG_PATH to a JSON file containing named accounts and exchange credentials.
MIT
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.