Server data from the Official MCP Registry
Agent-native lending on Solana via x402: borrow against tokens, arm in-vault TP/SL, repay.
Agent-native lending on Solana via x402: borrow against tokens, arm in-vault TP/SL, repay.
The MCP server is a well-architected wrapper around a Solana lending protocol API with strong foundational security practices (no custody, signed transactions, nonce-based replay protection). However, there are several moderate-severity concerns: environment variable validation is incomplete (missing SOLANA_RPC_URL check despite critical usage), rate-limiting can be bypassed when X-Payment headers are present, and error handling may leak sensitive payment state information. These issues don't create critical exploits but represent gaps in defense-in-depth. Supply chain analysis found 7 known vulnerabilities in dependencies (0 critical, 2 high severity). Package verification found 1 issue (1 critical, 0 high severity).
4 files analyzed · 14 issues 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.
Unverified package source
We couldn't verify that the installable package matches the reviewed source code. Proceed with caution.
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-magpiecapital-magpie-mcp": {
"args": [
"-y",
"magpie-x402"
],
"command": "npx"
}
}
}From the project's GitHub README.
x402 payment-required API endpoints for the Magpie Capital protocol. AI agents and other Solana protocols can pay-per-call for credit scores, token risk assessments, and protocol analytics — no API keys, no signups, just a Solana payment.
AI agent
│
│ GET /api/v1/credit-score?wallet=…
▼
┌────────────────────┐
│ 402 Payment │
│ Required │ ← scheme, recipient, amount, nonce
└─────────┬──────────┘
│
│ Solana tx
▼ (transfer to MAGPIE_PAY_TO
┌────────────────────┐ + memo `magpie-x402:<nonce>`)
│ on-chain ↪ Solana │
└─────────┬──────────┘
│
│ retry GET with header X-Payment: <signature>
▼
┌────────────────────┐
│ Service verifies │ ← amount, recipient, mint, memo nonce,
│ payment on-chain │ nonce not previously consumed
└─────────┬──────────┘
│
▼
{ score, tier, … }
| Method | Path | Price | Description |
|---|---|---|---|
| GET | / | Free | Service info + endpoint catalog |
| GET | /health | Free | Liveness check |
| GET | /.well-known/x402.json | Free | Machine-readable endpoint catalog (auto-discovery) |
| GET | /openapi.json | Free | OpenAPI 3.1 spec (for agent frameworks) |
| GET | /api/v1/pool | Free | Live on-chain LendingPool state — totalDeposits, totalBorrowed, lifetime counters. 15s cache. |
| GET | /api/v1/pools | Free | All three strategy pools (V1 memecoin / V3 RWA / V4 in-vault) in one call, with a partial map if any version is unreachable. 15s cache. |
| GET | /api/v1/loan/:loanId?borrower=<pubkey> | Free | Loans matching a u64 ID across V1/V3/V4. Returns a list (a borrower can hold the same numeric ID in more than one program) — each tagged with program_version. 10s cache. |
| GET | /api/v1/loan/by-pda/:loanPda | Free | Single loan by its PDA — unambiguous, routed to V1/V3/V4 from the on-chain owner. Returns program_version, V4 in-vault exit state, and exits_supported. 10s cache. |
| GET | /api/v1/wallet/:wallet/loans?status=... | Free | All loans owned by a wallet across V1/V3/V4 via getProgramAccounts + memcmp filter, each tagged with program_version (with a by_version count). Optional status filter. 8s cache. |
| GET | /api/v1/collateral/eligible | Free | Catalog of every token currently approved as Magpie collateral. First-touch for new agent integrations. 1h cache. |
| GET | /api/v1/markets/liquidatable | Free | Active loans at or past their on-chain due timestamp across V1/V3 — the canonical liquidation-bot data feed, each tagged with program_version. Sorted most-past-due-first. Optional ?within_seconds= for pre-positioning, ?include_v4=true to include in-vault V4 loans. 8s cache. |
| GET | /api/v1/agent/activity | Free | Anonymized recent borrow/repay/liquidate events. First-touch "is this protocol alive?" feed for arriving agents. 15s cache. |
| GET | /api/v1/agent/protocol-pulse | Free | 24h aggregates: active loans, active borrowers, borrow volume, liquidations. 30s cache. |
| GET | /api/v1/agent/leaderboard | Free | Top wallets by Magpie credit score, anonymized. 60s cache. |
| GET | /api/v1/agent/lp-state?wallet=<pubkey> | Free | Depositor position + pool context (shares, deposited, current value, yield, share-of-pool). 10s cache. |
| GET | /api/v1/agent/self-limit-close/list?wallet=<pubkey> | Free | A wallet's armed in-vault exit orders (TP/SL) on its V4 loans. |
| GET | /api/v1/credit-score?wallet=<pubkey> | 0.001 SOL | Magpie credit score (300–850) + tier benefits |
| POST | /api/v1/agent/build-borrow | 0.005 SOL | Build an unsigned borrow tx. Pass has_exit_arming: true to route to the V4 in-vault program (so exit orders can be armed on the loan); otherwise routes to V1 (memecoin) — and, once it launches, V3 (RWA). |
| POST | /api/v1/agent/build-deposit | 0.002 SOL | Build an unsigned LP-deposit tx (SOL → pool). Caller signs and submits. |
| POST | /api/v1/agent/build-withdraw | 0.002 SOL | Build an unsigned LP-withdraw tx (shares → SOL). Server validates against the on-chain position and refuses unsafe chunk sizes. |
| POST | /api/v1/agent/self-limit-close/arm | 0.001 SOL | Arm an in-vault take-profit / stop-loss on your OWN V4 loan. Body is an Ed25519 signed envelope; pays AND signs with the same keypair, so payer == signer. Bot enforces ownership + V4-only. |
| POST | /api/v1/agent/self-limit-close/modify | Free | Modify an armed exit order (signed envelope). |
| POST | /api/v1/agent/self-limit-close/cancel | Free | Cancel an armed exit order (signed envelope). |
All free endpoints query the on-chain Magpie program directly and have proper Cache-Control headers so CDN edges serve repeat reads without round-tripping.
Loan and pool reads are multi-version: every loan/pool is resolved across the V1 (memecoin), V3 (RWA — on the V3 launch), and V4 (in-vault auto-sell) programs and tagged with its program_version. These reads fail soft — if one version is unreachable, the rest still return and the affected version is reported in a partial map rather than erroring the whole call. The /api/v1/agent/self-limit-close/* surface lets a borrower-agent arm, modify, cancel, and list self-owned in-vault exit orders (take-profit / stop-loss) on its own V4 loans, authenticated by an Ed25519 signed envelope where the x402 payer is also the envelope signer.
🚀 Building your first Magpie agent? Read
QUICKSTART.md— zero to a working autonomous borrow agent on Solana in 10 minutes, using the typed SDK.📦 TypeScript SDK (
@magpieloans/magpie-agent): every action as a one-liner. Borrow, lend, liquidate, post conditional intents — no HTTP plumbing. Seesdk/README.md.🧩 MCP server for Claude Desktop / Cursor / Windsurf / ChatGPT desktop: one config block, 19 tools. See
mcp/README.md.🎯 Limit-close agent quickstart — full end-to-end walkthrough for agents that arm, monitor, and steer limit-close (TP/SL) orders on borrowers' loans. Authorization flow, every endpoint, sample code, error reference, best practices. See
docs/AGENT_QUICKSTART_LIMIT_CLOSE.md.👉 Just want code examples?
/examples/— 10 turn-key TypeScript agents (credit fetch, liquidation keeper, full borrow loop, conditional intent, yield agent, webhook receiver, collateral screener, equity-leverage preview, more) that talk to the live production endpoint. Each is a single file, runs withnpx tsx.🧩 Using Claude Desktop, Cursor, Windsurf, or ChatGPT desktop?
/mcp/ships a one-config-block MCP server that exposes the full API as native tools in your agent host. Free reads work without any keypair; paid endpoints sign x402 payments locally with a configured Solana wallet.
More paid endpoints in progress (token risk score, batch credit lookups, webhook subscriptions, MCP server, LP-side build-deposit / build-withdraw) — see MARKETING.md for the agent-distribution roadmap or open an issue if you want one prioritized.
curl -i https://x402.magpie.capital/api/v1/credit-score?wallet=9UuLsJ3jf8ViBNeRcwXD53re5G3ypgfKK3s2EiMMpump
Response:
HTTP/2 402
X-Payment-Required-Scheme: x402/solana/v1
X-Payment-Required-Amount: 1000000
X-Payment-Required-Recipient: <MAGPIE_PAY_TO pubkey>
X-Payment-Required-Nonce: a1b2c3...
X-Payment-Required-Memo: magpie-x402:a1b2c3...
{
"error": "payment_required",
"scheme": "x402/solana/v1",
"payTo": "...",
"amountLamports": "1000000",
"nonce": "a1b2c3...",
"memo": "magpie-x402:a1b2c3...",
"instructions": "Send 1000000 lamports of SOL to ... with memo 'magpie-x402:...', then retry with header X-PAYMENT: <tx_signature>"
}
Send a SystemProgram::transfer (or SPL Token transfer) for the exact amount to the recipient pubkey, with the memo instruction containing the challenge string. Confirm.
curl -i \
-H "X-Payment: <your_tx_signature>" \
https://x402.magpie.capital/api/v1/credit-score?wallet=9UuLsJ3jf8ViBNeRcwXD53re5G3ypgfKK3s2EiMMpump
Response:
{
"wallet": "9UuLsJ...",
"score": 712,
"tier": "gold",
"range": { "min": 300, "max": 850 },
"benefits": { "maxLtvPercent": 35, "minFeeRate": 0.0125, "maxDurationDays": 14 },
"source": "magpie-credit-oracle"
}
git clone git@github.com:magpiecapital/magpie-x402.git
cd magpie-x402
cp .env.example .env # fill in MAGPIE_PAY_TO + MAGPIE_LENDER_PUBKEY
npm install
npm run dev # http://localhost:8402
The repo is structured for Vercel serverless out of the box:
api/index.ts — Vercel-native entry, handles every request via hono/vercel adaptervercel.json — routes all paths to /apisrc/app.ts — the shared Hono app (also used by local dev)src/index.ts — local-dev Node server (NOT used by Vercel)magpiecapital/magpie-x402 from GitHubMAGPIE_PAY_TO — your Solana treasury pubkeyMAGPIE_LENDER_PUBKEY — the Magpie lender authoritySOLANA_RPC_URL — use a paid Helius/Triton/QuickNode URL for speed (public RPC will rate-limit you)CORS_ORIGINS — comma-separated allowlist (use * only during testing)RATE_LIMIT_PER_MIN and RATE_LIMIT_PER_HOUR — tune per trafficnpm install && npm run build (or just npm install since Vercel handles TS) — ~1 minute.curl https://<your-deployment>.vercel.app/api/v1/poolAfter the first deploy, in Settings → Domains attach x402.magpie.capital (or any subdomain you control). Vercel handles the TLS cert automatically.
@solana/web3.js depends on Buffer + Node crypto primitives that don't ship in Vercel's Edge runtime. Once @solana/kit (web3.js v2) stabilizes for Edge, switching gets us another latency win — but Node serverless is plenty fast for v0 (cold start ~150–250ms, warm <10ms server-side).
The in-memory nonce store (in src/middleware/x402.ts) and rate-limit buckets are per-instance. At low traffic, Vercel runs a single warm instance and this works fine. At high concurrency, Vercel scales horizontally — a payment challenge issued by instance A might fail validation on instance B because B hasn't seen the nonce.
When that becomes a problem (it isn't for v0 — but if you push >20 req/s sustained, plan for it):
@vercel/kv.Both paths sketched in SECURITY.md under "production hardening".
See SECURITY.md for the full posture. Highlights:
.env is gitignored; .gitignore excludes any file matching *keypair*.json, *.pem, *.key, etc.To report a vulnerability: open a GitHub issue tagged security, or contact us via https://magpie.capital/security.
MIT — see LICENSE.
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.