IM

injectivelabs/mcp-server

Developer tools
9 stars 7 forks Quality 65 Trend 21

An MCP (Model Context Protocol) server that gives AI agents full trading capabilities on Injective — perpetual futures, spot transfers, cross-chain bridging, and raw EVM transactions.

Overview

An MCP (Model Context Protocol) server that gives AI agents full trading capabilities on Injective — perpetual futures, spot transfers, cross-chain bridging, and raw EVM transactions. Connect it to Claude Desktop or Claude Code and trade with natural language. Add to ~/Library/Application Support/Claude/claude_desktop_config.json: Add to ~/.claude/mcp.json or your project's MCP config: Set INJECTIVE_NETWORK to "testnet" to use the Injective testnet. Once connected, a typical session looks like: - Private keys are — AES-256-GCM + scrypt at rest - Keys live in ~/.injective-agent/keys/ with 0600 permissions - Claude never sees raw private keys — only addresses and tx hashes - Wallet passwords are passed as tool parameters and — avoid reusing passwords from other services See SECURITY.md for the full security model.

README

Injective MCP Server

An MCP (Model Context Protocol) server that gives AI agents full trading capabilities on Injective — perpetual futures, spot transfers, cross-chain bridging, and raw EVM transactions.

Connect it to Claude Desktop or Claude Code and trade with natural language.


Tools

Address Utilities

Tool Description
address_normalize Accept an inj1... or 0x... address and return both canonical encodings.

Wallets

Tool Description
wallet_generate Generate a new Injective wallet. Returns address + mnemonic (shown once).
wallet_import Import a wallet from a hex private key.
wallet_list List all wallets in the local keystore (addresses only — no keys).
wallet_remove Permanently delete a wallet from the keystore.

Markets & Accounts

Tool Description
market_list List all active perpetual futures markets.
market_price Get the current oracle price for a market by symbol (e.g. "BTC").
account_balances Get bank + subaccount balances. Supports all token types.
account_positions Get open perpetual positions with unrealized P&L.
token_metadata Look up symbol, decimals, and type for any denom.

Native USDC and CCTP

Tool Description
usdc_native_info Return native Injective USDC metadata, including EVM address, Cosmos denom, decimals, CCTP domain, and contracts.
cctp_supported_chains Return common Circle CCTP V2 source-chain configs and aliases for native USDC flows into Injective.
cctp_attestation_status Check Circle Iris attestation status for a CCTP burn transaction. Read-only.
cctp_mint Submit receiveMessage(message, attestation) on Injective EVM after an attestation is complete. Real transaction.

RFQ

Tool Description
rfq_constants Return RFQ contract, gateway, websocket, chain IDs, and default quote collection window for the configured network.
rfq_market_readiness List active derivative markets and mark which ones match the RFQ quote denom. Read-only.

Frontend Guidance

Tool Description
frontend_guidance_topics List read-only frontend guidance topics available from the MCP server.
frontend_guidance Return guidance for Injective browser trading flows, optionally filtered by topic.

Perpetual Trading

Tool Description
trade_open Open a position with a market order (Cosmos signing).
trade_close Close an open position with a market order (Cosmos signing).
trade_open_eip712 Open a position using EIP-712 Ethereum signing (MetaMask-compatible keys).
trade_close_eip712 Close a position using EIP-712 Ethereum signing (MetaMask-compatible keys).
trade_limit_open Open a limit order.
trade_limit_orders List open limit orders.
trade_limit_close Cancel a limit order by orderHash.
trade_limit_states Query order states by order hash.

Transfers & Subaccounts

Tool Description
transfer_send Send tokens to another Injective address.
subaccount_deposit Deposit from bank balance into a trading subaccount.
subaccount_withdraw Withdraw from a trading subaccount back to bank balance.

Bridging

Tool Description
bridge_withdraw_to_eth Withdraw to Ethereum via the Peggy bridge (~30 min, fee applies).
bridge_debridge_quote Get a deBridge DLN quote to any supported chain. Read-only.
bridge_debridge_send Bridge tokens from Injective to another chain via deBridge DLN.

EVM

Tool Description
evm_broadcast Broadcast a raw EVM transaction on Injective EVM.

Setup

npm install
npm run build

Connect to Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "injective": {
      "command": "node",
      "args": ["/path/to/mcp-server/dist/mcp/server.js"],
      "env": {
        "INJECTIVE_NETWORK": "mainnet"
      }
    }
  }
}

Connect to Claude Code

Add to ~/.claude/mcp.json or your project’s MCP config:

{
  "mcpServers": {
    "injective": {
      "command": "node",
      "args": ["/path/to/mcp-server/dist/mcp/server.js"],
      "env": {
        "INJECTIVE_NETWORK": "mainnet"
      }
    }
  }
}

Set INJECTIVE_NETWORK to "testnet" to use the Injective testnet.


Quickstart

Once connected, a typical session looks like:

> List all BTC and ETH perpetual markets
> What's the current price of BTC?
> Show my balances for inj1...
> Deposit 100 USDT into my trading subaccount
> Open a $50 long on BTC/USDT with 5x leverage
> Show my open positions
> Close my BTC position

For limit orders:

> Open a limit buy on ETH at $3200 for $100 notional, 3x leverage
> List my open limit orders
> Cancel order 0xabc...

For bridging:

> Get a deBridge quote to bridge 50 USDT from Injective to Base
> Bridge 50 USDT to 0x... on Base via deBridge

For native USDC and CCTP:

> Show the native Injective USDC denom and CCTP domain
> Check the CCTP attestation status for burn tx 0x...
> Mint the completed CCTP transfer on Injective

For RFQ discovery:

> Show RFQ constants for mainnet
> Which active USDC perp markets are RFQ-ready?

For frontend implementation guidance:

> List Injective frontend guidance topics
> Show frontend guidance for native USDC balance UX
> What should I check before shipping an Injective browser wallet signing flow?

Architecture

Claude (MCP client)
       │  tool calls over stdio
       ▼
MCP Server  (src/mcp/server.ts)
       │
       ├── config/       Network config (testnet / mainnet)
       ├── addresses/    Injective/Ethereum address normalization
       ├── keystore/     AES-256-GCM encrypted key storage
       ├── wallets/      Wallet generation and management
       ├── markets/      Market data with in-memory caching
       ├── accounts/     Balances and positions
       ├── usdc/         Native USDC metadata and Circle CCTP helpers
       ├── rfq/          RFQ constants and market readiness
       ├── guidance/     Read-only frontend implementation guidance
       ├── trading/      Perpetual market orders (Cosmos signing)
       ├── evm/eip712    Perpetual market orders (EIP-712 signing)
       ├── orders/       Perpetual limit order lifecycle
       ├── transfers/    Bank transfers and subaccount moves
       ├── bridges/      Peggy + deBridge cross-chain
       └── evm/          Generic Injective EVM tx broadcasting
              │
              ▼
     Injective Chain
     @injectivelabs/sdk-ts

Security

  • Private keys are never stored in plaintext — AES-256-GCM + scrypt at rest
  • Keys live in ~/.injective-agent/keys/ with 0600 permissions
  • Claude never sees raw private keys — only addresses and tx hashes
  • Wallet passwords are passed as tool parameters and may appear in MCP client logs — avoid reusing passwords from other services

See SECURITY.md for the full security model.


Development

npm test                   # unit tests (no network required)
npm run test:integration   # integration tests against testnet
npm run typecheck          # TypeScript type check

Token Support

All Injective denom formats are supported:

Type Format Example
Native inj INJ
Peggy (bridged ERC-20) peggy0x... USDT
IBC ibc/... ATOM
TokenFactory factory/inj.../name —
MTS / Injective EVM ERC-20 erc20:0x... native USDC

Token metadata (symbol, decimals) is resolved automatically against on-chain registry and cached for the lifetime of the server process.


Networks

Network INJECTIVE_NETWORK
Mainnet mainnet
Testnet testnet

Testnet faucet: https://testnet.faucet.injective.network/

View the full README on GitHub

Install

This server does not publish a one-line install command.

Open the repository installation guide New to MCP? Start with the mcpskill.org guide →

Configuration

{ "mcpServers": { "injective": { "command": "node", "args": ["/path/to/mcp-server/dist/mcp/server.js"], "env": { "INJECTIVE_NETWORK": "mainnet" } } } }