NestDaddy

Cost Guard MCP

io.github.mcpsmiths/cost-guard-mcp · v0.6.0

Pre-flight query cost and result-size guardrails for AI agents on BigQuery, Snowflake, Databricks

Connect Runs on your machine

Terminal
claude mcp add cost-guard-mcp -e GOOGLE_APPLICATION_CREDENTIALS=<GOOGLE_APPLICATION_CREDENTIALS> -e SNOWFLAKE_ACCOUNT=<SNOWFLAKE_ACCOUNT> -e SNOWFLAKE_USER=<SNOWFLAKE_USER> -e SNOWFLAKE_ROLE=<SNOWFLAKE_ROLE> -e SNOWFLAKE_SECONDARY_ROLES=<SNOWFLAKE_SECONDARY_ROLES> -e SNOWFLAKE_PRIVATE_KEY_PATH=<SNOWFLAKE_PRIVATE_KEY_PATH> -e SNOWFLAKE_PRIVATE_KEY_PASSPHRASE=<SNOWFLAKE_PRIVATE_KEY_PASSPHRASE> -e SNOWFLAKE_PASSWORD=<SNOWFLAKE_PASSWORD> -e SNOWFLAKE_EDITION=<SNOWFLAKE_EDITION> -e DATABRICKS_SERVER_HOSTNAME=<DATABRICKS_SERVER_HOSTNAME> -e DATABRICKS_HTTP_PATH=<DATABRICKS_HTTP_PATH> -e DATABRICKS_TOKEN=<DATABRICKS_TOKEN> -e DATABRICKS_CLIENT_ID=<DATABRICKS_CLIENT_ID> -e DATABRICKS_CLIENT_SECRET=<DATABRICKS_CLIENT_SECRET> -e COST_GUARD_ALLOW_MULTI_STATEMENT_SQL=<COST_GUARD_ALLOW_MULTI_STATEMENT_SQL> -e COST_GUARD_ALLOW_WRITE_STATEMENTS=<COST_GUARD_ALLOW_WRITE_STATEMENTS> -e COST_GUARD_MAX_IN_FLIGHT_QUERIES=<COST_GUARD_MAX_IN_FLIGHT_QUERIES> -e COST_GUARD_DATABRICKS_ALLOW_WAREHOUSE_START=<COST_GUARD_DATABRICKS_ALLOW_WAREHOUSE_START> -e COST_GUARD_SNOWFLAKE_ALLOW_WAREHOUSE_RESUME=<COST_GUARD_SNOWFLAKE_ALLOW_WAREHOUSE_RESUME> -- uvx cost-guard-mcp==0.6.0
claude_desktop_config.json
{
  "mcpServers": {
    "cost-guard-mcp": {
      "command": "uvx",
      "args": [
        "cost-guard-mcp==0.6.0"
      ],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "<GOOGLE_APPLICATION_CREDENTIALS>",
        "SNOWFLAKE_ACCOUNT": "<SNOWFLAKE_ACCOUNT>",
        "SNOWFLAKE_USER": "<SNOWFLAKE_USER>",
        "SNOWFLAKE_ROLE": "<SNOWFLAKE_ROLE>",
        "SNOWFLAKE_SECONDARY_ROLES": "<SNOWFLAKE_SECONDARY_ROLES>",
        "SNOWFLAKE_PRIVATE_KEY_PATH": "<SNOWFLAKE_PRIVATE_KEY_PATH>",
        "SNOWFLAKE_PRIVATE_KEY_PASSPHRASE": "<SNOWFLAKE_PRIVATE_KEY_PASSPHRASE>",
        "SNOWFLAKE_PASSWORD": "<SNOWFLAKE_PASSWORD>",
        "SNOWFLAKE_EDITION": "<SNOWFLAKE_EDITION>",
        "DATABRICKS_SERVER_HOSTNAME": "<DATABRICKS_SERVER_HOSTNAME>",
        "DATABRICKS_HTTP_PATH": "<DATABRICKS_HTTP_PATH>",
        "DATABRICKS_TOKEN": "<DATABRICKS_TOKEN>",
        "DATABRICKS_CLIENT_ID": "<DATABRICKS_CLIENT_ID>",
        "DATABRICKS_CLIENT_SECRET": "<DATABRICKS_CLIENT_SECRET>",
        "COST_GUARD_ALLOW_MULTI_STATEMENT_SQL": "<COST_GUARD_ALLOW_MULTI_STATEMENT_SQL>",
        "COST_GUARD_ALLOW_WRITE_STATEMENTS": "<COST_GUARD_ALLOW_WRITE_STATEMENTS>",
        "COST_GUARD_MAX_IN_FLIGHT_QUERIES": "<COST_GUARD_MAX_IN_FLIGHT_QUERIES>",
        "COST_GUARD_DATABRICKS_ALLOW_WAREHOUSE_START": "<COST_GUARD_DATABRICKS_ALLOW_WAREHOUSE_START>",
        "COST_GUARD_SNOWFLAKE_ALLOW_WAREHOUSE_RESUME": "<COST_GUARD_SNOWFLAKE_ALLOW_WAREHOUSE_RESUME>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "cost-guard-mcp": {
      "command": "uvx",
      "args": [
        "cost-guard-mcp==0.6.0"
      ],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "<GOOGLE_APPLICATION_CREDENTIALS>",
        "SNOWFLAKE_ACCOUNT": "<SNOWFLAKE_ACCOUNT>",
        "SNOWFLAKE_USER": "<SNOWFLAKE_USER>",
        "SNOWFLAKE_ROLE": "<SNOWFLAKE_ROLE>",
        "SNOWFLAKE_SECONDARY_ROLES": "<SNOWFLAKE_SECONDARY_ROLES>",
        "SNOWFLAKE_PRIVATE_KEY_PATH": "<SNOWFLAKE_PRIVATE_KEY_PATH>",
        "SNOWFLAKE_PRIVATE_KEY_PASSPHRASE": "<SNOWFLAKE_PRIVATE_KEY_PASSPHRASE>",
        "SNOWFLAKE_PASSWORD": "<SNOWFLAKE_PASSWORD>",
        "SNOWFLAKE_EDITION": "<SNOWFLAKE_EDITION>",
        "DATABRICKS_SERVER_HOSTNAME": "<DATABRICKS_SERVER_HOSTNAME>",
        "DATABRICKS_HTTP_PATH": "<DATABRICKS_HTTP_PATH>",
        "DATABRICKS_TOKEN": "<DATABRICKS_TOKEN>",
        "DATABRICKS_CLIENT_ID": "<DATABRICKS_CLIENT_ID>",
        "DATABRICKS_CLIENT_SECRET": "<DATABRICKS_CLIENT_SECRET>",
        "COST_GUARD_ALLOW_MULTI_STATEMENT_SQL": "<COST_GUARD_ALLOW_MULTI_STATEMENT_SQL>",
        "COST_GUARD_ALLOW_WRITE_STATEMENTS": "<COST_GUARD_ALLOW_WRITE_STATEMENTS>",
        "COST_GUARD_MAX_IN_FLIGHT_QUERIES": "<COST_GUARD_MAX_IN_FLIGHT_QUERIES>",
        "COST_GUARD_DATABRICKS_ALLOW_WAREHOUSE_START": "<COST_GUARD_DATABRICKS_ALLOW_WAREHOUSE_START>",
        "COST_GUARD_SNOWFLAKE_ALLOW_WAREHOUSE_RESUME": "<COST_GUARD_SNOWFLAKE_ALLOW_WAREHOUSE_RESUME>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "cost-guard-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "cost-guard-mcp==0.6.0"
      ],
      "env": {
        "GOOGLE_APPLICATION_CREDENTIALS": "<GOOGLE_APPLICATION_CREDENTIALS>",
        "SNOWFLAKE_ACCOUNT": "<SNOWFLAKE_ACCOUNT>",
        "SNOWFLAKE_USER": "<SNOWFLAKE_USER>",
        "SNOWFLAKE_ROLE": "<SNOWFLAKE_ROLE>",
        "SNOWFLAKE_SECONDARY_ROLES": "<SNOWFLAKE_SECONDARY_ROLES>",
        "SNOWFLAKE_PRIVATE_KEY_PATH": "<SNOWFLAKE_PRIVATE_KEY_PATH>",
        "SNOWFLAKE_PRIVATE_KEY_PASSPHRASE": "<SNOWFLAKE_PRIVATE_KEY_PASSPHRASE>",
        "SNOWFLAKE_PASSWORD": "<SNOWFLAKE_PASSWORD>",
        "SNOWFLAKE_EDITION": "<SNOWFLAKE_EDITION>",
        "DATABRICKS_SERVER_HOSTNAME": "<DATABRICKS_SERVER_HOSTNAME>",
        "DATABRICKS_HTTP_PATH": "<DATABRICKS_HTTP_PATH>",
        "DATABRICKS_TOKEN": "<DATABRICKS_TOKEN>",
        "DATABRICKS_CLIENT_ID": "<DATABRICKS_CLIENT_ID>",
        "DATABRICKS_CLIENT_SECRET": "<DATABRICKS_CLIENT_SECRET>",
        "COST_GUARD_ALLOW_MULTI_STATEMENT_SQL": "<COST_GUARD_ALLOW_MULTI_STATEMENT_SQL>",
        "COST_GUARD_ALLOW_WRITE_STATEMENTS": "<COST_GUARD_ALLOW_WRITE_STATEMENTS>",
        "COST_GUARD_MAX_IN_FLIGHT_QUERIES": "<COST_GUARD_MAX_IN_FLIGHT_QUERIES>",
        "COST_GUARD_DATABRICKS_ALLOW_WAREHOUSE_START": "<COST_GUARD_DATABRICKS_ALLOW_WAREHOUSE_START>",
        "COST_GUARD_SNOWFLAKE_ALLOW_WAREHOUSE_RESUME": "<COST_GUARD_SNOWFLAKE_ALLOW_WAREHOUSE_RESUME>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
GOOGLE_APPLICATION_CREDENTIALS
Optional, secret
BigQuery: path to a service-account key file (Application Default Credentials). Required to use the bigquery engine.
SNOWFLAKE_ACCOUNT
Optional
Snowflake: account identifier. Required to use the snowflake engine.
SNOWFLAKE_USER
Optional
Snowflake: username. Required to use the snowflake engine.
SNOWFLAKE_ROLE
Optional
Snowflake: role to assume. Required to use the snowflake engine; has no default and must never be ACCOUNTADMIN (ACCOUNTADMIN, SECURITYADMIN and ORGADMIN are rejected before any Snowflake connection is opened - the check runs when the Snowflake configuration is first loaded, on the first Snowflake t…
SNOWFLAKE_SECONDARY_ROLES
Optional
Snowflake: secondary roles activated at login. NONE (default) means only SNOWFLAKE_ROLE is active in the session; ALL is the explicit opt-out that activates every role granted to SNOWFLAKE_USER.
SNOWFLAKE_PRIVATE_KEY_PATH
Optional, secret
Snowflake: path to an RSA private key file for key-pair auth (preferred over SNOWFLAKE_PASSWORD). Either this or SNOWFLAKE_PASSWORD is required to use the snowflake engine.
SNOWFLAKE_PRIVATE_KEY_PASSPHRASE
Optional, secret
Snowflake: passphrase for an encrypted SNOWFLAKE_PRIVATE_KEY_PATH key file, if the key is encrypted.
SNOWFLAKE_PASSWORD
Optional, secret
Snowflake: password (discouraged; prefer SNOWFLAKE_PRIVATE_KEY_PATH). Either this or SNOWFLAKE_PRIVATE_KEY_PATH is required to use the snowflake engine.
SNOWFLAKE_EDITION
Optional
Snowflake: account edition that sets the USD/credit price of estimates - standard (default), enterprise, business_critical or vps. The per-call edition argument can only raise it.
DATABRICKS_SERVER_HOSTNAME
Optional
Databricks: SQL warehouse server hostname (e.g. my-workspace.cloud.databricks.com, no scheme, no trailing slash). Required to use the databricks engine.
DATABRICKS_HTTP_PATH
Optional
Databricks: SQL warehouse HTTP path (from the warehouse's Connection Details tab, e.g. /sql/1.0/warehouses/<warehouse-id>). Required to use the databricks engine.
DATABRICKS_TOKEN
Optional, secret
Databricks: personal access token (simplest auth option). Either this or DATABRICKS_CLIENT_ID + DATABRICKS_CLIENT_SECRET is required to use the databricks engine.
DATABRICKS_CLIENT_ID
Optional
Databricks: OAuth machine-to-machine service-principal client ID (preferred for automated use). Requires DATABRICKS_CLIENT_SECRET as well.
DATABRICKS_CLIENT_SECRET
Optional, secret
Databricks: OAuth machine-to-machine service-principal client secret. Requires DATABRICKS_CLIENT_ID as well.
COST_GUARD_ALLOW_MULTI_STATEMENT_SQL
Optional
Set to 1 to let estimate_query_cost/run_query_bounded accept text containing more than one SQL statement. Off by default: the cost cap is only known to cover the single statement the dry run/EXPLAIN priced. Skips only this server's scanner: Snowflake still rejects multi-statement text (sessions are…
COST_GUARD_ALLOW_WRITE_STATEMENTS
Optional
Set to 1 (exactly that value) to let estimate_query_cost/run_query_bounded accept statements that are not reads. Off by default: only text whose first keyword (after comments and opening parentheses) is SELECT, WITH, VALUES, SHOW, DESCRIBE, DESC or EXPLAIN is estimated or run - a WITH must be follo…
COST_GUARD_MAX_IN_FLIGHT_QUERIES
Optional
Maximum number of run_query_bounded calls allowed in flight at once (positive integer, default 8). A cancelled call keeps its slot until its warehouse query completes or the 120 s watchdog fires; a call over the cap fails with a tool error naming this variable before any warehouse connection is ope…
COST_GUARD_DATABRICKS_ALLOW_WAREHOUSE_START
Optional
Set to true (exactly that value) to let the read-only Databricks tools (check_credentials, estimate_query_cost) open a session on a SQL warehouse that is not RUNNING, which starts the warehouse and bills compute until it auto-stops. Off by default: the server first reads the warehouse's state throu…
COST_GUARD_SNOWFLAKE_ALLOW_WAREHOUSE_RESUME
Optional
Set to true (exactly that value) to let the read-only Snowflake tools run SELECT CURRENT_REGION(), the INFORMATION_SCHEMA.QUERY_HISTORY read and check_credentials' session-context SELECT on a warehouse that is not STARTED, which can resume a suspended AUTO_RESUME warehouse and bill compute until it…

Details

Package[email protected] (PYPI, stdio)
First published19 Oct 2026
Last updated19 Oct 2026
Registry nameio.github.mcpsmiths/cost-guard-mcp

More databases servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.