DorkFiMCP

DorkFiMCP

Enables interaction with the DorkFi lending protocol on Voi and Algorand, supporting market discovery, position queries, liquidation scanning, and transaction preparation without signing or broadcasting.

Category
Visit Server

README

DorkFiMCP

Protocol MCP server for the DorkFi lending protocol on Voi and Algorand.

Architecture

DorkFiMCP is a protocol-level MCP that sits above the infrastructure MCP layer:

UluCoreMCP / UluVoiMCP / UluAlgorandMCP / UluWalletMCP / UluBroadcastMCP
                                ↓
                           DorkFiMCP
                                ↓
                        DorkFi API (reads)
                        On-chain (writes)

Data sources:

  • DorkFi API (dorkfi-api.nautilus.sh) — Pre-indexed market data, user health factors, TVL, and position data. Used for all read operations.
  • On-chain (algod) — Used for transaction preparation (suggested params, ABI encoding).

DorkFiMCP handles:

  • Market discovery with live data from the DorkFi API
  • User position queries with pre-computed health factors
  • Liquidation candidate scanning (202+ indexed users on Voi)
  • TVL analytics across all chains and pools
  • Transaction preparation (unsigned)

DorkFiMCP does NOT:

  • Sign transactions (use UluWalletMCP)
  • Broadcast transactions (use UluBroadcastMCP)
  • Manage wallets

Tools

Markets

Tool Description
get_markets List lending markets with live rates, deposits, borrows, and prices
get_tvl Get total value locked per market and aggregate totals

Positions

Tool Description
get_position Get a user's positions with per-pool health factors
get_health_factor Check health factor and risk level per pool

Liquidations

Tool Description
get_liquidation_candidates Find undercollateralized accounts from pre-indexed health data

Transaction Preparation

Tool Description
deposit_txn Build unsigned transactions to deposit (supply) tokens
borrow_txn Build unsigned transactions to borrow tokens
repay_txn Build unsigned transactions to repay debt
withdraw_txn Build unsigned transactions to withdraw supplied tokens
liquidate_txn Build unsigned transactions to liquidate a position

Agent Workflow

Agent calls DorkFiMCP:  deposit_txn(chain, symbol, amount, sender)
       → returns { transactions: [base64, ...] }

Agent calls UluWalletMCP: wallet_sign_transactions(signerId, transactions)
       → returns signed transactions

Agent calls UluBroadcastMCP: broadcast_transactions(network, txns)
       → returns transaction IDs

Chain Support

All tools accept a chain parameter:

  • "voi" — Voi mainnet (pools: 47139778, 47139781)
  • "algorand" — Algorand mainnet (pools: 3333688282, 3345940978)

Project Structure

index.js              MCP server entry point (11 tools)
lib/
  api.js              DorkFi API client (dorkfi-api.nautilus.sh)
  client.js           Algod client factory, ABI definitions, simulation helpers
  markets.js          Market data from API with symbol resolution
  positions.js        User positions and health factors from API
  liquidation.js      Liquidation candidates from pre-indexed health data
  builders.js         Unsigned transaction group builders (on-chain)
data/
  contracts.json      Chain configs, pool IDs, and token definitions

Setup

npm install

Run

node index.js

Or configure as an MCP server in your agent:

{
  "mcpServers": {
    "dorkfi": {
      "command": "node",
      "args": ["/path/to/DorkFiMCP/index.js"]
    }
  }
}

DorkFi API

Read operations use the DorkFi API which provides pre-indexed data:

Endpoint Used by
/market-data/{network} get_markets
/user-health/user/{address} get_position, get_health_factor
/user-health/{network} get_liquidation_candidates
/analytics/tvl get_tvl

Supported Markets

Voi (22 markets across 2 pools)

Pool 47139778: VOI, aUSDC, UNIT, POW, aALGO, aETH, aBTC, acbBTC, WAD (borrow-only)

Pool 47139781: WAD, GM, CORN, SHELLY, BUIDL, F, NODE, AMMO, IAT, bVOI, NV, EV, FV

Algorand (29 markets across 2 pools)

Pool 3333688282: ALGO, USDC, UNIT, POW, goBTC, aVOI, wBTC, goETH, wETH, LINK, SOL, AVAX, WAD (borrow-only)

Pool 3345940978: WAD, FINITE, FOLKS, COOP, HOG, USDt, xUSD, MONKO, HAY, BRO, ALPHA, COMPX, AKTA, PEPE, GOLD$, TINY

On-Chain ABI

Transaction preparation uses the verified ABI from DorkFiLendingPoolClient.ts:

Method Signature
get_market (uint64)(bool,uint256,uint256,uint64,uint64,uint64,uint64,uint64,uint64,uint256,uint256,uint256,uint256,uint64,uint256,uint256,uint64,uint64)
get_user (address,uint64)(uint256,uint256,uint256,uint256,uint64,uint256)
get_global_user (address)(uint256,uint256,uint64)
get_user_borrow_amount (address,uint64)uint256
deposit (uint64,uint256)uint256
withdraw (uint64,uint256)uint256
borrow (uint64,uint256)uint256
repay (uint64,uint256)uint256
repay_all (uint64)uint256
repay_on_behalf (uint64,uint256,address)uint256
liquidate_cross_market (uint64,uint64,address,uint256,uint256)uint256

Known Limitations

  1. WAD in multiple pools — WAD appears in two pools per chain. findMarket returns the first match. For borrow-only WAD pools, specify the pool ID explicitly if needed.

  2. Transaction groups — The prepare_* tools build simplified transaction groups. The DorkFi frontend uses ulujs CONTRACT class for more sophisticated group construction with automatic box funding and resource sharing.

  3. Price scale — Prices from the API use 18 decimal precision referenced against aUSDC = 1,000,000. USD values in health/position responses are approximated by dividing raw values by 10^12.

  4. API freshness — Read data comes from the DorkFi API which periodically refreshes from on-chain state. For the most current data, the API's POST endpoints can trigger a fresh blockchain query.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured