Arbitrum MCP Server
# Arbitrum MCP Server
[](https://github.com/dewanshparashar/arbitrum-mcp/actions)
[](https://opensource.org/licenses/MIT)
[](https://hub.docker.com)
[](https://www.typescriptlang.org/)
A Model Context Protocol (MCP) server for interfacing with Arbitrum Nitro nodes and chains in natural language. Monitor chain health, batch posting, assertions, and gas prices across all Arbitrum networks including core chains (Arbitrum One, Nova) and Orbit chains.
## Demo

*Monitor Arbitrum chains with natural language queries through any MCP-compatible client*
## Features
### Core Monitoring Tools
- **Comprehensive Chain Status** - Complete health overview for any Arbitrum chain
- **Batch Posting Monitoring** - Track sequencer batch delivery and backlog
- **Assertion Monitoring** - Monitor NodeCreated vs NodeConfirmed events
- **Gas Price Monitoring** - Track current gas prices and detect spikes
- **ArbOS Version Detection** - Get current ArbOS version for any chain
### Chain Support
- **Core Arbitrum Chains** - Arbitrum One, Arbitrum Nova
- **Orbit Chains** - All public Orbit chains (Xai, Superposition, etc.)
- **Auto-Resolution** - Contract addresses resolved automatically from chain names
### Arbitrum Node APIs
- Health checks and sync status
- Transaction tracing (arbtrace\_\*)
- Debug and validation APIs
- Maintenance operations
- Timeboost express lanes
## Usage Examples
**"What is the current status of Xai?"**
```
comprehensive_chain_status --chainName "Xai"
```
**"Are batches being posted for Arbitrum One?"**
```
batch_posting_status --chainName "Arbitrum One"
```
**"Check gas prices on Nova"**
```
gas_status --chainName "Nova"
```
### Available Tools
#### Monitoring Tools
- `comprehensive_chain_status` - Complete chain health overview
- `batch_posting_status` - Batch posting monitoring
- `assertion_status` - Assertion creation/confirmation tracking
- `gas_status` - Current gas price information
#### Chain Information
- `list_chains` - Show all available Arbitrum chains
- `search_chains` - Find chains by name or ID
- `chain_info` - Get detailed chain information
- `arbos_version` - Get ArbOS version for any chain
#### Node Operations
- `node_health` - Check node health status
- `sync_status` - Get synchronization status
- `latest_block` - Get latest block information
#### Account Operations
- `get_balance` / `get_balance_ether` - Check account balances
- `get_transaction` / `get_transaction_receipt` - Transaction details
- `is_contract` - Check if address is a contract
## Key Benefits
- **Comprehensive Monitoring** - Complete chain health overview in one query
- **Multi-Chain Support** - Consistent interface across all Arbitrum chains
- **Natural Language Interface** - Query blockchain data using plain English
- **Real-Time Data** - Live blockchain data with automatic chain discovery
- **Troubleshooting Ready** - Quick health checks for issue diagnosis
- **Gas & Performance Tracking** - Monitor network congestion and costs
## Setup & Installation
### Docker (Recommended)
The easiest way to run the MCP server with maximum client compatibility:
```bash
# Run directly from Docker Hub (no build required!)
docker run -i --rm dewanshparashar/arbitrum-mcp
```
### Direct Node.js
```bash
# Install dependencies
npm install
# Build
npm run build
# Run
npm start
```
### MCP Client Configuration
#### Claude Desktop
Add to your Claude Desktop configuration:
```json
{
"mcpServers": {
"arbitrum-mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "dewanshparashar/arbitrum-mcp"]
}
}
}
```
#### Cline/Claude Code
```json
{
"mcpServers": {
"arbitrum-mcp": {
"command": "docker",
"args": ["run", "-i", "--rm", "dewanshparashar/arbitrum-mcp"]
}
}
}
```
## Development
```bash
# Install dependencies
npm install
# Build
npm run build
# Run tests
npm test
# Development mode with watch
npm run dev
```
## Docker
See [DOCKER.md](DOCKER.md) for detailed Docker setup instructions.
**⚠️ Important:** When using Docker containers to connect to local testnodes, use `http://host.docker.internal:8547` instead of `http://127.0.0.1:8547` for the RPC URL.
## Technology Stack
- **TypeScript** - Type-safe development
- **Viem** - Ethereum client for blockchain interactions
- **@arbitrum/sdk** - Official Arbitrum SDK for core chain data
- **MCP SDK** - Model Context Protocol implementation
- **Docker** - Containerized deployment
## Contributing
1. Fork the repository
2. Create a feature branch
3. Add tests for new functionality
4. Submit a pull request
## License
MIT License - see LICENSE file for details.
TDQS
Scored across 38 tools
The tools are organized into clear functional groups (e.g., arbdebug_, arbtrace_, chain management, RPC utilities), which helps with differentiation, but there is significant overlap within groups, such as multiple arbtrace_ tools for tracing transactions and blocks with subtle distinctions that could confuse agents. Some tools like 'assertion_status' and 'batch_posting_status' have similar monitoring purposes, adding to potential ambiguity.
Most tools follow a consistent snake_case naming convention with descriptive prefixes (e.g., arb_, arbtrace_, get_, set_), but there are minor deviations like 'arbos_version' lacking an underscore and mixed verb styles (e.g., 'clear_rpc_url' vs. 'set_rpc_url' vs. 'get_rpc_url' are consistent, but others like 'timeboost_sendExpressLaneTransaction' use camelCase inconsistently). Overall, the naming is predictable but not perfectly uniform.
With 38 tools, the count is excessive for a single server, likely overwhelming for agents and leading to confusion. While the domain (Arbitrum chain management and debugging) is broad, the tools could be consolidated (e.g., multiple tracing tools) to reduce redundancy. This high number feels heavy and unoptimized for typical agent workflows.
The tool set provides comprehensive coverage for the Arbitrum domain, including chain information, debugging, tracing, monitoring, RPC management, and transaction handling. It supports CRUD-like operations (e.g., get/set RPC URLs, retrieve balances/transactions) and lifecycle actions (e.g., trigger maintenance, submit transactions), with no obvious gaps for the stated purpose of managing and querying Arbitrum chains.