Labsco
fuseio logo

Fuse Network

from fuseio

MCP server for Fuse Network: balances, tokens, staking, DeFi data, swaps and on-chain transactions.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedAccount requiredAdvanced setup

Fuse MCP Server

Model Context Protocol server for the Fuse blockchain. Lets AI agents (Claude, Cursor, Gemini, ...) read Fuse on-chain data, submit account-abstracted transactions, deploy contracts, and operate Fusebox APIs through one standard tool interface.

Two ways to use it:

  1. Hosted at https://mcp.fuse.io/mcp β€” free, read-only, configured with Fuse's API keys. No setup beyond pointing your agent at the URL.
  2. Self-hosted via Docker or node dist/index.js β€” required for any write tool (you must control the private key) and for higher rate limits.

Three back-ends, layered:

  • viem JSON-RPC β€” chain primitives any public node can serve, plus EOA writes (send FUSE, ERC-20 transfers, generic contract calls, contract deployment, EIP-191 / EIP-712 signing).
  • Fusebox Web SDK β€” value-added read APIs (token prices, staking, portfolio, UserOp history) and ERC-4337 smart-account writes via UserOperations (optionally gasless via the Fuse paymaster).
  • Fusebox REST APIs β€” direct access to Notification, Smart Wallet, Trade, and Explorer endpoints.

Self-hosting for writes

The hosted endpoint deliberately runs without FUSE_PRIVATE_KEY β€” write tools refuse to operate. Run your own instance when you need to sign transactions, deploy contracts, or submit ERC-4337 UserOps.

Docker

docker build -t fuse-mcp-server .
docker run --rm -p 3000:3000 \
  -e MCP_TRANSPORT=http \
  -e FUSEBOX_PUBLIC_API_KEY=pk_live_... \
  -e FUSE_PRIVATE_KEY=0x... \
  -e FUSE_USE_PAYMASTER=true \
  fuse-mcp-server

Point your agent at http://127.0.0.1:3000/mcp. Same configs as above, swapping the URL.

docker-compose

Drop secrets into a .env file next to docker-compose.yml:

FUSEBOX_PUBLIC_API_KEY=pk_live_...
FUSEBOX_SECRET_API_KEY=sk_live_...
FUSE_PRIVATE_KEY=0x...
FUSE_USE_PAYMASTER=true

Then:

docker compose up -d

Node directly (stdio mode for local subprocess clients)

npm install
npm run build
FUSE_PRIVATE_KEY=0x... node dist/index.js

For Claude Desktop / any client that spawns the server as a subprocess:

{
  "mcpServers": {
    "fuse": {
      "command": "node",
      "args": ["/absolute/path/to/fuse-mcp-server/dist/index.js"],
      "env": {
        "FUSEBOX_PUBLIC_API_KEY": "pk_live_...",
        "FUSE_PRIVATE_KEY": "0x...",
        "FUSE_USE_PAYMASTER": "true"
      }
    }
  }
}

Tools (v0.2) β€” 50 total

RPC reads β€” 8 (no API key required)

ToolDescription
fuse_get_balanceNative FUSE or ERC-20 balance.
fuse_get_transactionFetch a transaction.
fuse_get_receiptFetch a transaction receipt.
fuse_read_contractCall any view/pure function (ABI auto-fetched).
fuse_get_token_metadataname / symbol / decimals / totalSupply.
fuse_get_gas_priceCurrent gas price + EIP-1559 fee suggestions.
fuse_resolve_ensResolve an ENS name (requires ENS_RPC_URL).
fuse_get_account_abstraction_infoERC-4337 state for a smart account.

Fusebox SDK reads β€” 10 (requires FUSEBOX_PUBLIC_API_KEY)

fuse_list_wallet_tokens, fuse_list_wallet_nfts, fuse_get_staking_options, fuse_get_staked_tokens, fuse_get_token_price, fuse_get_token_price_change, fuse_get_token_price_history, fuse_list_supported_tokens, fuse_get_trade_quote, fuse_get_user_operations.

Fusebox REST APIs β€” 14 (requires FUSEBOX_PUBLIC_API_KEY; Notification also needs FUSEBOX_SECRET_API_KEY)

Notification (8): fuse_notification_{create,get,list_project,update,delete}_webhook, fuse_notification_{add,remove,list}_addresses. Smart Wallet (2): fuse_smart_wallet_authenticate, fuse_smart_wallet_get_actions. Trade (3, non-SDK): fuse_trade_indicative_price, fuse_trade_liquidity_sources, fuse_trade_price_change_over_duration. Explorer (1 generic dispatcher): fuse_explorer_query β€” covers all 40+ etherscan-style endpoints.

EOA writes β€” 7 (requires FUSE_PRIVATE_KEY)

ToolDescription
fuse_get_signer_addressShow which EOA the server controls.
fuse_send_nativeTransfer native FUSE.
fuse_send_erc20Transfer an ERC-20 (decimals auto-detected).
fuse_write_contractState-mutating call (simulates first to surface revert reasons).
fuse_deploy_contractDeploy from bytecode + ABI + args. Optionally waits for the receipt.
fuse_sign_messageEIP-191 (personal_sign) signature. No tx broadcast.
fuse_sign_typed_dataEIP-712 structured-data signature. No tx broadcast.

Smart-account writes (ERC-4337 UserOps) β€” 11 (requires FUSE_PRIVATE_KEY + FUSEBOX_PUBLIC_API_KEY)

fuse_smart_get_info, fuse_smart_transfer_{token,nft}, fuse_smart_approve_{token,nft}, fuse_smart_approve_and_call, fuse_smart_call_contract, fuse_smart_execute_batch, fuse_smart_swap_tokens, fuse_smart_stake_token, fuse_smart_unstake_token. Set FUSE_USE_PAYMASTER=true to route through the Fuse paymaster (gasless).


Project layout

.
β”œβ”€β”€ Dockerfile                    Multi-stage build β†’ distroless-ish Alpine runtime, non-root user
β”œβ”€β”€ docker-compose.yml            One-line local deploy
β”œβ”€β”€ .dockerignore
β”œβ”€β”€ package.json
β”œβ”€β”€ tsconfig.json
└── src/
    β”œβ”€β”€ index.ts                  Transport dispatcher (stdio | http)
    β”œβ”€β”€ server.ts                 Builds the McpServer + ToolContext
    β”œβ”€β”€ config.ts                 Env loading
    β”œβ”€β”€ types.ts                  Shared tool types
    β”œβ”€β”€ transports/
    β”‚   β”œβ”€β”€ stdio.ts              Local subprocess transport
    β”‚   └── http.ts               Streamable HTTP transport + /healthz
    β”œβ”€β”€ clients/
    β”‚   β”œβ”€β”€ rpc.ts                viem PublicClient factories
    β”‚   β”œβ”€β”€ signer.ts             EOA signer (viem WalletClient + ethers v5 Wallet)
    β”‚   β”œβ”€β”€ explorer.ts           Blockscout ABI fetcher
    β”‚   β”œβ”€β”€ fusebox.ts            Fusebox SDK factories (read-only + credentialed)
    β”‚   └── fuseboxApi.ts         Raw HTTP client for Fusebox REST APIs
    β”œβ”€β”€ lib/
    β”‚   β”œβ”€β”€ address.ts            Address validation, ENS heuristics, hex bytes
    β”‚   β”œβ”€β”€ erc20.ts              ERC-20 ABI (read + write)
    β”‚   β”œβ”€β”€ units.ts              parseAmount / fetchErc20Decimals
    β”‚   β”œβ”€β”€ format.ts             BigInt-safe JSON serialization
    β”‚   └── userOp.ts             UserOp response β†’ JSON-safe summary
    └── tools/
        β”œβ”€β”€ index.ts              Registry (50 tools)
        β”œβ”€β”€ *.ts                  RPC reads (8)
        β”œβ”€β”€ listWalletTokens.ts … getUserOperations.ts   Fusebox SDK reads (10)
        β”œβ”€β”€ notifications/        Fusebox Notification API (8)
        β”œβ”€β”€ smartWallets/         Fusebox Smart Wallet API (2)
        β”œβ”€β”€ tradeApi/             Fusebox Trade API non-SDK endpoints (3)
        β”œβ”€β”€ explorerApi/          Fusebox Explorer API dispatcher (1)
        β”œβ”€β”€ writes/               EOA writes (7)
        └── smart/                Smart-account writes (11)