Fuse Network
About
MCP server for Fuse Network: balances, tokens, staking, DeFi data, swaps and on-chain transactions.
Details
- Author
- fuseio
- Downloads
- 626
- Categories
- Finance, Other
Jump to
- 50 tools across five categories: RPC reads, SDK reads, REST APIs, EOA writes, and smart‑account writes.
- RPC reads work without any API key; all other categories require one or more environment‑configured keys.
- Self‑hosted instance offers full write access; hosted endpoint is read‑only.
- Supports ERC‑4337 smart‑account UserOps, including gasless transactions via the Fuse paymaster.
- Private keys are only read from the environment at startup and never accepted as tool arguments.
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Fuse NetworkCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
The hosted endpoint is available at https://mcp.fuse.io/mcp using the Streamable HTTP transport. Point your MCP‑compatible agent at that URL – no setup beyond adding the server to the agent’s configuration. To enable write tools (e.g. sending transactions, deploying contracts), you must self‑host the server via Docker or node dist/index.js, setting the required environment variables (FUSE_PRIVATE_KEY, FUSEBOX_PUBLIC_API_KEY, etc.).
fuse_get_balance
Returns the native FUSE balance for an address, or an ERC-20 token balance when `tokenAddress` is supplied.
fuse_get_transaction
Fetches a transaction by hash. Returns null if the transaction is not found.
fuse_get_receipt
Fetches the receipt for a mined transaction (status, gasUsed, logs). Returns null if the transaction is pending or unknown.
fuse_read_contract
Calls a view/pure function on a Fuse contract. ABI is auto-fetched from the verified Fuse explorer when not supplied.
fuse_get_token_metadata
Reads name, symbol, decimals, and totalSupply for an ERC-20 token deployed on Fuse.
fuse_get_gas_price
Returns the current Fuse network gas price (in wei and gwei) along with EIP-1559 fee suggestions when available.
fuse_resolve_ens
Resolves an ENS name to its EVM address. ENS is not deployed on Fuse — resolution requires `ENS_RPC_URL` to be configured (typically pointing at Ethereum mainnet). Plain hex addresses are passed through.
fuse_get_account_abstraction_info
Reads ERC-4337 state for a smart account on Fuse: deployment status, EntryPoint nonce, and the account's deposit balance at the EntryPoint. Paymaster eligibility is not evaluated in v0.1.
fuse_list_wallet_tokens
Lists all ERC-20 tokens held by a wallet on Fuse, enriched with Fusebox metadata (symbol, decimals, USD value). Powered by the Fusebox SDK BalancesModule.
fuse_list_wallet_nfts
Lists all NFTs (ERC-721 / ERC-1155 collectibles) owned by a wallet on Fuse. Powered by the Fusebox SDK BalancesModule.
fuse_get_staking_options
Lists every staking option supported by Fuse — token, APR, TVL, expiry, and the matching unstake token. Powered by the Fusebox SDK StakingModule.
fuse_get_staked_tokens
Returns the active staking positions for a wallet — staked amount, USD value, earned rewards, and APR per position. Powered by the Fusebox SDK StakingModule.
fuse_get_token_price
Returns the current USD price for an ERC-20 token tracked by Fusebox. Powered by the Fusebox SDK TradeModule.
fuse_get_token_price_change
Returns the 24-hour percentage price change for an ERC-20 token tracked by Fusebox. Powered by the Fusebox SDK TradeModule.
fuse_get_token_price_history
Returns OHLC / interval price stats for an ERC-20 token over a week, month, or year. Powered by the Fusebox SDK TradeModule.
fuse_list_supported_tokens
Returns the catalogue of ERC-20 tokens tracked by Fusebox (tradable, indexed, priced). Powered by the Fusebox SDK TradeModule.
fuse_get_trade_quote
Quotes a token swap on Fuse — expected output amount, route, and price impact. Read-only: returns the quote without submitting a trade. Powered by the Fusebox SDK TradeModule.
fuse_get_user_operations
Returns the ERC-4337 UserOperation history for a smart account on Fuse, indexed via the Fusebox GraphQL service. Powered by the Fusebox SDK GraphQLModule.
fuse_notification_create_webhook
Create a Fusebox Notification webhook for a project. Requires `FUSEBOX_SECRET_API_KEY` (Notification API endpoints authenticate with both apiKey and API-SECRET).
fuse_notification_get_webhook
Retrieve details of a single Fusebox Notification webhook. Requires `FUSEBOX_SECRET_API_KEY`.
fuse_notification_list_project_webhooks
List every Fusebox Notification webhook configured for a given project. Requires `FUSEBOX_SECRET_API_KEY`.
fuse_notification_update_webhook
Update a Fusebox Notification webhook's URL or event type. Requires `FUSEBOX_SECRET_API_KEY`.
fuse_notification_delete_webhook
Permanently delete a Fusebox Notification webhook. Destructive — the webhook stops receiving events. Requires `FUSEBOX_SECRET_API_KEY`.
fuse_notification_add_addresses
Add one or more EVM addresses to a webhook's listening scope. Requires `FUSEBOX_SECRET_API_KEY`.
fuse_notification_remove_addresses
Remove EVM addresses from a webhook's listening scope. Requires `FUSEBOX_SECRET_API_KEY`.
fuse_notification_list_addresses
List every EVM address monitored by a given webhook. Requires `FUSEBOX_SECRET_API_KEY`.
fuse_smart_wallet_authenticate
Exchange an EIP-191 signature for a JWT used as Bearer auth on Smart Wallet API calls (e.g. `fuse_smart_wallet_get_actions`). Signing happens client-side; this tool only submits the signed payload.
fuse_smart_wallet_get_actions
List the paginated action history (transfers, contract calls) of an authenticated smart wallet. The JWT comes from `fuse_smart_wallet_authenticate`.
fuse_trade_indicative_price
Returns an indicative price + route for a swap on Fuse (0x-style response). One of `sellAmount` / `buyAmount` must be provided.
fuse_trade_liquidity_sources
Returns the liquidity sources currently enabled for Fuse-chain trades (e.g. voltage.finance, sub-pools).
fuse_trade_price_change_over_duration
Returns a token's price change over a custom day-count window (`{ priceChange, currentPrice, previousPrice }`).
fuse_explorer_query
Generic dispatcher for the Fusebox Explorer API (`/api/v0/explorer/`). Pass `module` + `action` + any additional query params. Covers all 40+ etherscan-compatible endpoints including balances, logs, transactions, contract ABI/source, and the five contract-verify POST routes.
fuse_get_signer_address
Returns the EOA address controlled by the server's configured `FUSE_PRIVATE_KEY`. Use this before any write tool to confirm which account will pay gas and send transactions.
fuse_send_native
Submits a signed transaction transferring native FUSE from the server's signer to a recipient. Returns the transaction hash; use `fuse_get_receipt` to confirm inclusion.
fuse_send_erc20
Submits a signed `ERC20.transfer(to, amount)` from the server's signer. Decimals are auto-fetched from the token; use `unit: "base"` to skip scaling.
fuse_write_contract
Signs and submits a state-mutating contract call from the server's signer. ABI is auto-fetched from the Fuse explorer when not supplied. Returns the transaction hash.
fuse_deploy_contract
Signs and submits a contract-deployment transaction using the server's signer. Returns the transaction hash, and the deployed contract address when `waitForReceipt: true`.
fuse_sign_message
Signs a message with the server's signer using EIP-191 (`personal_sign`). Returns the 65-byte signature as hex. No on-chain transaction is submitted.
fuse_sign_typed_data
Signs a structured EIP-712 payload with the server's signer. Returns the 65-byte signature as hex. No on-chain transaction is submitted.
fuse_smart_get_info
Returns the ERC-4337 smart-wallet address derived from the configured signer, plus whether the Fuse paymaster (gasless mode) is enabled.
fuse_smart_transfer_token
Submits an ERC-4337 UserOperation transferring a token (native FUSE or ERC-20) from the configured smart wallet. Gasless when `FUSE_USE_PAYMASTER=true`.
fuse_smart_transfer_nft
Submits an ERC-4337 UserOperation transferring an NFT (ERC-721 / ERC-1155) from the configured smart wallet to a recipient.
fuse_smart_approve_token
Submits an ERC-4337 UserOperation calling `ERC20.approve(spender, amount)` from the configured smart wallet.
fuse_smart_approve_nft
Submits an ERC-4337 UserOperation calling `approve(spender, tokenId)` on an NFT contract from the configured smart wallet.
fuse_smart_approve_and_call
Atomically approves a token and invokes a follow-up call on the spender from the configured smart wallet. Common DeFi pattern.
fuse_smart_call_contract
Submits an ERC-4337 UserOperation invoking arbitrary calldata on a contract from the configured smart wallet. Use when you need full control over the encoded call.
fuse_smart_execute_batch
Submits a single ERC-4337 UserOperation that executes a sequence of contract calls atomically. Failed sub-calls revert the whole batch.
fuse_smart_swap_tokens
Submits an ERC-4337 UserOperation executing a swap on Fuse via the Fusebox trade engine. Quote a swap first with `fuse_get_trade_quote` to preview the route.
fuse_smart_stake_token
Submits an ERC-4337 UserOperation that stakes a token using Fuse's staking module. List options first with `fuse_get_staking_options`.
fuse_smart_unstake_token
Submits an ERC-4337 UserOperation that unstakes a token via Fuse's staking module.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"fuse network": {
"fuse": {
"url": "https://mcp.fuse.io/mcp"
}
}
}
}
McpServers
{
"fuse": {
"url": "https://mcp.fuse.io/mcp"
}
}
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 athttps://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.
---
Quick install for AI agents (hosted at mcp.fuse.io)
The hosted endpoint speaks the Streamable HTTP transport athttps://mcp.fuse.io/mcp. All read tools are enabled; write tools are not (they need a server-side private key — see Self-hosting for writes below).
Claude Code
``bash
claude mcp add fuse --transport http https://mcp.fuse.io/mcp
`
To remove later: claude mcp remove fuse.
Cursor
Settings → MCP → Add new server, or edit ~/.cursor/mcp.json:
`json
{
"mcpServers": {
"fuse": {
"url": "https://mcp.fuse.io/mcp"
}
}
}
`
Claude Desktop
Claude Desktop currently launches MCP servers as local subprocesses, so it talks to the hosted endpoint through the mcp-remote bridge. Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
`json
{
"mcpServers": {
"fuse": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.fuse.io/mcp"]
}
}
}
`
Restart Claude Desktop.
Continue (VS Code / JetBrains)
~/.continue/config.yaml:
`yaml
mcpServers:
- name: fuse
url: https://mcp.fuse.io/mcp
`
Cline / Roo Code
Add via the MCP sidebar → "Add Remote Server", URL https://mcp.fuse.io/mcp. Or edit ~/.cline/mcp_settings.json:
`json
{
"mcpServers": {
"fuse": { "url": "https://mcp.fuse.io/mcp", "transport": "streamable-http" }
}
}
`
Zed
~/.config/zed/settings.json:
`json
{
"context_servers": {
"fuse": { "command": { "path": "npx", "args": ["-y", "mcp-remote", "https://mcp.fuse.io/mcp"] } }
}
}
`
Anything else (generic Streamable HTTP client)
Endpoint: https://mcp.fuse.io/mcp
Transport: Streamable HTTP (POST + optional SSE upgrade)
Auth: none on the hosted endpoint (it's read-only)
---
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
`bash
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:
`env
FUSEBOX_PUBLIC_API_KEY=pk_live_...
FUSEBOX_SECRET_API_KEY=sk_live_...
FUSE_PRIVATE_KEY=0x...
FUSE_USE_PAYMASTER=true
`
Then:
`bash
docker compose up -d
`
Node directly (stdio mode for local subprocess clients)
`bash
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:
`json
{
"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)_
| Tool | Description |
| --- | --- |
| fuse_get_balance | Native FUSE or ERC-20 balance. |
| fuse_get_transaction | Fetch a transaction. |
| fuse_get_receipt | Fetch a transaction receipt. |
| fuse_read_contract | Call any view/pure function (ABI auto-fetched). |
| fuse_get_token_metadata | name / symbol / decimals / totalSupply. |
| fuse_get_gas_price | Current gas price + EIP-1559 fee suggestions. |
| fuse_resolve_ens | Resolve an ENS name (requires ENS_RPC_URL). |
| fuse_get_account_abstraction_info | ERC-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)_
| Tool | Description |
| --- | --- |
| fuse_get_signer_address | Show which EOA the server controls. |
| fuse_send_native | Transfer native FUSE. |
| fuse_send_erc20 | Transfer an ERC-20 (decimals auto-detected). |
| fuse_write_contract | State-mutating call (simulates first to surface revert reasons). |
| fuse_deploy_contract | Deploy from bytecode + ABI + args. Optionally waits for the receipt. |
| fuse_sign_message | EIP-191 (personal_sign) signature. No tx broadcast. |
| fuse_sign_typed_data | EIP-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).
---
Configuration
| Variable | Default | Purpose |
| --- | --- | --- |
| MCP_TRANSPORT | stdio | stdio (local subprocess) or http (Streamable HTTP for hosted/Docker). |
| MCP_HTTP_HOST | 0.0.0.0 | HTTP bind host. |
| MCP_HTTP_PORT | 3000 | HTTP listen port. |
| MCP_HTTP_PATH | /mcp | HTTP route path. |
| FUSE_NETWORK | mainnet | mainnet (chain 122) or spark (testnet, chain 123). |
| FUSE_RPC_URL | network default | Override the JSON-RPC endpoint. |
| FUSE_EXPLORER_URL | network default | Override the Blockscout explorer base URL. |
| FUSE_ENTRYPOINT_ADDRESS | ERC-4337 v0.7 canonical | Override the EntryPoint. |
| ENS_RPC_URL | _unset_ | Ethereum mainnet RPC for .eth resolution. |
| FUSEBOX_PUBLIC_API_KEY | _unset_ | Public API key — required for SDK + REST + smart-account tools. |
| FUSEBOX_SECRET_API_KEY | _unset_ | Secret API key (API-SECRET header). Required only by Notification API tools. |
| FUSEBOX_BASE_URL | SDK default | Override the SDK's Fusebox API host. |
| FUSEBOX_API_ORIGIN | https://api.fuse.io | Override the raw HTTP client's Fusebox API origin. |
| FUSE_PRIVATE_KEY | _unset_ | 32-byte hex private key for the signer. Required by every write tool. Read once at startup; never accepted as a tool argument. |
| FUSE_USE_PAYMASTER | false | When true, smart-account UserOps route through the Fuse paymaster (gasless). |
Security model
- Key handling. Private keys live in the server's environment only. They are never accepted as tool arguments — that would leak them into the agent's conversation transcript. The server reads FUSE_PRIVATE_KEY once at startup and signs locally.
- Hosted endpoint. https://mcp.fuse.io/mcp has no FUSE_PRIVATE_KEY configured. Write tools return an actionable error pointing users to self-hosting. The Fusebox public key bundled there is rate-limited for fair sharing.
- Self-hosted production. Treat the server as a hot-wallet signer. Run it next to your application, lock down ingress, fund the EOA with the minimum FUSE you're willing to lose to a prompt-injection mishap, and prefer the paymaster (FUSE_USE_PAYMASTER=true) so the smart wallet can transact without holding gas.
---
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)
``Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



