infiniFi MCP Server
Provides read-only access to infiniFi protocol state on Ethereum mainnet through JSON-RPC eth_call. It can query token supplies for iUSD and siUSD, list registered farms and enabled assets, and retrieve individual farm state including asset token, assets, and cap.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@infiniFi MCP Serverwhat are the current iUSD and siUSD token supplies?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-infinifi
Read-only stdio MCP server for infiniFi public Ethereum mainnet contracts and documentation index. No wallet, key, transaction signing, authentication, or write tools. This is an independent local prototype, not an infiniFi release.
The API documentation names protocol state and historical data but publishes no HTTP paths, parameters, or base URL. It points to an infinifi-backend repository that returned HTTP 404 when checked on 2026-10-20. This server does not invent an HTTP API, historical metric, or product endpoint. Instead it uses eth_call against published Ethereum contract addresses, the public contract interfaces, and the published llms.txt index.
Install
Node.js 20+ and pnpm are required. From this folder:
pnpm install
pnpm build
node dist/index.jsThe last command runs the stdio server; an MCP client supplies messages on stdin. Set INFINIFI_RPC_URL to another trusted Ethereum mainnet JSON-RPC URL if the default public endpoint is unavailable. The default is https://ethereum-rpc.publicnode.com.
For Claude Desktop on macOS, add this to ~/Library/Application Support/Claude/claude_desktop_config.json under mcpServers and restart Claude:
{
"mcpServers": {
"infinifi": {
"command": "node",
"args": [
"/Users/0xmarvel/superconductor/projects/value-drops/infinifi-mcp/dist/index.js"
]
}
}
}For Cursor, use the same mcpServers entry in ~/.cursor/mcp.json (or the project .cursor/mcp.json) and reload Cursor. Replace the path if you moved this folder.
Related MCP server: Cryo MCP
Tool to source mapping
Tool | Exact read | Public source |
| JSON-RPC | |
| JSON-RPC | |
| JSON-RPC | |
| HTTP |
Each onchain result reads a single block. retrievedAt is local request completion time, not the block time. Amounts remain decimal strings, with raw integer values included. A capUnlimited flag marks the contract uint256.max sentinel, with cap: null. Token supply is not TVL; farm accounting assets are not a promise of immediate liquidity.
Real MCP calls
I started node dist/index.js over stdio, initialized MCP, and sent the following tools/call requests on 2026-10-20 UTC. The JSON below is the exact text returned by each tool at that time. Values will change.
get_token_supplies
Request: tools/call with {"name":"get_token_supplies","arguments":{}}.
Recorded tool text (live response):
{
"readOnly": true,
"retrievedAt": "2026-10-20T20:32:25.412Z",
"source": {
"endpoint": "https://ethereum-rpc.publicnode.com eth_call",
"methods": "iUSD.totalSupply(), iUSD.decimals(), siUSD.totalSupply(), siUSD.decimals()",
"contracts": [
"0x48f9e38f3070AD8945DFEae3FA70987722E3D89c",
"0xDBDC1Ef57537E34680B898E1FEBD3D68c7389bCB"
],
"documentation": "https://docs.infinifi.xyz/dev-docs/contracts",
"interfaces": [
"https://github.com/InfiniFi-Labs/infinifi-protocol/blob/master/src/tokens/ReceiptToken.sol",
"https://github.com/InfiniFi-Labs/infinifi-protocol/blob/master/src/tokens/StakedToken.sol"
]
},
"data": {
"block": "26236205",
"tokens": [
{
"symbol": "iUSD",
"address": "0x48f9e38f3070AD8945DFEae3FA70987722E3D89c",
"supplyRaw": "68302862178713469460186700",
"decimals": 18,
"supply": "68302862.1787134694601867"
},
{
"symbol": "siUSD",
"address": "0xDBDC1Ef57537E34680B898E1FEBD3D68c7389bCB",
"supplyRaw": "48068711238339140960628049",
"decimals": 18,
"supply": "48068711.238339140960628049"
}
]
}
}list_registered_farms
Request: tools/call with {"name":"list_registered_farms","arguments":{}}.
Recorded tool text (live response):
{
"readOnly": true,
"retrievedAt": "2026-10-20T20:32:26.018Z",
"source": {
"endpoint": "https://ethereum-rpc.publicnode.com eth_call",
"contract": "0xF5f2718708f471e43968271956CC01aaA8c46119",
"methods": "getFarms(), getEnabledAssets()",
"documentation": "https://docs.infinifi.xyz/dev-docs/integrations/farm-registry",
"interface": "https://github.com/InfiniFi-Labs/infinifi-protocol/blob/master/src/integrations/FarmRegistry.sol"
},
"data": {
"block": "26236205",
"count": 17,
"farms": [
"0x49877d937B9a00d50557bdC3D87287b5c3a4C256",
"0xCb1747E89a43DEdcF4A2b831a0D94859EFeC7601",
"0xda40ce7DdDBE7D54A106D32575b2CCF41dDb1A11",
"0xAc21B22B5aEb11bc32De4ecF59E4538fCa48b694",
"0x90787c1b99F47EFfEE0db0aB9D4e33CdC3e6bFa7",
"0x79e1B8e45932A7C802eA3dAb3844e5DEa68d971f",
"0x277FdF6Dc5c53C5c2828188Da84B9593A50884C1",
"0xe919C66475f2F30d285c768853E6B5b23ef181Cf",
"0xbFd5FC8DecA3C6128bfCE0FE46c25616811c3580",
"0xfD1Ea12d29B90630b265DBbc6Af88266d1a83dE4",
"0xd880D7C5CaFdbE2AEc281250995abF612235e563",
"0xA7c1DAEAA5D97e1319B4Ff6Cdf658F5C4582A27E",
"0x9E5efC5F387D8661C1AFB2469B7EeF6972451852",
"0x2fa5E6C5549BEdF98A935Cac3BB4337459c74897",
"0x78A31bD6cAca12BdF83F8A608076006C1F58F363",
"0xbD6c2d1C4809a5D8847FbA3a3cf7d6BDf6b6C3bA",
"0xe9E44C0A68C49aDe51CdA5e027909C5996B5c71a"
],
"enabledAssets": [
"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"0x8292Bb45bf1Ee4d140127049757C2E0fF06317eD"
]
}
}get_farm_state
Request: tools/call with {"name":"get_farm_state","arguments":{"address":"0xbFd5FC8DecA3C6128bfCE0FE46c25616811c3580"}}.
Recorded tool text (live response):
{
"readOnly": true,
"retrievedAt": "2026-10-20T20:32:32.937Z",
"source": {
"endpoint": "https://ethereum-rpc.publicnode.com eth_call",
"contract": "0xbFd5FC8DecA3C6128bfCE0FE46c25616811c3580",
"methods": "FarmRegistry.isFarm(address), Farm.assetToken(), Farm.assets(), Farm.cap(), assetToken.decimals()",
"registry": "0xF5f2718708f471e43968271956CC01aaA8c46119",
"documentation": "https://docs.infinifi.xyz/dev-docs/integrations/farm-registry",
"interface": "https://github.com/InfiniFi-Labs/infinifi-protocol/blob/master/src/integrations/Farm.sol"
},
"data": {
"block": "26236205",
"address": "0xbFd5FC8DecA3C6128bfCE0FE46c25616811c3580",
"assetToken": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"decimals": 6,
"assetsRaw": "3508611028172",
"assets": "3508611.028172",
"capRaw": "115792089237316195423570985008687907853269984665640564039457584007913129639935",
"cap": null,
"capUnlimited": true
}
}get_docs_index
Request: tools/call with {"name":"get_docs_index","arguments":{}}.
Recorded tool text (live response):
{
"readOnly": true,
"retrievedAt": "2026-10-20T20:32:33.223Z",
"source": {
"endpoint": "GET https://docs.infinifi.xyz/llms.txt",
"documentation": "https://docs.infinifi.xyz/dev-docs/api-documentation"
},
"data": {
"pages": [
{
"title": "infiniFi Docs Hub",
"url": "https://docs.infinifi.xyz/index.md"
},
{
"title": "Whitepaper",
"url": "https://docs.infinifi.xyz/whitepaper/index.md"
},
{
"title": "Oracles",
"url": "https://docs.infinifi.xyz/oracles.md"
},
{
"title": "Vaults",
"url": "https://docs.infinifi.xyz/vaults.md"
},
{
"title": "Deposit Quickstart",
"url": "https://docs.infinifi.xyz/deposit-quickstart.md"
},
{
"title": "Pendle Liquidity Transfer",
"url": "https://docs.infinifi.xyz/pendle-liquidity-transfer/index.md"
},
{
"title": "Security",
"url": "https://docs.infinifi.xyz/audits.md"
},
{
"title": "Risk Disclosures",
"url": "https://docs.infinifi.xyz/risk-disclosures.md"
},
{
"title": "Slashing mechanics",
"url": "https://docs.infinifi.xyz/slashing-mechanics.md"
},
{
"title": "Developer Summary",
"url": "https://docs.infinifi.xyz/dev-docs/summary.md"
},
{
"title": "Contract Addresses",
"url": "https://docs.infinifi.xyz/dev-docs/contracts.md"
},
{
"title": "Changelog",
"url": "https://docs.infinifi.xyz/dev-docs/changelog.md"
},
{
"title": "Core",
"url": "https://docs.infinifi.xyz/dev-docs/core/index.md"
},
{
"title": "InfiniFiCore.sol",
"url": "https://docs.infinifi.xyz/dev-docs/core/infini-fi-core.md"
},
{
"title": "CoreControlled.sol",
"url": "https://docs.infinifi.xyz/dev-docs/core/core-controlled.md"
},
{
"title": "Gateway",
"url": "https://docs.infinifi.xyz/dev-docs/gateway/index.md"
},
{
"title": "InfiniFiGatewayV1.sol",
"url": "https://docs.infinifi.xyz/dev-docs/gateway/infini-fi-gateway-v1.md"
},
{
"title": "Tokens",
"url": "https://docs.infinifi.xyz/dev-docs/tokens/index.md"
},
{
"title": "ReceiptToken.sol",
"url": "https://docs.infinifi.xyz/dev-docs/tokens/receipt-token.md"
},
{
"title": "StakedToken.sol",
"url": "https://docs.infinifi.xyz/dev-docs/tokens/staked-token.md"
},
{
"title": "LockedPositionToken.sol",
"url": "https://docs.infinifi.xyz/dev-docs/tokens/locked-position-token.md"
},
{
"title": "Funding",
"url": "https://docs.infinifi.xyz/dev-docs/funding/index.md"
},
{
"title": "MintController.sol",
"url": "https://docs.infinifi.xyz/dev-docs/funding/mint-controller.md"
},
{
"title": "RedeemController.sol",
"url": "https://docs.infinifi.xyz/dev-docs/funding/redeem-controller.md"
},
{
"title": "RedemptionPool.sol",
"url": "https://docs.infinifi.xyz/dev-docs/funding/redemption-pool.md"
},
{
"title": "Locking",
"url": "https://docs.infinifi.xyz/dev-docs/locking/index.md"
},
{
"title": "LockingController.sol",
"url": "https://docs.infinifi.xyz/dev-docs/locking/locking-controller.md"
},
{
"title": "UnwindingModule.sol",
"url": "https://docs.infinifi.xyz/dev-docs/locking/unwinding-module.md"
},
{
"title": "Finance",
"url": "https://docs.infinifi.xyz/dev-docs/finance/index.md"
},
{
"title": "Accounting.sol",
"url": "https://docs.infinifi.xyz/dev-docs/finance/accounting.md"
},
{
"title": "YieldSharing.sol",
"url": "https://docs.infinifi.xyz/dev-docs/finance/yield-sharing.md"
},
{
"title": "Governance",
"url": "https://docs.infinifi.xyz/dev-docs/governance/index.md"
},
{
"title": "AllocationVoting.sol",
"url": "https://docs.infinifi.xyz/dev-docs/governance/allocation-voting.md"
},
{
"title": "Timelock.sol",
"url": "https://docs.infinifi.xyz/dev-docs/governance/timelock.md"
},
{
"title": "MinorRolesManager.sol",
"url": "https://docs.infinifi.xyz/dev-docs/governance/minor-roles-manager.md"
},
{
"title": "Integrations",
"url": "https://docs.infinifi.xyz/dev-docs/integrations/index.md"
},
{
"title": "Farm.sol",
"url": "https://docs.infinifi.xyz/dev-docs/integrations/farm.md"
},
{
"title": "FarmRegistry.sol",
"url": "https://docs.infinifi.xyz/dev-docs/integrations/farm-registry.md"
},
{
"title": "Farms",
"url": "https://docs.infinifi.xyz/dev-docs/integrations/farms.md"
},
{
"title": "API Documentation",
"url": "https://docs.infinifi.xyz/dev-docs/api-documentation.md"
},
{
"title": "Roles Documentation",
"url": "https://docs.infinifi.xyz/dev-docs/roles-documentation.md"
},
{
"title": "Research Overview",
"url": "https://docs.infinifi.xyz/research.md"
},
{
"title": "Liquid keeper reserve",
"url": "https://docs.infinifi.xyz/liquid-keeper-reserve.md"
},
{
"title": "Risk Assessment Framework",
"url": "https://docs.infinifi.xyz/risk-assessment-framework.md"
}
]
}
}What I would add next
Once infiniFi publishes concrete public HTTP paths and schemas, add protocol-state and historical-metric tools against those documented endpoints. Cross-check farm valuations against a published accounting contract address before calling any aggregate figure TVL.
Available Tools
4 toolsget_docs_indexA
Fetch infiniFi's live llms.txt index of canonical documentation URLs. Returns titles and URLs, not scraped protocol metrics.
Inputs: no named parameters.
get_farm_stateA
Read a registered Ethereum mainnet farm's asset token, accounting assets and deposit cap at one block. capUnlimited=true means no configured cap; accounting assets are not guaranteed instantly redeemable.
Inputs: address (required).
get_token_suppliesA
Read Ethereum mainnet iUSD and siUSD ERC-20 total supplies at one block. Supplies are not protocol TVL.
Inputs: no named parameters.
list_registered_farmsA
Read all registered Ethereum mainnet farm addresses and enabled asset addresses at one block; does not infer current yield or liquidity.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
TDQS
Scored across 4 tools
Each tool targets a distinct resource and action: token supplies, farm enumeration, single-farm state, and documentation index. The descriptions explicitly delineate boundaries (e.g. list_registered_farms vs get_farm_state) so an agent can select reliably.
All four tools follow a consistent verb_noun snake_case pattern: get_token_supplies, list_registered_farms, get_farm_state, get_docs_index. Verb choice (get/list) maps predictably to retrieval vs enumeration.
Four tools is slightly thin but well-scoped for a read-only protocol data reader, with each tool earning its place. No redundant or filler tools, though the surface is minimal.
The read surface covers token supplies, farms, farm state, and docs, but lacks user-position/balance queries and yield or historical metrics that a protocol reader would typically need. These notable gaps limit deeper agent workflows without external calls.
Related MCP Connectors
Inspect 1NFER models, crypto funding terms and task cost without keys or paid calls.
Query OneLens cloud-cost data in natural language: breakdowns, trends, cost centers. Read-only.
Polymarket in your AI: market rules, real fill costs, who is trading, top traders. Read-only.
Ask your Quickbase apps in plain language. Read-only by default; writes need human approval.
Related MCP Servers
AlicenseCqualityDmaintenanceEnables AI-powered analysis of Ethereum blockchain data through semantic search, natural language queries, and structured filtering. Provides comprehensive access to addresses, transactions, blocks, tokens, and smart contracts with real-time blockchain intelligence.2612 npm1MIT- AlicenseNot gradedqualityDmaintenanceEnables natural language querying of blockchain data, including blocks, transactions, logs, and more, powered by Cryo and Reth, with optional micropayment integration via Payflow.8MIT
- AlicenseAqualityDmaintenanceProvides read-only access to Solana on-chain data, enabling natural language queries for wallet balances, token holdings, prices, transactions, and more via MCP-compatible clients.8MIT
- AlicenseNot gradedqualityBmaintenanceEnables querying on-chain data (balances, transactions, token transfers, blocks) across 20+ EVM chains through natural language.149 npmMIT