Skip to main content
Glama

spice-mcp

PyPI version

An MCP server that provides AI agents with direct access to Dune Analytics data. Execute queries, discover schemas and tables, and manage saved queries—all through a clean, type-safe interface optimized for AI workflows.

Discover High-Quality Tables: Leverages Dune Spellbook, Dune's official GitHub repository of curated dbt models, to surface verified, production-ready tables with rich metadata.

Why spice-mcp?

  • Agent-friendly: Designed for AI agents using the Model Context Protocol (MCP)

  • High-Quality Discovery: Leverages Dune Spellbook's GitHub repository to find verified, production-ready tables with rich metadata

  • Efficient: Polars-first pipeline keeps data lazy until needed, reducing memory usage

  • Discovery: Built-in tools to explore Dune's extensive blockchain datasets from both Dune API and Spellbook

  • Type-safe: Fully typed parameters and responses with FastMCP

  • Reproducible: Automatic query history logging and SQL artifact storage

Related MCP server: dune-mcp

Quick Start

  1. Install:

    uv pip install spice-mcp
  2. Set API key (choose one method):

    • Option A: Create a .env file in your project root:

      echo "DUNE_API_KEY=your-api-key-here" > .env
    • Option B: Export in your shell:

      export DUNE_API_KEY=your-api-key-here
  3. Use with Cursor IDE: Add to Cursor Settings → MCP Servers:

    {
      "name": "spice-mcp",
      "command": "spice-mcp",
      "env": {
        "DUNE_API_KEY": "your-dune-api-key-here"
      }
    }

Note: Query history logging is enabled by default. Logs are saved to logs/queries.jsonl (or ~/.spice_mcp/logs/queries.jsonl if not in a project directory). To customize paths, set SPICE_QUERY_HISTORY and SPICE_ARTIFACT_ROOT environment variables. Admin operations (create/update/fork/archive/unarchive) are logged with action_type="admin_action" and include query_id for traceability.

Core Tools

Tool

Description

Key Parameters

dune_query

Execute queries by ID, URL, or raw SQL

query (str), parameters (object), limit (int), offset (int), format (preview|raw|metadata|poll), refresh (bool), timeout_seconds (float)

dune_query_info

Get metadata for a saved query

query (str - ID or URL)

dune_discover

Unified discovery across Dune API and Spellbook (returns verified tables only). Leverages Dune Spellbook GitHub repository for high-quality, curated tables.

keyword (str|list), schema (str), limit (int), source (dune|spellbook|both), include_columns (bool)

dune_describe_table

Get column metadata for a table

schema (str), table (str)

dune_health_check

Verify API key and configuration

(no parameters)

dune_query_create

Create a new saved query

name (str), query_sql (str), description (str), tags (list), parameters (list)

dune_query_update

Update an existing saved query

query_id (int), name (str), query_sql (str), description (str), tags (list), parameters (list)

dune_query_fork

Fork an existing saved query

source_query_id (int), name (str)

dune_query_archive

Archive a saved query

query_id (int)

dune_query_unarchive

Unarchive a saved query

query_id (int)

Resources

  • spice:history/tail/{n} — View last N lines of query history (1-1000)

  • spice:artifact/{sha} — Retrieve stored SQL by SHA-256 hash

What is Dune?

Dune is a crypto data platform providing curated blockchain datasets and a public API. It aggregates on-chain data from Ethereum, Solana, Polygon, and other chains into queryable SQL tables. See the Dune Docs for more information.

What is Dune Spellbook?

Dune Spellbook is Dune's official GitHub repository containing thousands of curated dbt models. These models represent high-quality, production-ready tables that are:

  • Verified: All tables are verified to exist in Dune before being returned

  • Well-documented: Rich metadata including column descriptions and types

  • Maintained: Regularly updated by the Dune community and team

  • Production-ready: Used by analysts and dashboards across the ecosystem

spice-mcp automatically clones and parses the Spellbook repository to discover these high-quality tables, parsing dbt config blocks to resolve actual Dune table names and verifying their existence before returning them to you.

Installation

From PyPI (recommended):

uv pip install spice-mcp

From source:

git clone https://github.com/Evan-Kim2028/spice-mcp.git
cd spice-mcp
uv sync
uv pip install -e .

Requirements: Python 3.13+

Documentation

License

See LICENSE file for details.

Available Tools

10 tools
dune_describe_tableDescribe TableC

Describe columns for a schema.table on Dune.

Inputs: schema (required), table (required). Returns: object

dune_discoverDiscover TablesA

Unified tool to discover tables/models from Dune API and/or Spellbook repository. Search by keyword(s) or list tables in a schema.

Inputs: keyword, schema, limit, source, +1 more. Returns: object

dune_health_checkHealth CheckA

Validate Dune API key presence and logging setup.

Inputs: no named parameters. Returns: object

dune_queryRun Dune QueryC

Execute Dune queries and return agent-optimized preview.

Inputs: query (required), parameters, refresh, max_age, +8 more. Returns: object

dune_query_archiveArchive Saved QueryC

Archive a saved Dune query.

Inputs: query_id (required). Returns: object

dune_query_createCreate Saved QueryB

Create a new saved Dune query (name + SQL). Requires SPICE_DUNE_ALLOW_SAVES=true.

Inputs: name (required), query_sql (required), description, tags, +1 more. Returns: object

dune_query_forkFork Saved QueryC

Fork an existing saved Dune query. Requires SPICE_DUNE_ALLOW_SAVES=true.

Inputs: source_query_id (required), name. Returns: object

dune_query_infoQuery InfoC

Fetch Dune query metadata (name, parameters, tags, SQL).

Inputs: query (required). Returns: object

dune_query_unarchiveUnarchive Saved QueryC

Unarchive a saved Dune query.

Inputs: query_id (required). Returns: object

dune_query_updateUpdate Saved QueryC

Update fields of a saved Dune query (name/SQL/description/tags/parameters). Requires SPICE_DUNE_ALLOW_SAVES=true.

Inputs: query_id (required), name, query_sql, description, +2 more. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 10 tools

    Disambiguation5/5

    Each tool has a clear, distinct purpose: describe table columns, discover tables/models, health check, execute query, and manage saved queries (create, info, update, archive, unarchive, fork). No overlap.

    Naming Consistency5/5

    All tools follow the 'dune_' prefix with a verb_noun pattern (e.g., dune_describe_table, dune_query_create). The naming is uniform and predictable.

    Tool Count5/5

    10 tools is well-scoped for a Dune analytics server, covering core table inspection, query execution, and saved query lifecycle without unnecessary bloat.

    Completeness4/5

    Covers essential operations: describing/discovering tables, health, query execution, and saved query CRUD (except delete). Missing a list saved queries tool and explicit deletion, but core workflows are supported.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to query and analyze blockchain data from Dune Analytics, supporting execution of saved queries, ad-hoc DuneSQL queries, and access to cached results with parameter support.
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Dune MCP Server connects your AI assistant to Dune Analytics, the leading platform for blockchain data. Execute SQL queries across Ethereum, Solana, and 20+ chains to analyze DEX trades, token transfers, NFT sales, and wallet activity. Manage saved queries, upload custom datasets, and access curate
      19
      MIT