Polyrank
Polymarket trader analytics for AI agents: rank wallets, read trader metrics, backtest strategies.
作者による説明(英語の原文)
Monad blockchain gateway for AI agents: balances, transfers, swaps, DeFi, with Privy signing.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
PRIVY_APP_ID, PRIVY_APP_SECRET, MONAD_DEFAULT_NETWORK「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、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"
}
}
}
}ターミナルでこれを実行します
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-mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.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"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"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"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
PRIVY_APP_ID envMONAD_DEFAULT_NETWORK envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント pareen で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:PRIVY_APP_SECRET
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.2.1)がレジストリに届いたのは5 か月前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Polyrank, Agent Data Tools: Prices and DeFi, Agent Data Tools: Chain data
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Polymarket trader analytics for AI agents: rank wallets, read trader metrics, backtest strategies.
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.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
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
冒頭だけを表示しています。続きはリポジトリで読めます