Provides access to Dune Analytics blockchain data, enabling execution of DuneSQL queries, retrieval of cached results, and management of saved queries for analyzing Ethereum transactions and other blockchain data.
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., "@Dune Analytics MCP Servershow me the latest Ethereum transaction count for the past week"
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.
mcp-server-dune
A Model Context Protocol (MCP) server for integrating AI agents with Dune Analytics blockchain data.
Requirements
Python 3.11+
Dune Analytics API key
Features
Tools
run_query - Execute saved Dune queries and wait for results
submit_query - Submit queries asynchronously for long-running jobs
get_execution_status - Check the status of running queries
get_execution_results - Retrieve results from completed executions
run_sql - Execute raw ad-hoc DuneSQL queries
create_query - Save new queries to your Dune library
update_query - Modify existing queries
archive_query - Archive queries from active workspace
Resources (dune:// scheme)
dune://query/{id}/latest- Cached results (zero credits)dune://query/{id}/sql- Query SQL definitiondune://execution/{id}/status- Execution job status
Prompts
generate_dune_sql - Guide for writing valid DuneSQL
analyze_result - Guide for interpreting query results
Installation
# Install from source
pip install -e .
# Or install dependencies directly
pip install fastmcp>=2.0.0 dune-client>=1.10.0 pydantic>=2.0.0Configuration
Set your Dune API key as an environment variable:
# Linux/macOS
export DUNE_API_KEY="your-api-key-here"
# Windows Command Prompt
set DUNE_API_KEY=your-api-key-here
# Windows PowerShell
$env:DUNE_API_KEY="your-api-key-here"Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"dune": {
"command": "python",
"args": ["-m", "mcp_server_dune"],
"env": {
"DUNE_API_KEY": "your-api-key-here"
}
}
}
}Direct Execution
# Run the server
python -m mcp_server_duneUsage Examples
Execute a Saved Query
# Run query ID 123456 with parameters
run_query(
query_id=123456,
params={"token_address": "0x..."},
performance="medium",
limit=50
)Execute Ad-Hoc SQL
# Run raw DuneSQL
run_sql(
sql="""
SELECT DATE_TRUNC('day', block_time) as day,
COUNT(*) as tx_count
FROM ethereum.transactions
WHERE block_time > NOW() - INTERVAL '7' DAY
GROUP BY 1
ORDER BY 1
LIMIT 100
""",
performance="medium"
)Read Cached Results (Zero Credits)
Access the resource dune://query/123456/latest to get cached results without consuming execution credits.
DuneSQL Tips
Addresses are bytearrays: use
0x...literals directlyDate intervals:
NOW() - INTERVAL '7' DAYPrefer decoded tables:
uniswap_v3_ethereum.Factory_evt_PoolCreatedAlways include
LIMITto prevent timeouts
Development
# Clone the repository
git clone https://github.com/your-org/mcp-server-dune
cd mcp-server-dune
# Create virtual environment
python -m venv venv
venv\Scripts\activate # Windows
# source venv/bin/activate # Linux/macOS
# Install in development mode
pip install -e ".[dev]"
# Run tests
pytest
# Run the server locally
python -m mcp_server_duneLicense
MIT