arbitrum-mcp-tools
Version:
A comprehensive collection of Model Context Protocol (MCP) tools for interacting with the Arbitrum blockchain. Enables AI assistants like Claude, Cursor, Windsurf, VS Code, Gemini CLI, and OpenAI Codex to perform blockchain operations including account an
247 lines (178 loc) β’ 6.96 kB
Markdown
# Arbitrum MCP Tools ππ¦Ύ
This project provides a set of tools for interacting with the Arbitrum blockchain via the Model Context Protocol (MCP), enabling AI assistants like Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Gemini CLI, Antigravity, and OpenAI Codex to perform blockchain operations.
## Table of Contents π
- [Quick Start](#quick-start)
- [Prerequisites](#prerequisites)
- [Supported Platforms](#supported-platforms)
- [Environment Variables](#environment-variables)
- [CLI Commands](#cli-commands)
- [Available Tools](#available-tools)
- [Example Usage](#example-usage)
- [Development Guide](#development-guide)
## Quick Start π
Install Arbitrum MCP Tools to your AI assistant with a single command:
```bash
npx arbitrum-mcp-tools install
```
This launches an interactive wizard that guides you through the setup process.
## Prerequisites π
- Node.js v20.x or higher
- npm (comes with Node.js)
- Alchemy API Key (sign up at https://www.alchemy.com/)
- Arbiscan API Key (optional, sign up at https://arbiscan.io) - Required for the `decodeTransactionCalldata` tool
## Supported Platforms π₯οΈ
Arbitrum MCP Tools supports **8 platforms** across macOS, Windows, and Linux:
| Platform | Format | Status |
|----------|--------|--------|
| Claude Desktop | JSON | β
Supported |
| Claude Code | JSON | β
Supported |
| Cursor | JSON | β
Supported |
| Windsurf | JSON | β
Supported |
| VS Code | JSON | β
Supported |
| Gemini CLI | JSON | β
Supported |
| Antigravity | JSON | β
Supported |
| OpenAI Codex | TOML | β
Supported |
## Environment Variables π
Set these environment variables in your shell profile (`~/.zshrc` or `~/.bashrc`):
```bash
# Required
export ALCHEMY_API_KEY="your_alchemy_api_key_here"
# Optional (for transaction decoding)
export ARBISCAN_API_KEY="your_arbiscan_api_key_here"
# Stylus Contract Authentication (choose one method)
# Option 1: Direct private key
export STYLUS_PRIVATE_KEY="your_private_key_here"
# Option 2: Path to private key file
export STYLUS_PRIVATE_KEY_PATH="/path/to/your/private/key/file"
# Option 3: Path to keystore file (most secure)
export STYLUS_KEYSTORE_PATH="/path/to/your/keystore/file"
```
Then reload your shell: `source ~/.zshrc`
### Windows (PowerShell)
```powershell
[Environment]::SetEnvironmentVariable("ALCHEMY_API_KEY", "your_key_here", "User")
```
## CLI Commands π οΈ
### install
Interactive installation wizard for setting up MCP tools.
```bash
npx arbitrum-mcp-tools install
```
### uninstall
Remove MCP tools from selected platforms.
```bash
npx arbitrum-mcp-tools uninstall
```
### list
Display all supported platforms and their installation status.
```bash
npx arbitrum-mcp-tools list
```
### serve
Start the MCP server (used internally by MCP clients).
```bash
npx arbitrum-mcp-tools serve
```
### --help / --version
```bash
npx arbitrum-mcp-tools --help
npx arbitrum-mcp-tools --version
```
## Available Tools π§°
The tools are organized into several categories:
1. **Account Analysis** - Tools for checking balances, transactions, and tokens
2. **Chain Data** - Tools for retrieving blockchain data like blocks and transactions
3. **Contract Interaction** - Tools for interacting with smart contracts
4. **Cross-Chain** - Tools for cross-chain operations
5. **Development** - Tools for developers (simulation, gas estimation)
6. **Batch Operations** - Tools for performing operations on multiple addresses
7. **Stylus** - Tools for Stylus development and deployment
For a detailed list of all tools, see the [Feature Matrix](./FEATURES.md).
## Example Usage π
When using any supported AI assistant, you can simply ask for blockchain data using natural language:
- "What's the ETH balance of 0x123...?"
- "Check NFTs owned by 0xabc..."
- "How much gas is needed to transfer 1 ETH?"
- "Show me the latest block on Arbitrum"
- "Decode this transaction input data: 0x..."
- "Deploy my Stylus contract to Arbitrum Sepolia"
## Development Guide ποΈ
### Project Structure ποΈ
```
src/
βββ index.ts # Entry point (runs server)
βββ server.ts # MCP server setup and Alchemy config
βββ cli/ # CLI installer
β βββ index.ts # CLI entry point
β βββ commands/ # CLI commands (install, uninstall, list, serve)
β βββ clients/ # Platform config generators
β βββ utils/ # CLI utilities
βββ tools/ # All tools organized by category
β βββ common.ts # Shared utilities and configs
β βββ index.ts # Tool registration
β βββ accountAnalysis/ # Account analysis tools
β βββ chainData/ # Chain data tools
β βββ contractInteraction/# Contract interaction tools
β βββ crossChain/ # Cross-chain tools
β βββ development/ # Development tools
β βββ batchOperations/ # Batch operation tools
β βββ stylus/ # Stylus development tools
```
### Adding New Tools π οΈ
**Arbitrum MCP Tools uses an active registration pattern** β every tool is registered at runtime with `server.tool(...)`. To add a new tool:
1. **Add the tool to its category's `registerXTools` function**
```typescript
// src/tools/myCategory/index.ts
import { z } from "zod";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
export function registerMyCategoryTools(server: McpServer) {
server.tool(
"myNewTool",
"Short description of what it does",
{
param1: z.string().describe("Example parameter"),
},
async ({ param1 }) => {
return {
content: [{ type: "text", text: `You sent ${param1}` }],
};
}
);
}
```
2. **Hook the category into the global registry**
```typescript
// src/tools/index.ts
import { registerMyCategoryTools } from "./myCategory/index.js";
export function registerAllTools(server: McpServer) {
// β¦existing categories
registerMyCategoryTools(server);
}
```
### Testing Your Tools π§ͺ
1. Build the project:
```bash
npm run build
```
2. Test the MCP server directly:
```bash
node build/src/index.js
```
3. For testing with an AI assistant, temporarily modify your platform's config to point to the local build:
```json
{
"mcpServers": {
"arbitrum": {
"command": "node",
"args": ["/path/to/arbitrum-mcp-tools/build/src/index.js"]
}
}
}
```
## Tool Documentation Links π
- **Alchemy SDK**: [Alchemy SDK Quickstart](https://www.alchemy.com/docs/reference/alchemy-sdk-quickstart)
- **Arbitrum Stylus**: [Stylus CLI Usage](https://docs.arbitrum.io/stylus/using-cli#using-cargo-stylus)
## Contributing π
Contributions are welcome! Please feel free to submit a Pull Request.
## License π
This project is licensed under the MIT License - see the LICENSE file for details.