Keboola MCP Server
Connect your AI agents, MCP clients (Cursor, Claude, Windsurf, VS Code ...) and other AI assistants to Keboola. Expose data, transformations, SQL queries, and job triggers—no glue code required. Deliver the right data to agents when and where they need it.
Overview
Keboola MCP Server is an open-source bridge between your Keboola project and modern AI tools. It turns Keboola features—like storage access, SQL transformations, and job triggers—into callable tools for Claude, Cursor, CrewAI, LangChain, Amazon Q, and more.
Features
With the AI Agent and MCP Server, you can:
- Storage: Query tables directly and manage table or bucket descriptions
- Components: Create, List and inspect extractors, writers, data apps, and transformation configurations
- SQL: Create SQL transformations with natural language
- Jobs: Run components and transformations, and retrieve job execution details
- Flows: Build and manage workflow pipelines using Conditional Flows and Orchestrator Flows.
- Data Apps: Create, deploy and manage Keboola Streamlit Data Apps displaying your queries over storage data.
- Metadata: Search, read, and update project documentation and object metadata using natural language
- Dev Branches: Work safely in development branches outside of production, where all operations are scoped to the selected branch.
🚀 Quick Start: Remote MCP Server (Easiest Way)
The easiest way to use Keboola MCP Server is through our Remote MCP Server. This hosted solution eliminates the need for local setup, configuration, or installation.
What is the Remote MCP Server?
Our remote server is hosted on every multi-tenant Keboola stack and supports OAuth authentication. You can connect to it from any AI assistant that supports remote Streamable HTTP connection and OAuth authentication.
How to Connect
- Get your remote server URL: Navigate to your Keboola Project Settings →
MCP Servertab - Copy the server URL: It will look like
https://mcp.<YOUR_REGION>.keboola.com/mcp - Configure your AI assistant: Paste the URL into your AI assistant's MCP settings
- Authenticate: You'll be prompted to authenticate with your Keboola account and select your project
Supported Clients
- Cursor: Use the "Install In Cursor" button in your project's MCP Server settings or click
this button
- Claude Desktop: Add the integration via Settings → Integrations
- Claude Code: Install using
claude mcp add --transport http keboola <URL>(see below for details) - Windsurf: Configure with the remote server URL
- Make: Configure with the remote server URL
- Other MCP clients: Configure with the remote server URL
Claude Code Setup
Claude Code is a command-line interface tool that allows you to interact with Claude using your terminal. You can install the Keboola MCP Server integration using a simple command.
Installation:
Run the following command in your terminal, replacing <YOUR_REGION> with your Keboola region:
claude mcp add --transport http keboola https://mcp.<YOUR_REGION>.keboola.com/mcpRegion-specific commands:
| Region | Installation Command |
|---|---|
| US Virginia AWS | claude mcp add --transport http keboola https://mcp.keboola.com/mcp |
| US Virginia GCP | claude mcp add --transport http keboola https://mcp.us-east4.gcp.keboola.com/mcp |
| EU Frankfurt AWS | claude mcp add --transport http keboola https://mcp.eu-central-1.keboola.com/mcp |
| EU Ireland Azure | claude mcp add --transport http keboola https://mcp.north-europe.azure.keboola.com/mcp |
| EU Frankfurt GCP | claude mcp add --transport http keboola https://mcp.europe-west3.gcp.keboola.com/mcp |
Usage:
Once installed, you can use the Keboola MCP Server in Claude Code by typing /mcp in your conversation and selecting the Keboola tools you want to use.
Authentication:
When you first use the Keboola MCP Server in Claude Code, a browser window will open prompting you to:
- Log in with your Keboola account
- Select the project you want to connect to
- Authorize the connection
After authentication, you can start using Keboola tools directly from Claude Code.
For detailed setup instructions and region-specific URLs, see our Remote Server Setup documentation.
Using Development Branches
You can work safely in Keboola development branches without affecting your production data. The remotely hosted MCP Servers respect the KBC_BRANCH_ID parameter and will scope all operations to the specified branch. You can find the development branch ID in the URL when navigating to the development branch in the UI, for example: https://connection.us-east4.gcp.keboola.com/admin/projects/PROJECT_ID/branch/BRANCH_ID/dashboard. The branch ID must be included in each request using the header X-Branch-Id: <branchId>, otherwise the MCP Server uses production branch as default. This should be managed by the AI client or the environment handling the server connection.
Tool Authorization and Access Control
When using HTTP-based transports (Streamable HTTP), you can control which tools are available to clients using HTTP headers. This is useful for restricting AI agent capabilities or enforcing compliance policies.
Authorization Headers
| Header | Description | Example |
|---|---|---|
X-Allowed-Tools | Comma-separated list of allowed tools | get_configs,get_buckets,query_data |
X-Disallowed-Tools | Comma-separated list of tools to exclude | create_config,run_job |
X-Read-Only-Mode | Restrict to read-only tools only | true, 1, or yes |
Filter Behavior
Filters apply in order: allowed → read-only intersection → disallowed exclusion. Empty headers = no restriction.
Read-Only Tools
Read-only tools are those annotated with readOnlyHint=True. These tools only retrieve information without making any changes to your Keboola project. For the current list of read-only tools, see the TOOLS.md file which is an auto-generated snapshot of the actual tool set.
Example: Read-Only Access
X-Read-Only-Mode: trueFor detailed documentation, see developers.keboola.com/integrate/mcp/#tool-authorization-and-access-control.
Local MCP Server Setup (Custom or Dev Way)
Run the MCP server on your own machine for full control and easy development. Choose this when you want to customize tools, debug locally, or iterate quickly. You’ll clone the repo, set Keboola credentials via environment variables or headers depending on the server transport, install dependencies, and start the server. This approach offers maximum flexibility (custom tools, local logging, offline iteration) but requires manual setup and you manage updates and secrets yourself.
The server supports multiple transport options, which can be selected by providing the --transport <transport> argument when starting the server:
stdio- Default when--transportis not specified. Standard input/output, typically used for local deployment with a single client.streamable-http- Runs the server remotely over HTTP with a bidirectional streaming channel, allowing the client and server to continuously exchange messages. Connect via <url>/mcp (e.g., http://localhost:8000/mcp).http-compat- An alias forstreamable-http, kept for backwards compatibility.
For client–server communication, Keboola credentials must be provided to enable working with your project in your Keboola Region. The following are required: KBC_STORAGE_TOKEN, KBC_STORAGE_API_URL, KBC_WORKSPACE_SCHEMA and optionally KBC_BRANCH_ID. You can provide these in two ways:
- For personal use (mainly with stdio transport): set the environment variables before starting the server. All requests will reuse these predefined credentials.
- For multi-user use: include the variables in the request headers so that each request uses the credentials provided with it.
KBC_STORAGE_TOKEN
This is your authentication token for Keboola:
For instructions on how to create and manage Storage API tokens, refer to the official Keboola documentation.
Note: If you want the MCP server to have limited access, use custom storage token, if you want the MCP to access everything in your project, use the master token.
KBC_WORKSPACE_SCHEMA
This identifies your workspace in Keboola and is used for SQL queries. However, this is only required if you're using a custom storage token instead of the Master Token:
- If using Master Token: The workspace is created automatically behind the scenes
- If using custom storage token: Follow this Keboola guide to get your KBC_WORKSPACE_SCHEMA
Note: When creating a workspace manually, check Grant read-only access to all Project data option
Note: KBC_WORKSPACE_SCHEMA is called Dataset Name in BigQuery workspaces, you simply click connect and copy the Dataset Name
KBC_STORAGE_API_URL (Keboola Region)
Your Keboola Region API URL depends on your deployment region. You can determine your region by looking at the URL in your browser when logged into your Keboola project:
| Region | API URL |
|---|---|
| AWS North America | https://connection.keboola.com |
| AWS Europe | https://connection.eu-central-1.keboola.com |
| Google Cloud EU | https://connection.europe-west3.gcp.keboola.com |
| Google Cloud US | https://connection.us-east4.gcp.keboola.com |
| Azure EU | https://connection.north-europe.azure.keboola.com |
KBC_BRANCH_ID (Optional)
To operate on a specific Keboola development branch, set the branch ID using the KBC_BRANCH_ID parameter. The MCP server scopes its functionality to the specified branch, ensuring all changes remain isolated and do not impact the production branch.
- If not provided, the server uses the production branch by default.
- For development work, set
KBC_BRANCH_IDto the numeric ID of your branch (e.g.,123456). You can find the development branch ID in the URL when navigating to the development branch in the UI, for example:https://connection.us-east4.gcp.keboola.com/admin/projects/PROJECT_ID/branch/BRANCH_ID/dashboard. - On remote transports, you can override per-request with the HTTP header
X-Branch-Id: <branchId>orKBC_BRANCH_ID: <branchId>.
Installation
Make sure you have:
- Python 3.10+ installed
- Access to a Keboola project with admin rights
- Your preferred MCP client (Claude, Cursor, etc.)
Note: Make sure you have uv installed. The MCP client will use it to automatically download and run the Keboola MCP Server.
Installing uv:
macOS/Linux:
#if homebrew is not installed on your machine use:
# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install using Homebrew
brew install uv*Wind
…