Skip to content
AI Features

Connect an AI client to Keboola

Connect Claude, ChatGPT, Cursor, Windsurf, VS Code, or Make to the Keboola MCP Server — get your server URL, set the client up, authenticate with OAuth. Plus connecting from your own code with the Claude Messages API, OpenAI Agents SDK, or LangChain.

Get your AI client talking to your Keboola project. Every route below does the same thing: point the client at your project's MCP server URL, authenticate with your Keboola account, and pick the project — after which the assistant can use the Keboola tools. For what the server is and how permissions work, see the MCP Server overview.

You'll need a Keboola project and an account whose role has the permissions you want the assistant to have — over OAuth it inherits exactly those.

The MCP Server runs on every multi-tenant stack, and your stack is the host in your Keboola URL: connection.<stack>.keboola.com in the browser means mcp.<stack>.keboola.com for MCP. Copy the whole URL from the row that matches:

| Stack (region) | Server URL | |---|---| | US Virginia AWS (default) | https://mcp.keboola.com/mcp | | US Virginia GCP (us-east4) | https://mcp.us-east4.gcp.keboola.com/mcp | | EU Frankfurt AWS (eu-central-1) | https://mcp.eu-central-1.keboola.com/mcp | | EU Ireland Azure (north-europe) | https://mcp.north-europe.azure.keboola.com/mcp | | EU Frankfurt GCP (europe-west3) | https://mcp.europe-west3.gcp.keboola.com/mcp |

You can also copy it from the platform: open the avatar menu (top right) → Keboola MCP Server — or Project Settings → the MCP Server tab. That page has a Copy URL to clipboard button, plus per-client instructions and an install button for some clients.

The MCP Server tab in Keboola project settings: a tab strip with Project, Users, API Tokens, CLI Sync, Features, AI Rules, Kai Agent, MCP Server and IDE Connections; below it Installation Instructions with a tab per client (Claude.ai, Claude Desktop, Claude Code, ChatGPT, Cursor, Make, Windsurf, Other), the numbered steps for the selected client, and the project's Integration URL next to a Copy URL to clipboard button

Wherever you take it from, paste the full URL. The <YOUR_REGION> placeholder in the snippets below is a stand-in for the whole host: on the default stack the region segment disappears entirely (mcp.keboola.com), and on GCP/Azure it carries the provider (us-east4.gcp, north-europe.azure).

  1. In Claude, go to Customize → Connectors.
  2. Click +, then Add custom connector.
  3. Give it a name (Keboola) and paste in the full server URL from step 1.
  4. Click Add.
  5. Click Connect on the new connector, authenticate with your Keboola account, and select the project you want to connect to.

Fallback — the mcp-remote adapter. For MCP clients that don't yet support native remote (OAuth) connections, bridge to the remote server with mcp-remote. This requires Node.js on your computer.

  1. Open the Claude menu on your computer and select Settings…

  2. Click Developer in the left-hand bar, then Edit Config.

  3. Paste this into the config file and save:

    {
    "mcpServers": {
    "keboola": {
    "command": "npx",
    "args": [
    "mcp-remote",
    "https://mcp.<YOUR_REGION>.keboola.com/mcp"
    ]
    }
    }
    }
  4. Restart Claude Desktop. You'll be prompted to authenticate and select a project.

Result: the assistant lists Keboola tools and works in the project with the permissions your Keboola role has. Ask it "What tables are in my project?" to confirm the connection.

Scope the connection to a development branch

Section titled “Scope the connection to a development branch”

To keep an agent's changes off production, send the X-Branch-Id HTTP header with your development branch ID. Whether you can set a custom header at all depends on the client — check its documentation; the desktop clients above generally can't, so the reliable route is running the server yourself with KBC_BRANCH_ID set. Without either, the server works on production.

Claude Messages API with MCP connector (beta)

Section titled “Claude Messages API with MCP connector (beta)”

Anthropic's MCP connector connects remote MCP servers directly through Claude's Messages API, so you don't need a standalone MCP client if you're already calling the API.

  • Direct API calls — configure servers with the mcp_servers parameter in your request, and enable tools via an mcp_toolset in the tools array.
  • Beta header — send anthropic-beta: mcp-client-2025-11-20 (the earlier mcp-client-2025-04-04 version is deprecated).
  • Tool calling is the MCP functionality currently supported through the connector.
  • Accessibility — the target MCP server has to be publicly reachable over HTTP, which the hosted Keboola server is.

For API examples and configuration options, see the official MCP connector documentation.

The OpenAI Agents SDK ships with first-class MCP support. Start the Keboola MCP Server (locally via uvx, or remotely over Streamable HTTP) and register it:

import asyncio
from agents import Agent, Runner
from agents.mcp import MCPServerStdio
async def main():
async with MCPServerStdio(
params={
"command": "uvx",
"args": [
"keboola_mcp_server",
"--api-url", "https://connection.<YOUR_REGION>.keboola.com",
],
"env": {
"KBC_STORAGE_TOKEN": "YOUR_KEBOOLA_STORAGE_TOKEN",
"KBC_WORKSPACE_SCHEMA": "YOUR_WORKSPACE_SCHEMA",
},
}
) as mcp:
agent = Agent(
name="Assistant",
instructions="Use the Keboola tools to achieve the task",
mcp_servers=[mcp],
)
result = await Runner.run(agent, "Load yesterday's CSV into Snowflake")
print(result.final_output)
asyncio.run(main())

The SDK calls list_tools() on the server automatically, making every Keboola operation available to the model. The server needs credentials of its own — without KBC_STORAGE_TOKEN every tool call comes back with "Storage API token is not provided." See Run the server yourself for what those values are.

LangChain has an official MCP adapter, langchain-mcp-adapters. Point its MultiServerMCPClient at the server and load the tools into your agent:

import asyncio
from langchain_mcp_adapters.client import MultiServerMCPClient
async def main():
client = MultiServerMCPClient(
{
"keboola": {
"transport": "streamable_http",
"url": "https://mcp.<YOUR_REGION>.keboola.com/mcp",
"headers": {"Authorization": "Bearer YOUR_OAUTH_ACCESS_TOKEN"},
}
}
)
tools = await client.get_tools()
# pass `tools` to your LangChain / LangGraph agent
asyncio.run(main())

The hosted endpoints enforce OAuth — an unauthenticated call returns 401. Either carry an access token as shown, or point the client at a server you run yourself, which authenticates with a Storage token instead.

  • CrewAI — use the native MCP support via MCPServerAdapter from crewai-tools[mcp] to expose the Keboola tools to your crew.

If you're writing your own client, the server speaks the standard MCP protocols over stdio and Streamable HTTP. Start from the Model Context Protocol documentation for client developers; for how the Keboola server itself can be run and configured, see its GitHub repository and Run the server yourself.

Next: Tools reference →

Ask Kai

Hi, I'm Kai — Keboola's AI assistant for the docs. Ask me anything and I'll answer from the documentation and cite the pages I use.

Kai is an AI and can make mistakes. Check the sources it links.