MCP server for ProFunding — AI-powered funding rate arbitrage across 20+ perp DEXes
Project description
ProFunding MCP Server
MCP server for ProFunding — funding rate arbitrage across 20+ perpetual DEXes, with AI-driven trading.
Analyze opportunities, check liquidity, run backtests, manage credentials, open and close delta-neutral positions, and supervise them with optimal-exit search — all directly from your AI assistant.
Installation
pip install profunding-mcp
Setup
Get a free API key
Most tools (trading, account, find-exit, deep analytics) require an API key. Keys are free at profunding.pro — sign up takes seconds, no credit card. Market-data and backtest tools work without a key.
Claude Code
With a key (recommended — unlocks the full toolset):
claude mcp add profunding profunding-mcp -e PROFUNDING_API_KEY=pfk_your_key_here
Without a key (market-data tools only):
claude mcp add profunding profunding-mcp
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"profunding": {
"command": "profunding-mcp",
"env": {
"PROFUNDING_API_KEY": "pfk_your_key_here"
}
}
}
}
Environment Variables
| Variable | Required | Description |
|---|---|---|
PROFUNDING_API_KEY |
For most tools | Free key from profunding.pro. Trading, account, find-exit, and deep analytics need one; market-data tools work without one. |
Skip permission prompts on trade tools (Claude Code)
Claude Code asks for confirmation before each call to a trade tool. To skip the prompts on a project, add the trade allowlist to .claude/settings.local.json in that project's root (or ~/.claude/settings.json for global):
{
"permissions": {
"allow": [
"mcp__profunding__open_trade",
"mcp__profunding__close_trade",
"mcp__profunding__open_delta_neutral",
"mcp__profunding__close_delta_neutral",
"mcp__profunding__convert_stablecoin"
]
}
}
Note: Claude's safety policy may still decline crypto trading actions even with the allowlist in place — the allowlist controls permission prompts, not Claude's response-generation safety layer. If trades get declined despite the allowlist, phrase the request as an explicit authorization (e.g. "I authorize a $5 long ETH on Lighter via open_trade. Execute now.") or use Claude Code's plan mode.
Tools (36)
The Auth column shows whether a tool needs an API key:
- open — public, no key needed
- key — needs a free API key (wallet-bound for find-exit / trading)
Market Data & Discovery (12, all open)
| Tool | Auth | Description |
|---|---|---|
get_opportunities |
open | Live funding rate arbitrage opportunities across all DEXes |
get_exchanges |
open | List connected DEXes with status and funding interval |
get_historical_rates |
open | Historical funding rates for a symbol on one exchange |
get_rate_chart_data |
open | Funding rate spread over time between two exchanges |
get_price_spread_data |
open | Mark price divergence between two exchanges (price risk analysis) |
run_backtest |
open | Backtest a delta-neutral trade with real historical data |
analyze_pair |
open | Full end-to-end analysis: funding + backtest + risk + depth on both legs + price spread |
compare_exchanges |
open | Side-by-side comparison of same symbol across exchanges: rates, spread, depth, volume |
find_best_trade |
open | Best trade you can open right now at your position size — ranked by composite score |
get_smart_opportunities |
open | Opportunities ranked by tradability (APR × stability × depth × data confidence) |
get_pair_intelligence |
open | Risk scores, backtested APR, smart ranking, depth tiers for all pairs |
check_liquidity |
open | Real-time order book depth + slippage estimates at $1k/$5k/$10k |
Deep Analytics (7, key required)
| Tool | Auth | Description |
|---|---|---|
get_live_alpha |
key | Top 5 deduplicated opportunities |
get_still_paying |
key | Pairs above 50% APR for 24h+ still active now |
get_top_holders |
key | Pairs holding high APR the longest |
get_momentum_movers |
key | Biggest funding spread jumps in last 6 hours |
get_unbroken_streaks |
key | Consecutive hours above APR threshold |
get_record_roi |
key | Best single trade by ROI in a period |
get_weekly_recap |
key | Best ROI pair, best DEX combo, most stable pair |
Trading (5, key required)
| Tool | Auth | Description |
|---|---|---|
open_trade |
key | Open a single-leg market position on one DEX (uses your stored credentials) |
close_trade |
key | Close a single-leg position on one DEX |
open_delta_neutral |
key | Open a delta-neutral pair: long one DEX, short another |
close_delta_neutral |
key | Close both legs of a delta-neutral pair atomically |
convert_stablecoin |
key | Convert between USDC / USDT / other stablecoins where supported |
Account (3, key required)
| Tool | Auth | Description |
|---|---|---|
get_positions |
key | List your open positions across all DEXes with credentials stored |
get_balance |
key | Read account balances from each connected DEX |
get_alerts |
key | Position alerts and monitoring events triggered for your wallet |
Credentials (4, key required)
| Tool | Auth | Description |
|---|---|---|
store_credentials |
key | Save API keys / signer keys for a DEX (encrypted server-side) |
list_credentials |
key | List which DEXes have credentials stored, with last-verified status |
revoke_credentials |
key | Remove stored credentials for one DEX |
revoke_all_credentials |
key | Remove all stored credentials |
Find Exit (4, key required)
Optimal-exit search for an open delta-neutral position. Backend monitors the spread peak and exits when conditions confirm the trade has stopped paying.
| Tool | Auth | Description |
|---|---|---|
find_exit_preview |
key | Preview what an optimal exit would look like for a position (peak/target/current) |
find_exit_start |
key | Start a find-exit job on a position with target APR / max wait constraints |
find_exit_status |
key | Read current state of a find-exit job (anchor, peak, drawdown, ticks) |
find_exit_cancel |
key | Cancel an active find-exit job and leave the position open |
Monitoring (1, key required)
| Tool | Auth | Description |
|---|---|---|
watch_position |
key | Set up alert thresholds for a position (drawdown, funding sign flip, etc) — fires via Telegram |
Example Queries
Once connected, ask your AI assistant:
Discovery & analysis (work without a key)
- "What's the best trade I can open right now with $5k?"
- "Analyze ETH/USDC on Extended vs Aster — is it worth entering?"
- "Compare ETH funding rates across Hyperliquid, Aster, and Extended"
- "Check liquidity for SOL on Pacifica — can I fill $10k?"
- "Run a 30-day backtest on BTC long Lighter short Hyperliquid"
Trading (need a key)
- "Open a $200 delta-neutral on ETH: long Hyperliquid, short Aster"
- "What positions do I have open?"
- "Close my BTC delta-neutral pair"
- "Find the optimal exit for my SOL/USDC position with a 50% target APR"
Credentials (need a key)
- "Store my Hyperliquid API key — I'll paste the wallet and signer below"
- "Which DEXes do I have credentials for?"
Get a Key
Visit profunding.pro to claim your free API key. Bound to your wallet so trading + find-exit work end-to-end.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file profunding_mcp-0.7.2.tar.gz.
File metadata
- Download URL: profunding_mcp-0.7.2.tar.gz
- Upload date:
- Size: 18.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
691d50cf261cdf647a0a58f9588db732299e8cac0b6baf11f6feb508bf1af00f
|
|
| MD5 |
099bdda58a4c297f3749cf99010a4655
|
|
| BLAKE2b-256 |
ed32356ad7cd2b1c51f18bb9bbc6fc0bba2286c2aa7dbfa656e1acc1d6b27f0a
|
Provenance
The following attestation bundles were made for profunding_mcp-0.7.2.tar.gz:
Publisher:
publish-mcp.yml on Desperate10/dex_funding_dashboard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
profunding_mcp-0.7.2.tar.gz -
Subject digest:
691d50cf261cdf647a0a58f9588db732299e8cac0b6baf11f6feb508bf1af00f - Sigstore transparency entry: 1734854942
- Sigstore integration time:
-
Permalink:
Desperate10/dex_funding_dashboard@1b0c1f7165c36e77b818d4708431a66cc1561420 -
Branch / Tag:
refs/tags/mcp-v0.7.2 - Owner: https://github.com/Desperate10
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-mcp.yml@1b0c1f7165c36e77b818d4708431a66cc1561420 -
Trigger Event:
push
-
Statement type:
File details
Details for the file profunding_mcp-0.7.2-py3-none-any.whl.
File metadata
- Download URL: profunding_mcp-0.7.2-py3-none-any.whl
- Upload date:
- Size: 20.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc567bd79ae37cb20a013d14af938957d19937d8e27c4ac853739da4f5b4a415
|
|
| MD5 |
5fd87d707d2804b01337590a8e5f617a
|
|
| BLAKE2b-256 |
64b0bc1ff3506dcd1fb064dff07be914b78cea11ad66f32e0ab0146104b4129b
|
Provenance
The following attestation bundles were made for profunding_mcp-0.7.2-py3-none-any.whl:
Publisher:
publish-mcp.yml on Desperate10/dex_funding_dashboard
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
profunding_mcp-0.7.2-py3-none-any.whl -
Subject digest:
dc567bd79ae37cb20a013d14af938957d19937d8e27c4ac853739da4f5b4a415 - Sigstore transparency entry: 1734854958
- Sigstore integration time:
-
Permalink:
Desperate10/dex_funding_dashboard@1b0c1f7165c36e77b818d4708431a66cc1561420 -
Branch / Tag:
refs/tags/mcp-v0.7.2 - Owner: https://github.com/Desperate10
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-mcp.yml@1b0c1f7165c36e77b818d4708431a66cc1561420 -
Trigger Event:
push
-
Statement type: