MCP Hub
Back to servers

Initia MCP

Enables interaction with the Initia blockchain ecosystem across L1 and L2 rollups, supporting MiniEVM, MiniMove, and MiniWasm environments. Users can query chain state, manage assets, and execute transactions through LLM agents or an integrated CLI.

glama
Updated
Mar 29, 2026

@initia/mcp

MCP server and CLI for the Initia blockchain ecosystem. Tools for querying chain state, managing assets, and executing transactions across Initia L1 and L2 rollups (MiniEVM, MiniMove, MiniWasm).

Two interfaces, one codebase:

  • @initia/mcp — MCP server (stdio transport, for Claude Desktop / LLM agents)
  • initctl — CLI (for humans and scripts)

Quick Start

npm install
npm run build

CLI (initctl)

# Global install
npm install -g .
initctl chain list

# Or run directly without global install
node dist/cli.js chain list

# Or via npx (after npm install)
npx initctl chain list

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "initia": {
      "command": "npx",
      "args": ["-y", "@initia/mcp"],
      // optional — see Environment Variables below
      "env": {
        "INITIA_KEY": "your mnemonic words ...",
        "INITIA_NETWORK": "mainnet"
      }
    }
  }
}

Claude Code

claude mcp add initia -s user -- npx -y @initia/mcp

# optional — see Environment Variables below
claude mcp add initia -s user \
  -e INITIA_KEY="your mnemonic words ..." \
  -e INITIA_NETWORK=mainnet \
  -- npx -y @initia/mcp

Codex

Add to codex.json (or pass via codex --mcp-config codex.json):

{
  "mcpServers": {
    "initia": {
      "command": "npx",
      "args": ["-y", "@initia/mcp"],
      // optional — see Environment Variables below
      "env": {
        "INITIA_KEY": "your mnemonic words ...",
        "INITIA_NETWORK": "mainnet"
      }
    }
  }
}

Gemini CLI

Add to .gemini/settings.json:

{
  "mcpServers": {
    "initia": {
      "command": "npx",
      "args": ["-y", "@initia/mcp"],
      // optional — see Environment Variables below
      "env": {
        "INITIA_KEY": "your mnemonic words ...",
        "INITIA_NETWORK": "mainnet"
      }
    }
  }
}

CLI

# Query
initctl chain list
initctl token search --symbol USDC
initctl move view --module-address 0x1 --module-name coin --function-name balance --args '["0x1"]'

# Transaction (interactive confirm)
initctl bank send --to init1abc... --amount 1000000 --denom uinit

# Transaction (skip confirm)
initctl bank send --to init1abc... --amount 1000000 --denom uinit --yes

# JSON output (for scripts)
initctl token search --symbol INIT --json

# Shell completion
eval "$(initctl completion bash)"   # bash
eval "$(initctl completion zsh)"    # zsh
initctl completion fish | source    # fish

Environment Variables

VariableRequiredDefaultDescription
INITIA_KEYNoMnemonic (12/24 words), hex private key (0x...), or "ledger"
INITIA_KEY_INDEXNo0HD derivation index (for mnemonic/ledger)
INITIA_LEDGER_APPNoethereumLedger app: ethereum or cosmos
INITIA_NETWORKNomainnetmainnet or testnet
AUTO_CONFIRMNofalseSkip confirmation for mutations (MCP only)
INITIA_LOG_LEVELNoinfodebug, info, warn, error
INITIA_USE_SCAN_APINofalseUse Scan API for enhanced chain data

Without a signer key, read-only tools still work. Mutation tools return SIGNER_REQUIRED.

Tools (107)

Chain & Account (10)

ToolDescription
chain_listList all supported chains (L1 + L2 rollups)
chain_capabilitiesGet chain VM type, features, and endpoints
chain_gas_pricesCurrent on-chain gas prices (L1 or L2)
account_getAccount info and balances
portfolio_getAggregated balances across all chains
address_validateValidate bech32 or EVM address format
address_convertConvert between bech32 and hex
delegation_getStaking delegations, rewards, and unbonding
distribution_rewardsPending staking rewards across validators
simulate_txSimulate a transaction and estimate gas

Token & Denom (7)

ToolDescription
token_searchSearch tokens by symbol across all chains
token_listList registered tokens on a chain
token_infoToken metadata (name, symbol, decimals) for any type
token_balanceToken balance for native, ERC20, CW20, or Move FA
amount_formatFormat raw amount with decimals
denom_classifyClassify denomination type (native, ibc, evm, etc.)
denom_metadataOn-chain bank module metadata

Transaction (3)

ToolDescription
tx_getGet transaction by hash with VM-aware decoding
tx_searchSearch transactions (CometBFT query syntax)
tx_by_addressRecent transactions for an address

Validator & Staking (7)

ToolDescription
validator_listList validators with status and voting power
validator_getDetailed validator information
staking_poolNetwork bonded/unbonded token totals
staking_annual_provisionsCurrent annual token provisions (inflation)
staking_manageDelegate, undelegate, redelegate, or claim rewards
governance_voteVote on a governance proposal
proposal_list / proposal_getList or get governance proposals

Bridge (14)

ToolDescription
bridge_routeFind optimal cross-chain transfer route
bridge_executeExecute a cross-chain transfer via router
bridge_transfer_statusTrack cross-chain transfer progress
bridge_list_chainsList bridgeable L2 chains
bridge_routable_assetsList assets available for routing
bridge_deposit / bridge_withdrawDirect L1↔L2 OPInit deposit/withdraw
bridge_withdrawals / bridge_withdrawal_statusQuery withdrawal status
opbridge_list / opbridge_getOPInit bridge configuration
opbridge_token_pairsL1↔L2 token pair mappings
opbridge_token_pair_by_l1_denom / opbridge_token_pair_by_l2_denomToken pair lookup

IBC (3)

ToolDescription
ibc_channelsList IBC channels or find channel between two chains
ibc_denom_hashCompute IBC denomination hash from path
ibc_transferSend tokens via IBC

Username (4)

ToolDescription
username_resolveResolve .init names ↔ addresses
username_recordFull .init username record
username_metadataNFT metadata for .init username
username_checkCheck username availability

Move VM (14)

ToolDescription
move_modulesList modules deployed at an address
move_module_abiGet module ABI (functions, structs)
move_resourcesList resources held by an address
move_resource_getQuery a specific resource
move_viewCall a view function (read-only)
move_executeExecute an entry function
move_publish / move_scriptDeploy module or run script
move_table_entryQuery a table entry
move_dex_pairsList DEX liquidity pool pairs
move_denom_metadata / move_metadata_denomDenom ↔ metadata conversion
move_bcs_encode / move_bcs_decodeBCS serialization utilities

EVM (10)

ToolDescription
evm_callCall a contract function (read-only)
evm_sendSend a state-changing transaction
evm_deployDeploy a contract
evm_get_logsQuery event logs
evm_get_tx_receiptGet transaction receipt
evm_get_blockGet block information
evm_get_codeGet contract bytecode (Minievm only)
evm_get_storage_atRead storage slot (Minievm only)
evm_decode_revertDecode revert reason
evm_decode_logsDecode event logs with ABI

CosmWasm (12)

ToolDescription
wasm_queryQuery a smart contract
wasm_executeExecute a smart contract function
wasm_store_codeUpload contract bytecode
wasm_instantiateInstantiate a contract
wasm_migrateMigrate to a new code ID
wasm_update_admin / wasm_clear_adminAdmin management
wasm_contract_info / wasm_code_infoContract/code metadata
wasm_contracts_by_codeList contracts from a code ID
wasm_contract_historyMigration history
wasm_raw_stateRaw key-value state

VIP (16)

ToolDescription
vip_stage_infoCurrent VIP stage and timing
vip_positionsLock-staking positions
vip_voting_powerGauge voting power
vip_vesting_positionsVesting schedules with reward breakdowns
vip_vote_infoVote allocations per bridge
vip_claimable_rewardsClaimable VIP rewards
vip_delegate / vip_undelegate / vip_redelegateLock-staking management
vip_extend_lockExtend lock duration
vip_gauge_vote / vip_gauge_vote_by_amountGauge voting
vip_claim_rewards / vip_claim_staking_rewardsReward claiming
vip_provide_and_delegateLP + lock-delegate in one tx
vip_stableswap_provide_and_delegateStableswap LP + lock-delegate

Event Parsing (3)

ToolDescription
event_parse_txParse Cosmos events from a transaction
event_parse_moveDecode Move module events
event_parse_wasmDecode CosmWasm contract events

Ledger (2)

ToolDescription
ledger_statusCheck Ledger device connection
ledger_verify_addressDisplay address on device for verification

Bank (1)

ToolDescription
bank_sendSend tokens (supports batch sends)

Architecture

src/
├── index.ts              # MCP server entry point (stdio)
├── cli.ts                # CLI entry point (initctl)
├── tools/
│   ├── registry.ts       # ToolRegistry — shared by MCP and CLI
│   ├── groups.ts         # Group definitions (24 groups)
│   ├── index.ts          # Side-effect imports for all tool files
│   ├── tx-executor.ts    # Mutation flow (dry-run → simulate → broadcast)
│   ├── vm-guard.ts       # VM compatibility checks
│   └── *.ts              # Tool modules (registry.register() calls)
├── mcp/
│   └── adapter.ts        # Registry → McpServer binding
├── cli/
│   ├── adapter.ts        # Registry → citty commands + zodToCittyArgs
│   ├── format.ts         # TTY / JSON output formatting
│   ├── confirm.ts        # Mutation y/N prompt
│   └── completion.ts     # Shell completion (bash/zsh/fish)
├── initia/
│   └── chain-manager.ts  # Chain context creation, caching
├── config/               # Environment config, chain aliases
├── schemas/              # Shared Zod parameter schemas
├── errors.ts             # Typed error codes
├── response.ts           # Response serialization
└── logger.ts             # Structured JSON logging

Tools are registered once in a transport-agnostic ToolRegistry. The MCP and CLI adapters consume the same registry independently — adding a tool to a *.ts file automatically exposes it in both interfaces.

Smart Defaults

  • Validator by name: Tools accepting a validator address also accept the moniker name (case-insensitive, auto-resolved)
  • "me" address: Address parameters accept "me", "self", "my", or "signer" to resolve to the configured signer
  • VM guard: Contract tools enforce VM compatibility — calling move_view on a MiniEVM chain returns a WRONG_VM error with suggested alternatives

Development

npm run dev          # Run MCP server with tsx (hot reload)
npm test             # Unit + integration tests
npm run test:smoke   # E2E tests against testnet
npm run lint         # ESLint + tsc --noEmit

License

Apache-2.0

Reviews

No reviews yet

Sign in to write a review