Base Network MCP Server
The Base Network MCP Server enables LLMs to perform blockchain operations on the Base network using natural language commands. You can:
Process natural language commands for wallet management, balance checking, and transactions (e.g., "Send 0.1 ETH to 0x123...").
Create new wallets on the Base network, with optional naming.
Check balances of specific wallets (by name or address) or the primary wallet by default.
List all available wallets and their details.
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., "@Base Network MCP Servercheck my wallet balance"
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.
base-network-mcp-server
This is an MCP server for the Base network. It allows LLMs to perform blockchain operations on the Base network through natural language commands, including wallet management, balance checking, and transaction execution.
This server works with both Base Mainnet and Base Sepolia testnet.
Tools
The following tools are available:
process_command
Processes a natural language command for Base network operations. It accepts the following arguments:
command: The natural language command to process (e.g., "Send 0.5 ETH to 0x1234...")
It returns a structured response with the result of the operation, including transaction details for send operations, balance information for balance checks, and wallet details for wallet creation.
create_wallet
Creates a new wallet on the Base network. It accepts the following arguments:
name: (Optional) A name for the wallet
It returns an object containing the wallet address, name, and other details.
check_balance
Checks the balance of a wallet on the Base network. It accepts the following arguments:
wallet: (Optional) The wallet name or address to check (defaults to the primary wallet)
It returns the wallet balance in ETH.
list_wallets
Lists all available wallets.
It returns an array of wallet objects, each containing the wallet address, name, and other details.
Related MCP server: Base MCP Server
Usage
With Claude Desktop
Claude Desktop is a popular LLM client that supports the Model Context Protocol. You can connect your Base MCP server to Claude Desktop to perform blockchain operations via natural language commands.
You can add MCP servers to Claude Desktop via its config file at:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
To add your Base MCP server to Claude Desktop, add the following configuration to the mcpServers object in the config file:
{
"mcpServers": {
"base": {
"command": "npx",
"args": [
"-y",
"base-network-mcp-server"
],
"env": {
"BASE_PROVIDER_URL": "https://api.developer.coinbase.com/rpc/v1/base/YOUR_API_KEY",
"WALLET_PRIVATE_KEY": "your_private_key_here"
},
"disabled": false,
"autoApprove": []
}
}
}Configuration
BASE_PROVIDER_URL: The URL of the Base network provider (Mainnet or Sepolia)WALLET_PRIVATE_KEY: Your wallet private key for authentication and transaction signingDEFAULT_GAS_PRICE: (Optional) Default gas price in Gwei
Programmatically (custom MCP client)
If you're building your own MCP client, you can connect to the Base MCP server programmatically using your preferred transport. The MCP SDK offers built-in stdio and SSE transports.
Installation
npm i base-network-mcp-server
# or
yarn add base-network-mcp-server
# or
pnpm add base-network-mcp-serverExample
The following example uses the StreamTransport to connect directly between an MCP client and server:
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
import { StreamTransport } from '@modelcontextprotocol/sdk/client/stream.js';
import { BaseMcpServer } from 'base-network-mcp-server';
// Create a stream transport for both client and server
const clientTransport = new StreamTransport();
const serverTransport = new StreamTransport();
// Connect the streams together
clientTransport.readable.pipeTo(serverTransport.writable);
serverTransport.readable.pipeTo(clientTransport.writable);
const client = new Client(
{
name: 'MyClient',
version: '0.1.0',
},
{
capabilities: {},
}
);
// Create and configure the Base MCP server
const server = new BaseMcpServer({
providerUrl: 'https://api.developer.coinbase.com/rpc/v1/base/YOUR_API_KEY',
privateKey: 'your_private_key_here',
});
// Connect the client and server to their respective transports
await server.connect(serverTransport);
await client.connect(clientTransport);
// Call tools
const output = await client.callTool({
name: 'process_command',
arguments: {
command: 'Check my wallet balance',
},
});
console.log(output);
// Example output:
// {
// "success": true,
// "message": "Balance of wallet \"default\": 1.5 ETH",
// "balance": "1.5",
// "wallet": "default"
// }Example Commands
Once integrated, you can use natural language commands like:
"Create a new wallet for savings"
"Check my wallet balance"
"What's the balance of my savings wallet?"
"Send 0.1 ETH to 0x1234567890123456789012345678901234567890"
"Transfer 0.5 ETH from my savings wallet to 0xABCD..."
Security Considerations
Since this implementation interacts with real blockchain networks and handles private keys:
Private Key Security: Store private keys securely and never commit them to version control
Use Testnet First: Start with Base Sepolia testnet before moving to mainnet
Transaction Validation: Always validate transaction parameters before sending
Error Handling: Implement robust error handling for network issues
Rate Limiting: Be aware of API rate limits when making frequent requests
Available Tools
4 toolscheck_balanceC
Check wallet balance
| Name | Required | Description | Default |
|---|---|---|---|
| wallet | No | Wallet name or address (defaults to primary wallet) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Check wallet balance' implies a read-only operation, but it doesn't specify whether this requires authentication, what happens if the wallet doesn't exist, or if there are rate limits. For a tool with zero annotation coverage, this is a significant gap in 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 extremely concise at just three words ('Check wallet balance'), with zero wasted language. It's front-loaded and efficiently communicates the core purpose without unnecessary details. This is an example of optimal brevity for a simple tool.
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 tool's simplicity (one optional parameter, no output schema, no annotations), the description is incomplete. It doesn't address what the tool returns (e.g., balance amount, currency), error conditions, or behavioral aspects like authentication needs. For even a simple tool, more context would be helpful for an AI agent.
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?
The input schema has 100% description coverage, with the 'wallet' parameter documented as 'Wallet name or address (defaults to primary wallet)'. The description adds no additional meaning beyond this, as it doesn't mention parameters at all. With high schema coverage, the baseline score of 3 is appropriate, as the schema does the heavy lifting.
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 'Check wallet balance' clearly states the verb ('Check') and resource ('wallet balance'), but it's somewhat vague about what specifically is being checked. It doesn't distinguish this tool from potential alternatives like 'get_balance' or 'view_balance', though no direct siblings exist with similar names. The purpose is understandable but lacks specificity.
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 no guidance on when to use this tool versus alternatives. While there are sibling tools like 'create_wallet' and 'list_wallets', the description doesn't mention them or explain scenarios where checking balance is appropriate versus creating or listing wallets. It's a basic statement with no contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_walletC
Create a new wallet
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional name for the wallet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Create a new wallet' but does not disclose whether this requires authentication, what happens on failure, if there are rate limits, or what the expected output is. This leaves significant gaps for a mutation tool.
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, efficient sentence with zero waste. It is appropriately sized and front-loaded, clearly stating the tool's action without unnecessary elaboration.
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 this is a mutation tool with no annotations, no output schema, and minimal behavioral disclosure, the description is incomplete. It does not address key aspects like what a wallet is, the creation process, or potential errors, making it inadequate for safe and effective use.
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 100%, with the single parameter 'name' documented as 'Optional name for the wallet'. The description adds no additional meaning beyond this, so it meets the baseline of 3 where the schema does the heavy lifting without compensation needed.
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 'Create a new wallet' restates the tool name 'create_wallet' without adding specificity about what a wallet is or what resources it creates. It distinguishes from siblings like 'check_balance' and 'list_wallets' by implying creation vs. querying, but lacks detail about the wallet's purpose or context.
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?
No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, such as whether a user can have multiple wallets, or when to choose this over 'process_command' for wallet-related tasks. The description only states the action without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_walletsB
List all available wallets
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. 'List all available wallets' implies a read-only operation that returns wallet identifiers or metadata, but it doesn't specify critical behaviors: whether it requires authentication, returns paginated results, includes deleted/inactive wallets, or has rate limits. For a tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves in practice.
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, efficient sentence ('List all available wallets') that front-loads the core action and resource. It wastes no words on redundancy or fluff, making it easy to parse quickly. Every word earns its place by directly contributing to understanding the tool's function.
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 tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally adequate. It states what the tool does but lacks context about the return format (e.g., list of wallet names, IDs, or full objects), error conditions, or integration with sibling tools. For a basic list operation, this might suffice, but it doesn't provide enough detail for confident use in complex scenarios.
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?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here. A baseline of 4 is given because the schema fully documents the lack of parameters, and the description doesn't need to compensate—it correctly focuses on the tool's purpose rather than unnecessary parameter explanations.
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 'List all available wallets' clearly states the verb ('List') and resource ('wallets'), making the purpose immediately understandable. It distinguishes from siblings like 'create_wallet' (creation vs listing) and 'check_balance' (listing vs querying specific data), though it doesn't explicitly differentiate from 'process_command' which is more ambiguous. The description is specific enough to understand the tool's function without being tautological.
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 no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., whether wallets must exist), compare it to siblings like 'check_balance' (which might list balances rather than wallets), or specify scenarios where listing is appropriate (e.g., before selecting a wallet for another operation). The agent must infer usage from the tool name and context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
process_commandC
Process a natural language command for Base network operations
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | Natural language command (e.g., "Send 0.1 ETH to 0x123...") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'process a natural language command' but doesn't specify whether this executes commands (potentially destructive), interprets them for further action, or has other behavioral traits like rate limits, authentication needs, or error handling. The description is too vague about what 'process' actually entails.
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, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a tool with one parameter, though it could be more front-loaded with specific details about what 'process' means in this context.
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 processing natural language commands for blockchain operations, the description is insufficient. With no annotations, no output schema, and a vague description, it doesn't provide enough context about what the tool actually does, what operations it supports, or what to expect in return. The agent would struggle to understand when and how to use this tool effectively.
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?
The input schema has 100% description coverage, with the single parameter 'command' clearly documented as 'Natural language command (e.g., "Send 0.1 ETH to 0x123...")'. The description doesn't add any meaningful information beyond what the schema already provides about parameter semantics, so it meets the baseline score of 3 for high schema coverage.
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 states the tool 'Process a natural language command for Base network operations' which provides a general purpose (processing commands) and domain (Base network). However, it's vague about what specific operations it supports and doesn't differentiate from sibling tools like check_balance, create_wallet, or list_wallets. It doesn't specify whether this is for executing commands or interpreting them.
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 no guidance on when to use this tool versus the sibling tools. There's no mention of alternatives, prerequisites, or specific contexts where this tool is appropriate versus check_balance, create_wallet, or list_wallets. The agent must infer usage from the general description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
4 tool updates
v1.0.0- First observed
check_balance - First observed
create_wallet - First observed
list_wallets - First observed
process_command
TDQS
Three tools have clearly distinct purposes (check_balance, create_wallet, list_wallets) with no overlap, but process_command is ambiguous as it could potentially duplicate or overlap with the functionality of the other tools through natural language interpretation, creating some confusion in tool selection.
Three tools follow a consistent verb_noun pattern (check_balance, create_wallet, list_wallets), but process_command deviates slightly by using a more abstract verb and including 'command' instead of a specific noun, breaking the pattern and reducing overall consistency.
With 4 tools, the count is reasonable and well-scoped for a wallet management server, though it feels slightly thin as it lacks tools for operations like updating or deleting wallets, which are common in such domains.
The toolset covers basic wallet operations (create, list, check balance) and includes a general command processor, but there are notable gaps such as missing update_wallet, delete_wallet, or transaction-related tools, which are typical for network operations and could lead to agent workarounds or failures.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
OpenAI-compatible LLM MCP (7 tools); chat via balance key or x402 USDC on Base
MCP server for AI dialogue using various LLM models via AceDataCloud
MCP server for AI agents to discover campaigns by humans and donate USDC directly on Base.
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that connects Claude for Desktop with blockchain functionality, allowing users to check balances and send tokens on EVM and Solana chains through natural language interactions.-
- AlicenseNot gradedqualityFmaintenanceAn MCP server that provides onchain tools for Claude AI to interact with the Base blockchain and Coinbase API, enabling wallet operations, testnet ETH, balance checks, fund transfers, and smart contract deployment.134MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that bridges AI models with Ethereum blockchains via all JSON-RPC calls, enabling natural language queries for block numbers, balances, transactions, and smart contract data.1721MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI-driven on-chain interactions with the Zora Protocol on Base, supporting token queries, swaps, and transfers via natural language.192MIT
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/fakepixels/base-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server