Agent Data Tools: Prices and DeFi
50 tools: token prices, wallet and contract risk, liquidity pools, FX. 25 free calls.
Descripción del creador (original en inglés)
Monad blockchain gateway for AI agents: balances, transfers, swaps, DeFi, with Privy signing.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
PRIVY_APP_ID, PRIVY_APP_SECRET, MONAD_DEFAULT_NETWORKLos valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"monad": {
"command": "npx",
"args": [
"-y",
"monad-mcp"
],
"env": {
"PRIVY_APP_ID": "your-value",
"PRIVY_APP_SECRET": "your-value",
"MONAD_DEFAULT_NETWORK": "your-value"
}
}
}
}Ejecuta esto en tu terminal
claude mcp add monad --env PRIVY_APP_ID=your-value --env PRIVY_APP_SECRET=your-value --env MONAD_DEFAULT_NETWORK=your-value -- npx -y monad-mcpCompleta los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"monad": {
"command": "npx",
"args": [
"-y",
"monad-mcp"
],
"env": {
"PRIVY_APP_ID": "your-value",
"PRIVY_APP_SECRET": "your-value",
"MONAD_DEFAULT_NETWORK": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"monad": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"monad-mcp"
],
"env": {
"PRIVY_APP_ID": "your-value",
"PRIVY_APP_SECRET": "your-value",
"MONAD_DEFAULT_NETWORK": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
PRIVY_APP_ID envMONAD_DEFAULT_NETWORK envEsta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub pareen, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
Debes completar: PRIVY_APP_SECRET
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (0.2.1) llegó al registro hace 5 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Node.js en tu computadora.
En la misma categoría: Agent Data Tools: Prices and DeFi, Agent Data Tools: Chain data, Bellchain
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
50 tools: token prices, wallet and contract risk, liquidity pools, FX. 25 free calls.
360 tools: balances, blocks, gas, txs and logs on 5 EVM chains, plus Bitcoin. 25 free calls.
Crypto alert chains in your AI assistant: check alerts, test ideas with the replay, build chains.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
MCP server for the Monad blockchain. Your agent's gateway to balances, transfers, swaps, and DeFi on Monad — with signing handled by a Privy embedded wallet, never by the agent.
Built around a simple shape — stored requests + approval URLs + skill plugins — on Monad mainnet 143 / testnet 10143, with Privy as the wallet provider.
🌐 Landing page + live read-only demo: pareen.github.io/monad-mcp — query real Monad balances in your browser, exactly what the agent sees.
🔌 Connect it — no install, no terminal. In Claude Desktop or ChatGPT, add a custom connector and paste this URL:
https://monad-mcp.fly.dev/mcp
That's the whole setup — read tools (balances, prices, portfolios, token checks) work immediately. Step-by-step for each app: docs/connect-claude.md.
Prefer the terminal? One line in Claude Code:
claude mcp add --transport http monad https://monad-mcp.fly.dev/mcp # hosted
claude mcp add monad -- npx -y monad-mcp # or run it locally
The hosted endpoint runs in split mode: read tools are public (paste the URL, no login — safe to share) and write tools are gated behind a Privy sign-in, returning auth_required until you authenticate. The hosted sign-in path is wired but still being verified end-to-end, so the tested route for transactions is your own Privy-signed instance — see docs/connect-claude.md, docs/FAQ.md for common security/setup questions, and docs/DEPLOY.md.
🧭 Monad ≠ Ethereum: the server ships agent-facing guidance on Monad's quirks (128 KB contracts, gas_limit billing, speculative latest, eth_getLogs caps, FastLane/MEV) as monad://guide/* MCP resources — see docs/building-on-monad.md.
Core tools (work on any address; auth required only where noted):
| Tool | Auth | What it does |
|---|---|---|
create_user | none | Provision a Privy user + Monad-ready embedded wallet. Self-serve onboarding. |
whoami | required | User id, wallet address, and active session-key grants. |
get_address | required | Returns the connected wallet's address. |
get_balance | optional | Native MON balance. Accepts a 0x address or a .nad name. |
get_token_balance | optional | ERC-20 balance with decimals + symbol. Accepts a .nad name. |
get_portfolio | optional | All canonical token balances × USD prices via DexScreener. Accepts a .nad name. |
get_transaction_history | optional | Recent ERC-20 transfers via RPC log scan + explorer URL. Accepts a .nad name. |
get_tx_receipt | none | Receipt for a tx hash. |
simulate_transaction | optional | Dry-run a call (eth_call), returns return data or revert reason. |
check_token | none | Risk heuristics: canonical-list membership, bytecode, DEX liquidity, pair age. |
resolve_token | none | Symbol/name/alias → token address (canonical list + DexScreener fallback). |
get_token_price | none | USD price from the deepest-liquidity DexScreener pair on Monad. |
list_canonical_tokens | none | Built-in list of well-known Monad tokens. |
resolve_name | none | Nad Name Service (nad.domains): .nad name → address, and address → primary .nad name. |
read_contract | none | Call any view/pure function on any Monad contract (ABI provided inline). |
decode_return_data | none | Decode hex return data against an ABI. |
bridge_quote | optional | LiFi aggregator quote from any chain into Monad. |
poll_request | none | Status of a pending approval request. |
transfer | required | Native MON or ERC-20 transfer. Recipient may be a 0x address or a .nad name. Auto-executes under a session grant, else → approval URL. |
write_contract | required | Send a tx to any contract (any non-view function). |
pay_for_service | required | x402 (HTTP 402) — signs an EIP-3009 USDC authorization via Privy and retries with X-PAYMENT. |
bridge_execute | required | Submit the source-chain tx returned by bridge_quote (Monad sources only). |
grant_session_key | required | Authorize the agent to spend up to N MON without per-tx approvals. |
list_session_keys | required | Show active + recent grants. |
revoke_session_key | required | Cancel a grant immediately. |
Skill plugins (additive, drop in your own under src/plugins/):
uniswap_quote, uniswap_swap, approve_erc20) — exact-input single-hop swaps on Uniswap v3 (testnet + mainnet).kintsu_stake, kintsu_request_unstake, kintsu_claim_unstake, kintsu_position) — liquid staking MON → sMON via Kintsu's ERC-7535 vault. Two-step unstake with batch processing.fastlane_stake, fastlane_unstake, fastlane_position) — liquid staking MON → shMON via FastLane's shMONAD ERC-4626 vault. Payable native deposit, synchronous redeem (no epoch wait); shMON keeps earning staking + MEV rewards.morpho_supply, morpho_withdraw, morpho_borrow, morpho_repay, morpho_position, morpho_market) — lending on Morpho Blue's singleton. Caller passes MarketParams inline; plugin derives the market id.kuru_best_bid_ask, kuru_market_params, kuru_place_limit, kuru_cancel_orders, kuru_market_swap) — fully-on-chain CLOB. Ships with known mainnet markets (MON/USDC, MON/AUSD, WETH/USDC); accepts raw addresses for new ones.All write tools across plugins auto-route through a covering session-key grant (see "Session keys" below); otherwise they return an approval URL.
Mainnet-only plugins (Kintsu / FastLane / Morpho / Kuru) are skipped at boot when MONAD_DEFAULT_NETWORK=testnet. Override per-tool with network: "mainnet".
git clone https://github.com/you/monad-mcp.git
cd monad-mcp npm install cp .env.example .env
Edit .env. Minimum config to do anything useful with write tools:
PRIVY_APP_ID=clxxxxxxxxxxx # from https://dashboard.privy.io
PRIVY_APP_SECRET=... # from the same place PRIVY_VERIFICATION_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----" # optional but recommended
PUBLIC_BASE_URL=http://localhost:8787 PORT=8787
network.MONAD_DEFAULT_NETWORK=testnet
For the Uniswap plugin, supply contract addresses (verify against the canonical Uniswap deployment for Monad before using):
UNISWAP_MAINNET_QUOTER_V2=0x...
UNISWAP_MAINNET_SWAP_ROUTER_02=0x... UNISWAP_TESTNET_QUOTER_V2=0x... UNISWAP_TESTNET_SWAP_ROUTER_02=0x...
In the Privy dashboard:
143) and/or testnet (chainId 10143) as an EVM chain..env.PRIVY_VERIFICATION_KEY for fastest token verification. If omitted, the server falls back to JWKS over the network.Privy embedded wallets are user-owned by default — the server cannot sign for them. The MCP server needs a P-256 key quorum registered with Privy, attached as an additional_signer on every wallet it provisions. Bootstrap it:
npm run bootstrap:auth-key
After bootstrap, every create_user call attaches the quorum at wallet creation, and every transfer/swap includes the private key in authorization_context. Important: wallets minted *before* you set these env vars are stranded — Privy doesn't let you retrofit an additional_signer (updating authorization requires existing authorization). Always bootstrap first.
# Stdio mode for Claude Desktop, Cursor, etc.
npm run build npm start
npm run start:http
Add to ~/Library/Application Support/Claude/claude_desktop_config.json. The --env-file flag loads PRIVY_*, MONAD_*, and PUBLIC_BASE_URL from your .env into the spawned process:
{
"mcpServers": { "monad": { "command": "node", "args": [ "--env-file=/absolute/path/to/monad-mcp/.env", "/absolute/path/to/monad-mcp/dist/index.js" ] } } }
You'll also need the HTTP server running (npm run start:http) for the approval flow — the stdio MCP returns approval URLs that point at the HTTP server. See docs/claude-desktop.md for the full dogfood walkthrough (bootstrap, funding, first transfer).
Public reads, no self-hosting: to use the read tools (balances, portfolio, history) without building anything, point Claude Desktop at the hosted endpoint via the
mcp-remoteshim —"args": ["-y", "mcp-remote", "https://monad-mcp.fly.dev/mcp"]. Writes (transfers/swaps) are gated behind a Privy sign-in; the verified path for them is a self-hosted signer.
What's the balance of 0x000…0000 on Monad testnet?
Send 0.01 MON to 0xabc… on Monad testnet.
For the second prompt the agent calls transfer, hands you a link like http://localhost:8787/approve/ , and you approve in your browser. The agent polls poll_request and reports the tx hash.
agent (Claude / ChatGPT / Cursor)
│ │ MCP over stdio OR Streamable HTTP (with OAuth 2.1 bearer) ▼ monad-mcp server │ ├── core tools viem → Monad RPC (mainnet 143 / testnet 10143) ├── skill plugins Uniswap / Kuru / Kintsu / Morpho (additive) │ ├── auth bridge Privy server SDK (verify access token, resolve embedded wallet) │ └── stored requests pending tx ↔ approval URL ↔ user signature ▲ │ └── /approve/:id → Privy hosted signing → tx hash
Write tools follow the stored request pattern:
{ to, value, data } payload and a human-readable summary.https://your-server/approve/ to the agent.poll_request and continues.The agent never touches a private key. Privy's TEE-backed key custody + wallet policies are the security envelope.
Plugins live in src/plugins/ / and export a SkillPlugin:
import type { SkillPlugin } from "../types.js";
import { registerTool } from "../../tools/registry.js";
export const myPlugin: SkillPlugin = { id: "myproto", name: "MyProto on Monad", description: "What it does in one sentence.", networks: ["mainnet", "testnet"], register(mcp, server) { registerTool(mcp, server, myReadTool); registerTool(mcp, server, myWriteTool); }, };
Register it in src/plugins/index.ts. Write tools just need to construct a { to, value, data } payload and call server.store.create(...) — the approval flow is shared.
npm test # vitest unit tests (no network) — 56 tests
npm run test:integration # int
Solo se muestra el principio; lee el resto en el repo