Kaskad Protocol MCP Server
kaskad-mcp
MCP (Model Context Protocol) server for Kaskad Protocol — reads live on-chain state from the Igra Galleon Testnet, executes transactions, and exposes tokenomics data via 11 tools.
Tools
Tool | Description |
| Live APY, utilization, liquidity for all active reserves |
| Wallet collateral, debt, health factor, supplied/borrowed positions, staking balance |
| Live DAO-voted parameters from KaskadGovernor (emission split, eligibility thresholds, treasury ratios) |
| KSKD emission state: epoch, vault depletion, supplier/borrower split, TWAL TVL |
| Claimable KSKD rewards for a wallet address |
| Static metadata + full AGENTS.md integration guide |
| Subgraph data: liquidations, APY snapshots, user transaction history |
| Supply an asset into the lending pool |
| Borrow an asset against collateral |
| Repay outstanding debt |
| Withdraw supplied assets |
Quick Start
npm install
npm run build
npm test # 19 unit tests (pure functions, no network)
node dist/index.jsWallet Setup
Security — read before proceeding
The MCP server requires a private key to sign transactions. Always use a dedicated testnet wallet with no real funds. Never use a wallet that holds mainnet assets.
Never commit your private key to git. The
credentials/directory is gitignored.
The server requires a wallet private key to sign transactions. Use MCP_WALLET_KEY — it is the only recommended method.
Recommended — Environment variable
export MCP_WALLET_KEY=0xYOUR_TESTNET_PRIVATE_KEY
node dist/index.jsFor MCP clients (Claude Desktop, OpenClaw, etc.), inject it via the env block in your client config (see MCP Client Config section below). The key never touches the filesystem.
Why not
wallet.json? The server also supportscredentials/wallet.jsonand~/.kaskad-mcp/wallet.jsonas fallback paths for local development convenience. However, Anton (SC Architect) flagged these as an unnecessary attack surface — file-based key storage introduces git-commit risk, filesystem exposure, and misconfigured permission vectors. Do not usewallet.jsonin any shared, CI, or production-adjacent environment. If you must use a file locally, ensurecredentials/stays gitignored (it is by default) and restrict file permissions (chmod 600).
Trust boundary: The server enforces a minimum 100 iKAS reserve in the wallet at all times (to cover gas fees).
MCP Client Config
Add to your MCP client (e.g. Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"kaskad": {
"command": "node",
"args": ["/path/to/kaskad-mcp/dist/index.js"],
"env": {
"MCP_WALLET_KEY": "0xYOUR_PRIVATE_KEY"
}
}
}
}Network
Property | Value |
Chain ID | 38836 |
Network | Igra Galleon Testnet |
RPC |
|
Explorer |
|
dApp |
|
Gas note: Igra Galleon requires minimum 2000 Gwei gas price.
eth_estimateGasunderestimates — all transactions use staticgasLimit: 1_700_000n.
Contract Addresses (current deploy)
Contract | Address |
Pool |
|
PoolAddressesProvider |
|
PriceOracle |
|
UIPoolDataProvider |
|
RewardsController |
|
ActivityTracker |
|
EmissionManager |
|
EmissionVault |
|
KaskadGovernor |
|
stKSKD Vault |
|
WrappedTokenGateway |
|
Token | Address |
USDC |
|
WETH |
|
WBTC |
|
IGRA |
|
WIKAS (iKAS) |
|
KSKD |
|
Architecture
src/
├── abi/ # ABI JSON fragments from Foundry artifacts
├── contracts.ts # Addresses, token registry, dead pool list
├── rpc.ts # Raw JSON-RPC client (fetch-based, no ethers Provider)
├── typed-contracts.ts # Typed wrappers (Pool, Oracle, ERC20, Governor, Rewards, etc.)
├── index.ts # MCP server + health HTTP endpoint
└── tools/
├── getMarkets.ts
├── getPosition.ts
├── getGovernanceParams.ts
├── getTokenomics.ts # getEmissions + getUserRewards
├── getHistory.ts # Subgraph queries
├── getProtocolInfo.ts
└── executeTransaction.ts # supply/borrow/repay/withdrawMaintenance Notes
APY formula:
currentLiquidityRatefromgetReserveDatais in RAY (1e27).rate / 1e25 = APY%. Do NOT multiply by seconds_per_year.Dead pools: 7 deprecated reserve addresses from prior deploys are filtered from all output.
iKAS: Native gas token. Balance via
provider.getBalance(), not ERC20. WIKAS is the wrapped form used by the pool.Address updates: After testnet redeploy, re-extract from dApp bundle (
/assets/index-*.js) and updatesrc/contracts.ts.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Kaskad-Lending/kaskad-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server