Multichain MCP Server
The Multichain MCP Server gives AI agents native access to Stacks, Celo, and Base blockchains across 5 tools with tiered access. All write operations return unsigned transactions, keeping the server non-custodial.
get_balance(Free): Retrieve native and token balances for any wallet on Celo, Base, or Stacks.get_prices(Free): Fetch real-time token prices and 24-hour changes for STX, CELO, ETH, USDC, WBTC, and more, with support for different quote currencies.get_portfolio(Pro): Aggregate wallet balances across all three chains in a single call.prepare_transfer(Pro): Build an unsigned transaction to transfer native tokens or ERC-20/SIP-010 tokens on any supported chain.deploy_token(Team): Prepare an unsigned ERC-20 token deployment on Celo or Base, specifying name, symbol, total supply, decimals, and owner address.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Multichain MCP ServerShow my full portfolio across all chains"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@wkalidev/multichain-mcp
The only MCP server that gives AI agents native access to Stacks, Celo, and Base — from a single npm package.
Connect Claude Desktop, Cursor, or any MCP-compatible AI to 3 blockchains in under 5 minutes.
Why this exists
Building an AI agent that interacts with Web3 today means writing separate integrations for every chain. This package ships a production-ready MCP server with 5 battle-tested tools across Stacks (Bitcoin L2), Celo, and Base — no RPC keys required to start.
Related MCP server: aibtc-mcp-server
Pricing
Tier | Price | Tools | |
Free | $0 |
| |
Pro | $9/mo | + | |
Team | $29/mo | + |
Tools included
Tool | Description | Tier |
| Native + token balances for any wallet | Free |
| Live prices + 24h change (STX, CELO, ETH, USDC, WBTC…) | Free |
| Aggregate view across all 3 chains in one call | Pro |
| Build unsigned tx for native or ERC-20/SIP-010 transfer | Pro |
| Prepare unsigned ERC-20 deployment tx on Celo or Base | Team |
All write operations return unsigned transactions — your users always sign with their own wallet. Non-custodial by design.
Install
npm install @wkalidev/multichain-mcpClaude Desktop setup
Add to your claude_desktop_config.json:
{
"mcpServers": {
"multichain": {
"command": "npx",
"args": ["-y", "@wkalidev/multichain-mcp"],
"env": {
"MULTICHAIN_LICENSE_KEY": "your-license-key"
}
}
}
}Omit the env block to run on the Free tier. Restart Claude Desktop after adding your key.
Cursor / Windsurf setup
Add to .cursor/mcp.json or .windsurf/mcp.json:
{
"mcpServers": {
"multichain": {
"command": "npx",
"args": ["-y", "@wkalidev/multichain-mcp"],
"env": {
"MULTICHAIN_LICENSE_KEY": "your-license-key"
}
}
}
}Usage examples
Check Stacks wallet
"What tokens does SP2C2YFP12AJZB4MABJBAJ55XECVS7E4PMMZ89YZR hold on Stacks?"
→ get_balance({ address: "SP2C2YFP...", chain: "stacks" })Full multichain portfolio
"Show me my full portfolio across all chains"
→ get_portfolio({ addresses: { stacks: "SP...", celo: "0x...", base: "0x..." } })Deploy a token
"Deploy a token called GreenDAO with symbol GRN, 1M supply on Base"
→ deploy_token({ chain: "base", name: "GreenDAO", symbol: "GRN", totalSupply: "1000000", ownerAddress: "0x..." })Live prices
"What are the current prices of STX, CELO and ETH?"
→ get_prices({ symbols: ["STX", "CELO", "ETH"] })Networks
Chain | RPC | Explorer |
Stacks | api.hiro.so (public) | explorer.hiro.so |
Celo | forno.celo.org (public) | celoscan.io |
Base | mainnet.base.org (public) | basescan.org |
No API keys required for basic usage.
Programmatic use
import { getBalance, getPortfolio, getPrices } from "@wkalidev/multichain-mcp";
const balance = await getBalance({ address: "SP2C2YFP...", chain: "stacks" });
const prices = await getPrices({ symbols: ["STX", "CELO", "ETH"] });Built by
@wkalidev — author of celobank-agent (ERC-8004 AI agent, 21 MCP tools on Celo mainnet) and stacks-quest (non-custodial DeFi terminal on Stacks Bitcoin L2).
License
MIT
Available Tools
5 toolsdeploy_tokenA
Prepare an unsigned ERC-20 token deployment transaction on Celo or Base
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Token name (e.g. 'My Token') | |
| chain | Yes | EVM chain to deploy on | |
| symbol | Yes | Token symbol (e.g. 'MTK') | |
| decimals | No | ||
| totalSupply | Yes | Total supply (e.g. '1000000') | |
| ownerAddress | Yes | Address that will receive the initial supply |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the transaction is unsigned (important behavioral trait), but does not disclose the output format, side effects, prerequisites (e.g., wallet connection, gas), or what happens post-preparation. Partial transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, 12 words, front-loaded with key information. No wasted words; every part contributes to the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of deploying a token, the description is too brief. It lacks information about the output (e.g., transaction hash or unsigned transaction object), prerequisites, error conditions, or what to do after preparation. No output schema exists to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (83%), so the baseline is 3. The description does not add any parameter semantics beyond what the schema already provides (e.g., token name, chain, etc.). No additional value added.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's action ('prepare'), the resource ('unsigned ERC-20 token deployment transaction'), and the supported chains ('Celo or Base'). It distinguishes from siblings like 'prepare_transfer' (which handles transfers of existing tokens) and read-only tools like 'get_balance'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for deploying new ERC-20 tokens, but does not provide explicit guidance on when to use this tool versus alternatives (e.g., 'prepare_transfer' for transfers). No when-not-to-use or exclusion criteria are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_balanceA
Get native and token balances for a wallet on Celo, Base, or Stacks
| Name | Required | Description | Default |
|---|---|---|---|
| chain | Yes | Target blockchain | |
| address | Yes | Wallet address (EVM 0x... or Stacks SP/ST...) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry full behavioral disclosure. It correctly indicates a read operation and specifies input (chain, address). However, it omits details like whether it returns all tokens or only major ones, error handling, or authentication requirements. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that wastes no words. It efficiently communicates the core purpose without extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple balance retrieval tool, the description covers the essential context: action, resource, and supported chains. It does not specify output format or behavior for invalid inputs, but given the tool's simplicity, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameters 'chain' (enum) and 'address' are already well-documented with descriptions. The description adds the high-level context of 'native and token balances', but does not provide additional detail beyond what the schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get balances'), the resource ('wallet'), and scope ('native and token', 'on Celo, Base, or Stacks'). It distinguishes from siblings like deploy_token (deployment) and get_prices (price data), making the tool's role unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (when needing wallet balances on supported chains), but lacks explicit exclusions or comparisons to siblings like get_portfolio, which may also show balances. No 'when not to use' guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portfolioA
Aggregate wallet balances across Celo, Base, and Stacks in one call
| Name | Required | Description | Default |
|---|---|---|---|
| addresses | Yes | Your wallet addresses per chain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It merely says 'aggregate wallet balances' with no mention of side effects, authentication needs, rate limits, or whether it returns a sum or list. The read-only nature is implied but not stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with the key action and scope. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity (1 parameter, no output schema), the description is adequate but lacks details on handling omitted optional properties and return value behavior. It could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with property descriptions detailing address formats. The description adds 'aggregate' but does not provide additional meaning beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it aggregates wallet balances across three specific chains (Celo, Base, Stacks) with the verb 'aggregate' and resource 'wallet balances'. This distinguishes it from sibling tools like get_balance (likely single-chain) and get_prices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for multi-chain portfolio but does not explicitly state when to use versus alternatives (e.g., get_balance for single chain). No when-not or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricesA
Get real-time token prices and 24h change for STX, CELO, ETH, and more
| Name | Required | Description | Default |
|---|---|---|---|
| symbols | Yes | Token symbols to fetch (e.g. ['STX', 'CELO', 'ETH']) | |
| currency | No | Quote currency (default: usd) | usd |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It correctly indicates a read operation (fetching prices and change) but does not disclose rate limits, authentication requirements, or data freshness. With no annotations, more detail is expected, but the description is not misleading.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is front-loaded with verb and resource, no filler words. Efficiently conveys the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with no output schema, the description adequately states what is returned (prices and 24h change). It could be more complete by hinting at the return structure, but it is sufficient for an agent to understand the tool's value.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to add much. It adds context by naming example tokens and mentioning default currency, but this is not significantly beyond the schema descriptions. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Get', resource 'real-time token prices and 24h change', and provides example tokens (STX, CELO, ETH), making the tool's function immediately obvious. Sibling tools involve token deployment, balance queries, portfolio, and transfers, so this tool is distinctly about price fetching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for fetching price data but lacks explicit guidance on when to use this tool over alternatives, no prerequisites or exclusions mentioned. Given the straightforward nature, it's adequate but could benefit from stating context like 'use for current market data'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_transferA
Build an unsigned transaction to transfer native tokens or ERC-20/SIP-010 tokens on any supported chain
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient address | |
| from | Yes | Sender address | |
| chain | Yes | ||
| amount | Yes | Amount as a string (e.g. '1.5') | |
| tokenAddress | No | ERC-20/SIP-010 contract address. Omit for native transfer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It explicitly states that the tool builds an 'unsigned transaction', indicating no on-chain execution. However, it does not describe what the returned transaction object contains, whether authentication is required, or what happens on error. This is adequate but lacks deeper context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the action ('Build'), resource ('unsigned transaction'), and scope ('transfer native tokens or ERC-20/SIP-010 tokens'). No unnecessary words; every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and no output schema, the description is minimal. It lacks details on the structure of the returned unsigned transaction, chain-specific behavior, or denomination constraints for 'amount'. While it covers the core purpose, additional context would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80% (4 of 5 parameters have descriptions). The description adds value by clarifying that the tool supports both native and token transfers and that the output is an unsigned transaction. This context helps interpret the 'tokenAddress' parameter. The missing 'chain' parameter description is partly compensated by the overall purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: building an unsigned transaction to transfer native tokens or ERC-20/SIP-010 tokens on supported chains. It uses a specific verb ('Build') and resource ('unsigned transaction'), and it distinguishes itself from sibling tools like 'deploy_token' or 'get_balance' by focusing on transfers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for transfer tasks, and sibling tools are clearly different (deploy, query, pricing). However, it does not explicitly state when to use this tool versus alternative transfer methods (if any), nor does it mention prerequisites like wallet connection or balance checks. The guidance is implicit but sufficient given the sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct operation: deploying tokens, checking balances, aggregating portfolio, fetching prices, and preparing transfers. No overlap in functionality.
All tool names follow a consistent verb_noun pattern (e.g., deploy_token, get_balance, get_portfolio, get_prices, prepare_transfer) with no mixing of conventions.
With 5 tools covering deployment, balance queries, portfolio aggregation, price data, and transfers, the count is well-scoped for a multichain wallet/defi assistant.
Covers core operations for token deployment, balance checks, pricing, and transfers. Minor gaps include token metadata retrieval and approval transactions, but overall surface is solid.
Maintenance
Related MCP Connectors
MCP server connecting AI agents to non-custodial staking data across 130+ networks.
Hosted MCP server for live public-data APIs and Skills for AI agents.
MCP server for AI agents to discover campaigns by humans and donate USDC directly on Base.
One connector for 15,000+ MCP servers plus your team's private MCPs, from any AI client.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA comprehensive MCP server providing unified access to over 144 tools for lending, trading, and staking across six major DeFi protocols on the Stacks Bitcoin Layer 2. It enables AI agents to perform complex blockchain operations and interact with the DeFi ecosystem using natural language commands.3

aibtc-mcp-serverofficial
AlicenseNot gradedqualityAmaintenanceA Bitcoin-native MCP server for AI agents that provides 150+ tools for BTC and Stacks operations. Supports wallets, DeFi yield, sBTC peg, NFTs, and x402 payments.88110MIT- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives AI agents real-time access to DeFi across multiple chains, enabling non-custodial crypto trading, portfolio queries, and transaction execution.147MIT
- AlicenseNot gradedqualityBmaintenanceBitcoin-native MCP server for AI agents: BTC/STX wallets, DeFi yield, sBTC peg, NFTs, and x402 payments.881MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/wkalidev/multichain-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server