Skip to content

Connectors

A connector is anything Dinobase can read from (and often write back to): a SaaS API, a database, a file path, an MCP server, or a custom REST endpoint. Each connector becomes a schema in DuckDB.

CategoryExamplesSync needed?Storage
SaaS APIsStripe, HubSpot, GitHubYesdlt syncs to parquet
DatabasesPostgreSQL, MySQL, SnowflakeYesdlt syncs to parquet
FilesParquet, CSV, S3, GCSNoDuckDB reads files directly
MCP serversAny stdio/SSE/HTTP MCP serverYesTool output cached as JSON views
Custom RESTAny REST API via local YAML configYes/livedlt fetches, cached as JSON views
Terminal window
dinobase add <type> [credentials] [options]
  1. CLI flags--api-key sk_live_...
  2. Environment variablesSTRIPE_SECRET_KEY
  3. Interactive prompt — asks if neither is set
Terminal window
# These are equivalent:
dinobase add stripe --api-key sk_live_...
export STRIPE_SECRET_KEY=sk_live_...
dinobase add stripe

By default, the connector name matches the type. Use --name for multiple instances:

Terminal window
dinobase add stripe --api-key sk_live_... --name stripe_prod
dinobase add stripe --api-key sk_test_... --name stripe_test

Creates separate schemas: stripe_prod.* and stripe_test.*.

Set per-connector intervals (used with dinobase sync --schedule):

Terminal window
dinobase add stripe --api-key sk_live_... --sync-interval 30m
dinobase add hubspot --api-key pat-... --sync-interval 1h

Supported formats: 30s, 5m, 1h, 6h, 1d.

Powered by dlt verified sources and REST API connectors.

Terminal window
dinobase add stripe --api-key sk_live_...
dinobase add hubspot --api-key pat-na1-...
dinobase sync

After syncing, data is stored as parquet and queryable as stripe.*, hubspot.*, etc.

See SaaS APIs reference for all supported services.

Connect via connection string (SQLAlchemy-compatible):

Terminal window
dinobase add postgres --connection-string postgresql://user:pass@host:5432/db
dinobase add mysql --connection-string mysql://user:pass@host:3306/db
dinobase add snowflake --connection-string snowflake://user:pass@account/db/schema
dinobase add sqlite --path /path/to/database.db

See Databases reference for all supported databases.

No sync needed. DuckDB reads files at query time through views.

Terminal window
# Local directory of parquet files
dinobase add parquet --path ./data/events/ --name analytics
# Single CSV file
dinobase add csv --path ./exports/report.csv --name report
# S3
dinobase add parquet --path s3://bucket/prefix/ --name warehouse
# GCS
dinobase add parquet --path gs://bucket/data/ --name warehouse
InputBehavior
Directory (./data/)Finds all matching files recursively
Single file (./data/events.parquet)One table from the file
Glob (./data/*.parquet)Matches by pattern
S3 URL (s3://bucket/prefix/)DuckDB reads from S3 at query time
GCS URL (gs://bucket/prefix/)DuckDB reads from GCS at query time

Each file becomes a table named after its filename: events.parquet becomes the events table.

See Files reference for more details.

Connect any REST API endpoint by writing a local YAML config. Data is fetched via dlt (handles auth, pagination) and cached as JSON files that DuckDB queries via read_json_auto().

Terminal window
dinobase connector create posthog_flags \
--url "https://app.posthog.com/api/" \
--endpoint "projects/123/feature_flags/" \
--data-selector results
dinobase add posthog_flags --api-key phx_xxx
dinobase query "SELECT name, active FROM posthog_flags.feature_flags"

See the full Custom REST Connectors reference for the YAML format, auth types, fetch modes, and connector management commands.

Connect any MCP server (stdio, SSE, or streamable HTTP) as a connector. Dinobase auto-discovers read-only tools and syncs their output as SQL tables. For writes or parameterized calls, use dinobase mcp call or the Python API.

Terminal window
dinobase connector create posthog_mcp \
--transport stdio \
--command "npx -y @posthog/mcp-server"
dinobase sync posthog_mcp
dinobase query "SELECT * FROM posthog_mcp.list_projects LIMIT 10"

See the full MCP Server Connectors reference for the YAML format, tool-selection rules, and direct tool-call examples (CLI + Python).


Terminal window
# List all available connector types
dinobase connectors
# See what's actually connected and loaded
dinobase status --pretty

Edit ~/.dinobase/config.yaml directly to remove a connector entry. Data stays in DuckDB until overwritten.