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. - Quick Start - Local Setup With the AI Agent and MCP Server, you can: - Storage: Query tables directly and manage table or bucket description
Add this skill
npx mdskills install keboola/keboola-mcp-serverComprehensive MCP server connecting AI agents to Keboola data platform with rich tooling and multiple transport options
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.
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.
With the AI Agent and MCP Server, you can:
⚠️ SSE Transport Decommissioning: The SSE transport is deprecated and will be removed from the Keboola MCP Server on 2026-Mar-31. Please migrate to the Streamable HTTP transport and use the /mcp endpoints instead of /sse.
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.
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.
MCP Server tabhttps://mcp..keboola.com/mcpclaude mcp add --transport http keboola (see below for details)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 `` with your Keboola region:
claude mcp add --transport http keboola https://mcp..keboola.com/mcp
Region-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:
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.
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: , otherwise the MCP Server uses production branch as default. This should be managed by the AI client or the environment handling the server connection.
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.
| 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 |
Filters apply in order: allowed → read-only intersection → disallowed exclusion. Empty headers = no restriction.
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.
X-Read-Only-Mode: true
For detailed documentation, see developers.keboola.com/integrate/mcp/#tool-authorization-and-access-control.
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 argument when starting the server:
stdio - Default when --transport is 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 /mcp (e.g., http://localhost:8000/mcp).sse - Deprecated (will be removed on 2026-Mar-31), use streamable-http instead. Runs the server remotely using Server-Sent Events (SSE) for one-way event streaming from server to client. Connect via /sse (e.g., http://localhost:8000/sse).http-compat - A custom transport supporting both SSE and streamable-http. It is currently used on Keboola remote servers but will be replaced by streamable-http only when SSE is removed.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:
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.
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:
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
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 |
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.
KBC_BRANCH_ID to 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.X-Branch-Id: or KBC_BRANCH_ID: .Make sure you have:
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
Windows:
# Using the installer script
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# Or using pip
pip install uv
# Or using winget
winget install --id=astral-sh.uv -e
For more installation options, see the official uv documentation.
There are four ways to use the Keboola MCP Server, depending on your needs:
In this mode, Claude or Cursor automatically starts the MCP server for you. You do not need to run any commands in your terminal.
{
"mcpServers": {
"keboola": {
"command": "uvx",
"args": ["keboola_mcp_server --transport "],
"env": {
"KBC_STORAGE_API_URL": "https://connection.YOUR_REGION.keboola.com",
"KBC_STORAGE_TOKEN": "your_keboola_storage_token",
"KBC_WORKSPACE_SCHEMA": "your_workspace_schema",
"KBC_BRANCH_ID": "your_branch_id_optional"
}
}
}
}
Config file locations:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json{
"mcpServers": {
"keboola": {
"command": "uvx",
"args": ["keboola_mcp_server --transport "],
"env": {
"KBC_STORAGE_API_URL": "https://connection.YOUR_REGION.keboola.com",
"KBC_STORAGE_TOKEN": "your_keboola_storage_token",
"KBC_WORKSPACE_SCHEMA": "your_workspace_schema",
"KBC_BRANCH_ID": "your_branch_id_optional"
}
}
}
}
Note: Use short, descriptive names for MCP servers. Since the full tool name includes the server name and must stay under ~60 characters, longer names may be filtered out in Cursor and will not be displayed to the Agent.
When running the MCP server from Windows Subsystem for Linux with Cursor AI, use this configuration:
{
"mcpServers": {
"keboola":{
"command": "wsl.exe",
"args": [
"bash",
"-c '",
"export KBC_STORAGE_API_URL=https://connection.YOUR_REGION.keboola.com &&",
"export KBC_STORAGE_TOKEN=your_keboola_storage_token &&",
"export KBC_WORKSPACE_SCHEMA=your_workspace_schema &&",
"export KBC_BRANCH_ID=your_branch_id_optional &&",
"/snap/bin/uvx keboola_mcp_server --transport ",
"'"
]
}
}
}
For developers working on the MCP server code itself:
{
"mcpServers": {
"keboola": {
"command": "/absolute/path/to/.venv/bin/python",
"args": [
"-m",
"keboola_mcp_server --transport "
],
"env": {
"KBC_STORAGE_API_URL": "https://connection.YOUR_REGION.keboola.com",
"KBC_STORAGE_TOKEN": "your_keboola_storage_token",
"KBC_WORKSPACE_SCHEMA": "your_workspace_schema",
"KBC_BRANCH_ID": "your_branch_id_optional"
}
}
}
}
You can run the server manually in a terminal for testing or debugging:
# Set environment variables
export KBC_STORAGE_API_URL=https://connection.YOUR_REGION.keboola.com
export KBC_STORAGE_TOKEN=your_keboola_storage_token
export KBC_WORKSPACE_SCHEMA=your_workspace_schema
export KBC_BRANCH_ID=your_branch_id_optional
uvx keboola_mcp_server --transport streamable-http
Note: This mode is primarily for debugging or testing. For normal use with Claude or Cursor, you do not need to manually run the server.
Note: The server will use the Streamable HTTP transport and listen on
localhost:8000for incoming connections at/mcp. You can use--portand--hostparameters to make it listen elsewhere.
docker pull keboola/mcp-server:latest
docker run \
--name keboola_mcp_server \
--rm \
-it \
-p 127.0.0.1:8000:8000 \
-e KBC_STORAGE_API_URL="https://connection.YOUR_REGION.keboola.com" \
-e KBC_STORAGE_TOKEN="YOUR_KEBOOLA_STORAGE_TOKEN" \
-e KBC_WORKSPACE_SCHEMA="YOUR_WORKSPACE_SCHEMA" \
-e KBC_BRANCH_ID="YOUR_BRANCH_ID_OPTIONAL" \
keboola/mcp-server:latest \
--transport streamable-http \
--host 0.0.0.0
Note: The server will use the Streamable HTTP transport and listen on
localhost:8000for incoming connections at/mcp. You can change-pto map the container's port somewhere else.
| Scenario | Need to Run Manually? | Use This Setup |
|---|---|---|
| Using Claude/Cursor | No | Configure MCP in app settings |
| Developing MCP locally | No (Claude starts it) | Point config to python path |
| Testing CLI manually | Yes | Use terminal to run |
| Using Docker | Yes | Run docker container |
Once your MCP client (Claude/Cursor) is configured and running, you can start querying your Keboola data:
You can start with a simple query to confirm everything is working:
What buckets and tables are in my Keboola project?
Data Exploration:
Data Analysis:
Data Pipelines:
| MCP Client | Support Status | Connection Method |
|---|---|---|
| Claude (Desktop & Web) | ✅ supported | stdio |
| Cursor | ✅ supported | stdio |
| Windsurf, Zed, Replit | ✅ Supported | stdio |
| Codeium, Sourcegraph | ✅ Supported | HTTP+SSE |
| Custom MCP Clients | ✅ Supported | HTTP+SSE or stdio |
Note: Your AI agents will automatically adjust to new tools.
For a complete list of available tools with detailed descriptions, parameters, and usage examples, see TOOLS.md.
| Issue | Solution |
|---|---|
| Authentication Errors | Verify KBC_STORAGE_TOKEN is valid |
| Workspace Issues | Confirm KBC_WORKSPACE_SCHEMA is correct |
| Connection Timeout | Check network connectivity |
Basic setup:
uv sync --extra dev
With the basic setup, you can use uv run tox to run tests and check code style.
Recommended setup:
uv sync --extra dev --extra tests --extra integtests --extra codestyle
With the recommended setup, packages for testing and code style checking will be installed which allows IDEs like VsCode or Cursor to check the code or run tests during development.
To run integration tests locally, use uv run tox -e integtests.
NOTE: You will need to set the following environment variables:
INTEGTEST_STORAGE_API_URLINTEGTEST_STORAGE_TOKENINTEGTEST_WORKSPACE_SCHEMAIn order to get these values, you need a dedicated Keboola project for integration tests.
uv.lockUpdate the uv.lock file if you have added or removed dependencies. Also consider updating the lock with newer dependency
versions when creating a release (uv lock --upgrade).
When you make changes to any tool descriptions (docstrings in tool functions), you must regenerate the TOOLS.md documentation file to reflect these changes:
uv run python -m src.keboola_mcp_server.generate_tool_docs
⭐ The primary way to get help, report bugs, or request features is by opening an issue on GitHub. ⭐
The development team actively monitors issues and will respond as quickly as possible. For general information about Keboola, please use the resources below.
Install via CLI
npx mdskills install keboola/keboola-mcp-serverKeboola MCP Server is a free, open-source AI agent skill. 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. - Quick Start - Local Setup With the AI Agent and MCP Server, you can: - Storage: Query tables directly and manage table or bucket description
Install Keboola MCP Server with a single command:
npx mdskills install keboola/keboola-mcp-serverThis downloads the skill files into your project and your AI agent picks them up automatically.
Keboola MCP Server works with Claude Code, Claude Desktop, Cursor, Vscode Copilot, Windsurf, Continue Dev, Gemini Cli, Amp, Roo Code, Goose. Skills use the open SKILL.md format which is compatible with any AI coding agent that reads markdown instructions.