Skip to main content
The oleander MCP server exposes your context graph - lake tables, catalogs, pipeline runs, lineage, costs, logs, and traces - to any MCP-compatible agent.

Endpoint

Authenticate with your oleander API key via Authorization: Bearer. Most MCP clients handle this automatically after the OAuth flow. The server is published to the official MCP registry as dev.oleander/oleander, so most clients can install it by name.

Example workflow

A typical agent task chains three tools:
The agent calls these in sequence, each result informing the next, without you specifying the order.

Tools

Queries

Reads and writes go to different tools. query_run is annotated read-only so clients can skip the confirmation prompt; query_submit is annotated as a write and asks first.
lake_query is gone. It pinned DuckDB and returned rows for reads and writes alike; query_run and query_submit replace it and route instead. See Query routing.

Saved query schedules

A schedule points at a saved query, so saved_queries_list/saved_queries_create are here too - without them there’s no query id to schedule. A saved query has at most one schedule; scheduling an already-scheduled query reschedules it in place rather than adding a second. saved_queries_schedules_create requires confirm: true - it starts recurring billable compute and overwrites its destination table on every run. See Scheduled queries with time-travel for what these schedules do.

Identity

Catalogs and tables

External connections

BigQuery, Snowflake, and Postgres tables are queried through query_run as connection.schema.table - no source-specific query tool. Those queries always run on DuckDB.

Spark

Runs and pipelines

Lineage

Investigations

Docs


Registry listings

The server ships a server.json manifest and is listed where agents look for tools, so most clients can add it without a hand-written config. Two agent-readable surfaces are served from the site itself:

Annotations

Every tool carries MCP annotations so clients can decide what needs confirmation:
  • readOnlyHint is true for anything that only reads. query_run is guarded to keep that promise - a statement that could mutate is rejected rather than run.
  • destructiveHint is true for drops and aborts.
  • Tools that start compute or change data take an explicit confirm argument on top of the annotation.

Editor setup