warehouse-mcp
A production-ready, read-only MCP server for data warehouses including Postgres, Oracle, Snowflake, BigQuery, Redshift, DuckDB, and MotherDuck. It features five-tier role-based access, optional warehouse-role impersonation for native RLS/CLS, JSONL audit logging, optional PII masking, and a semantic-metadata layer. Tools allow executing SELECT queries, browsing catalogs, profiling columns, and looking up business glossary terms.
Package and access
Local package with source-attributed installation metadata. Koskamo does not execute packages during review.
What you can do with it
- Execute read-only SQL queries across multiple warehouse dialects
- Browse database schemas, tables, and column metadata
- Profile columns and sample data for analytics
- Lookup business glossary terms and table documentation
Source and maintenance
- Maintenance checked
Packages and installation
Source-provided package data. Koskamo has not executed or live-probed this package.
warehouse-mcp 0.4.2
{
"version": "0.4.2",
"transport": "stdio",
"identifier": "warehouse-mcp",
"registryType": "npm",
"runtimeArguments": [
{
"type": "positional",
"value": "start",
"isRequired": true,
"description": "Boots the MCP server. Use 'init' for interactive setup or 'doctor' to diagnose configuration."
}
],
"environmentVariables": [
{
"name": "MCP_TRANSPORT",
"default": "stdio",
"description": "Set to 'stdio' for desktop AI clients (Claude Desktop, Cursor). Defaults to 'http'."
},
{
"name": "WAREHOUSE_TYPE",
"format": "string",
"choices": [
"postgres",
"oracle",
"redshift",
"snowflake",
"bigquery",
"duckdb"
],
"isRequired": true,
"description": "Which warehouse to connect to. One of: postgres, oracle, redshift, snowflake, bigquery, duckdb. (DuckDB also handles MotherDuck via DUCKDB_PATH=md:<db>.)"
},
{
"name": "MCP_API_KEYS",
"format": "string",
"description": "Comma-separated bearer keys with role and optional warehouse-role impersonation: 'key1:reader,key2:admin', 'key3:reader:set_role=alice'. Leave empty for stdio (OS process boundary is the trust boundary). Required for HTTP."
},
{
"name": "DUCKDB_PATH",
"format": "string",
"description": "DuckDB file path, ':memory:', or 'md:<database>' for MotherDuck. Required when WAREHOUSE_TYPE=duckdb."
},
{
"name": "MOTHERDUCK_TOKEN",
"format": "string",
"description": "MotherDuck service token. Required when DUCKDB_PATH starts with 'md:'."
},
{
"name": "PG_HOST",
"description": "Postgres host. Required when WAREHOUSE_TYPE=postgres. (Use REDSHIFT_HOST for Redshift.)"
},
{
"name": "PG_DATABASE",
"description": "Postgres database name."
},
{
"name": "PG_USER",
"description": "Postgres user."
},
{
"name": "PG_PASSWORD",
"description": "Postgres password."
},
{
"name": "ORACLE_USER",
"description": "Oracle user. Required when WAREHOUSE_TYPE=oracle."
},
{
"name": "ORACLE_PASSWORD",
"description": "Oracle password."
},
{
"name": "ORACLE_CONNECT_STRING",
"description": "Oracle Easy Connect (e.g. host:1521/SERVICE), TNS descriptor, or alias."
},
{
"name": "SNOWFLAKE_ACCOUNT",
"description": "Snowflake account identifier (e.g. xy12345.us-east-1). Required when WAREHOUSE_TYPE=snowflake."
},
{
"name": "SNOWFLAKE_USER",
"description": "Snowflake username."
},
{
"name": "SNOWFLAKE_PRIVATE_KEY_PATH",
"description": "Path to PKCS8 private key (.p8). Snowflake auth is key-pair only; password auth is not supported."
},
{
"name": "BIGQUERY_PROJECT",
"description": "GCP project id. Required when WAREHOUSE_TYPE=bigquery."
},
{
"name": "GOOGLE_APPLICATION_CREDENTIALS",
"description": "Path to BigQuery service-account JSON. Omit on GKE / Cloud Run with workload identity."
},
{
"name": "GUARDRAIL_PII_MASK",
"choices": [
"on",
"off"
],
"default": "off",
"description": "Set to 'on' to enable role-aware PII masking on result rows (emails, SSNs, phones, IPs, Luhn-validated CCs). Off by default."
},
{
"name": "MCP_RATE_LIMIT_RPM",
"default": "0",
"description": "Per-principal token-bucket rate limit on tool invocations. 0 = disabled. Recommend 60 for production."
}
]
}Tools
Reported by the attributed source; not independently observed by Koskamo.
Connect from your client
Each snippet configures the same source-provided package; replace placeholders before use.
Cursor
{
"mcpServers": {
"warehouse-mcp": {
"command": "npx",
"args": [
"-y",
"warehouse-mcp@0.4.2"
],
"env": {
"MCP_TRANSPORT": "<YOUR_MCP_TRANSPORT>",
"WAREHOUSE_TYPE": "<YOUR_WAREHOUSE_TYPE>",
"MCP_API_KEYS": "<YOUR_MCP_API_KEYS>",
"DUCKDB_PATH": "<YOUR_DUCKDB_PATH>",
"MOTHERDUCK_TOKEN": "<YOUR_MOTHERDUCK_TOKEN>",
"PG_HOST": "<YOUR_PG_HOST>",
"PG_DATABASE": "<YOUR_PG_DATABASE>",
"PG_USER": "<YOUR_PG_USER>",
"PG_PASSWORD": "<YOUR_PG_PASSWORD>",
"ORACLE_USER": "<YOUR_ORACLE_USER>",
"ORACLE_PASSWORD": "<YOUR_ORACLE_PASSWORD>",
"ORACLE_CONNECT_STRING": "<YOUR_ORACLE_CONNECT_STRING>",
"SNOWFLAKE_ACCOUNT": "<YOUR_SNOWFLAKE_ACCOUNT>",
"SNOWFLAKE_USER": "<YOUR_SNOWFLAKE_USER>",
"SNOWFLAKE_PRIVATE_KEY_PATH": "<YOUR_SNOWFLAKE_PRIVATE_KEY_PATH>",
"BIGQUERY_PROJECT": "<YOUR_BIGQUERY_PROJECT>",
"GOOGLE_APPLICATION_CREDENTIALS": "<YOUR_GOOGLE_APPLICATION_CREDENTIALS>",
"GUARDRAIL_PII_MASK": "<YOUR_GUARDRAIL_PII_MASK>",
"MCP_RATE_LIMIT_RPM": "<YOUR_MCP_RATE_LIMIT_RPM>"
}
}
}
}Cline
{
"mcpServers": {
"warehouse-mcp": {
"command": "npx",
"args": [
"-y",
"warehouse-mcp@0.4.2"
],
"env": {
"MCP_TRANSPORT": "<YOUR_MCP_TRANSPORT>",
"WAREHOUSE_TYPE": "<YOUR_WAREHOUSE_TYPE>",
"MCP_API_KEYS": "<YOUR_MCP_API_KEYS>",
"DUCKDB_PATH": "<YOUR_DUCKDB_PATH>",
"MOTHERDUCK_TOKEN": "<YOUR_MOTHERDUCK_TOKEN>",
"PG_HOST": "<YOUR_PG_HOST>",
"PG_DATABASE": "<YOUR_PG_DATABASE>",
"PG_USER": "<YOUR_PG_USER>",
"PG_PASSWORD": "<YOUR_PG_PASSWORD>",
"ORACLE_USER": "<YOUR_ORACLE_USER>",
"ORACLE_PASSWORD": "<YOUR_ORACLE_PASSWORD>",
"ORACLE_CONNECT_STRING": "<YOUR_ORACLE_CONNECT_STRING>",
"SNOWFLAKE_ACCOUNT": "<YOUR_SNOWFLAKE_ACCOUNT>",
"SNOWFLAKE_USER": "<YOUR_SNOWFLAKE_USER>",
"SNOWFLAKE_PRIVATE_KEY_PATH": "<YOUR_SNOWFLAKE_PRIVATE_KEY_PATH>",
"BIGQUERY_PROJECT": "<YOUR_BIGQUERY_PROJECT>",
"GOOGLE_APPLICATION_CREDENTIALS": "<YOUR_GOOGLE_APPLICATION_CREDENTIALS>",
"GUARDRAIL_PII_MASK": "<YOUR_GUARDRAIL_PII_MASK>",
"MCP_RATE_LIMIT_RPM": "<YOUR_MCP_RATE_LIMIT_RPM>"
}
}
}
}VS Code
{
"servers": {
"warehouse-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"warehouse-mcp@0.4.2"
],
"env": {
"MCP_TRANSPORT": "<YOUR_MCP_TRANSPORT>",
"WAREHOUSE_TYPE": "<YOUR_WAREHOUSE_TYPE>",
"MCP_API_KEYS": "<YOUR_MCP_API_KEYS>",
"DUCKDB_PATH": "<YOUR_DUCKDB_PATH>",
"MOTHERDUCK_TOKEN": "<YOUR_MOTHERDUCK_TOKEN>",
"PG_HOST": "<YOUR_PG_HOST>",
"PG_DATABASE": "<YOUR_PG_DATABASE>",
"PG_USER": "<YOUR_PG_USER>",
"PG_PASSWORD": "<YOUR_PG_PASSWORD>",
"ORACLE_USER": "<YOUR_ORACLE_USER>",
"ORACLE_PASSWORD": "<YOUR_ORACLE_PASSWORD>",
"ORACLE_CONNECT_STRING": "<YOUR_ORACLE_CONNECT_STRING>",
"SNOWFLAKE_ACCOUNT": "<YOUR_SNOWFLAKE_ACCOUNT>",
"SNOWFLAKE_USER": "<YOUR_SNOWFLAKE_USER>",
"SNOWFLAKE_PRIVATE_KEY_PATH": "<YOUR_SNOWFLAKE_PRIVATE_KEY_PATH>",
"BIGQUERY_PROJECT": "<YOUR_BIGQUERY_PROJECT>",
"GOOGLE_APPLICATION_CREDENTIALS": "<YOUR_GOOGLE_APPLICATION_CREDENTIALS>",
"GUARDRAIL_PII_MASK": "<YOUR_GUARDRAIL_PII_MASK>",
"MCP_RATE_LIMIT_RPM": "<YOUR_MCP_RATE_LIMIT_RPM>"
}
}
}
}Claude Desktop
{
"mcpServers": {
"warehouse-mcp": {
"command": "npx",
"args": [
"-y",
"warehouse-mcp@0.4.2"
],
"env": {
"MCP_TRANSPORT": "<YOUR_MCP_TRANSPORT>",
"WAREHOUSE_TYPE": "<YOUR_WAREHOUSE_TYPE>",
"MCP_API_KEYS": "<YOUR_MCP_API_KEYS>",
"DUCKDB_PATH": "<YOUR_DUCKDB_PATH>",
"MOTHERDUCK_TOKEN": "<YOUR_MOTHERDUCK_TOKEN>",
"PG_HOST": "<YOUR_PG_HOST>",
"PG_DATABASE": "<YOUR_PG_DATABASE>",
"PG_USER": "<YOUR_PG_USER>",
"PG_PASSWORD": "<YOUR_PG_PASSWORD>",
"ORACLE_USER": "<YOUR_ORACLE_USER>",
"ORACLE_PASSWORD": "<YOUR_ORACLE_PASSWORD>",
"ORACLE_CONNECT_STRING": "<YOUR_ORACLE_CONNECT_STRING>",
"SNOWFLAKE_ACCOUNT": "<YOUR_SNOWFLAKE_ACCOUNT>",
"SNOWFLAKE_USER": "<YOUR_SNOWFLAKE_USER>",
"SNOWFLAKE_PRIVATE_KEY_PATH": "<YOUR_SNOWFLAKE_PRIVATE_KEY_PATH>",
"BIGQUERY_PROJECT": "<YOUR_BIGQUERY_PROJECT>",
"GOOGLE_APPLICATION_CREDENTIALS": "<YOUR_GOOGLE_APPLICATION_CREDENTIALS>",
"GUARDRAIL_PII_MASK": "<YOUR_GUARDRAIL_PII_MASK>",
"MCP_RATE_LIMIT_RPM": "<YOUR_MCP_RATE_LIMIT_RPM>"
}
}
}
}Let your agent find its tools
Find servers like warehouse-mcp from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.