BonnardBonnard

Warehouse Adapters

Bundled adapters that turn a native warehouse driver result into typed chart data.

An adapter is a small function that wraps your warehouse driver and returns a runSql callback for addCharts. It maps the driver's column types to chart field kinds (dimension, measure, time) so the chart picks sensible axes and formatting automatically.

Each adapter lives at its own import subpath. The underlying driver is an optional peer dependency — you only install the one you use, and importing a subpath pulls in no runtime dependency beyond your driver.

Postgres

import { Pool } from "pg";
import { postgresRunSql } from "@bonnard/mcp-charts/postgres";

const pool = new Pool({ connectionString: process.env.DATABASE_URL });
addCharts(server, { runSql: postgresRunSql(pool) });

Queries run inside a READ ONLY transaction.

BigQuery

import { BigQuery } from "@google-cloud/bigquery";
import { bigQueryRunSql } from "@bonnard/mcp-charts/bigquery";

const bq = new BigQuery();
addCharts(server, {
  runSql: bigQueryRunSql(bq, {
    location: "europe-west2",
    maximumBytesBilled: "200000000", // cost guard
    defaultDataset: "analytics", // unqualified table names resolve here
  }),
});

DuckDB

import { duckDbRunSql } from "@bonnard/mcp-charts/duckdb";

addCharts(server, { runSql: duckDbRunSql(connection) });

Snowflake

import { snowflakeRunSql } from "@bonnard/mcp-charts/snowflake";

addCharts(server, { runSql: snowflakeRunSql(connection) });

Databricks

import { databricksRunSql } from "@bonnard/mcp-charts/databricks";

addCharts(server, { runSql: databricksRunSql(session) });

Optional peer dependencies

Install only the driver(s) you use:

AdapterSubpathPeer dependency
Postgres@bonnard/mcp-charts/postgrespg
BigQuery@bonnard/mcp-charts/bigquery@google-cloud/bigquery
DuckDB@bonnard/mcp-charts/duckdb@duckdb/node-api
Snowflake@bonnard/mcp-charts/snowflakesnowflake-sdk
Databricks@bonnard/mcp-charts/databricks@databricks/sql

Connect adapters with a read-only, least-privilege role. See Security.

On this page