execute_card
Execute a saved Metabase card by providing its ID and optional parameters to retrieve query results.
Instructions
Execute a saved Metabase question/card and retrieve results.
Args: card_id: The ID of the card to execute. parameters: Optional parameters for the card execution.
Returns: Card execution results.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| card_id | Yes | ||
| parameters | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- server.py:447-479 (handler)The execute_card tool handler — executes a saved Metabase question/card by ID via POST /api/card/{card_id}/query. Accepts optional parameters dict.
@mcp.tool async def execute_card( card_id: int, ctx: Context, parameters: dict[str, Any] | None = None ) -> dict[str, Any]: """ Execute a saved Metabase question/card and retrieve results. Args: card_id: The ID of the card to execute. parameters: Optional parameters for the card execution. Returns: Card execution results. """ try: await ctx.info(f"Executing card {card_id}") payload = {} if parameters: payload["parameters"] = parameters await ctx.debug(f"Card parameters: {parameters}") result = await metabase_client.request("POST", f"/card/{card_id}/query", json=payload) row_count = len(result.get("data", {}).get("rows", [])) await ctx.info(f"Card {card_id} executed successfully, returned {row_count} rows") return result except Exception as e: error_msg = f"Error executing card {card_id}: {e}" await ctx.error(error_msg) raise ToolError(error_msg) from e - server.py:447-448 (registration)Registration via the @mcp.tool decorator on the execute_card function. This is how the tool is registered with the FastMCP server.
@mcp.tool async def execute_card(