create_query
Save new SQL queries to Dune Analytics for blockchain data analysis. Returns Query ID for tracking and reuse.
Instructions
Save a new query to Dune. Returns Query ID. (Requires Paid Plan)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| sql | Yes | ||
| description | No |
Implementation Reference
- src/main.py:154-163 (handler)The main handler function for the MCP 'create_query' tool. It takes name, sql, description; calls dune_service.create_query; and returns success message with URL or error.@mcp.tool() def create_query(name: str, sql: str, description: str = "") -> str: """ Save a new query to Dune. Returns Query ID. (Requires Paid Plan) """ try: query_id = dune_service.create_query(name, sql, description) return f"Successfully created Query {query_id}: '{name}'\nURL: https://dune.com/queries/{query_id}" except Exception as e: return f"Error creating query: {str(e)}"
- src/main.py:154-154 (registration)The @mcp.tool() decorator registers the create_query function as an MCP tool, using the function name as the tool name.@mcp.tool()
- src/services/dune_client.py:386-397 (helper)The DuneService.create_query helper method that interacts with the DuneClient SDK to create the query and return its ID. Note: ignores description param.def create_query(self, name: str, sql: str, description: str = "") -> int: """ Creates a new query in Dune. Returns the new Query ID. """ try: # client.create_query returns a Query object, we need its ID # Removed 'description' arg as it's not supported in current SDK version query = self.client.create_query(name=name, query_sql=sql) return query.base.query_id except Exception as e: logger.error(f"Error creating query '{name}': {e}") raise