MCP Server by keboola
Model Context Protocol (MCP) Server for the Keboola Platform
MCP Server is an open-source mcp server by keboola, written mainly in Python, with 85 GitHub stars and the MIT license. Its code was last updated Oct 30, 2026.
Scan summary: scanned Nov 5, 2026 at commit d56b7fb. Seen able to read environment and secrets, connect to databases, connect to the internet. Scan policy
d56b7fb · Nov 5, 2026Findings (11)
- highHigh. Something risky that needs a close look before you install.dependencies issueDetails are available to the maintainer after claiming this listing.
- mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.dnspython@2.8.0: 1 known vulnerabilityGHSA-45c3-73f7-pv4m
uv.lock - mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.joserfc@1.7.0: 2 known vulnerabilitiesGHSA-9pg5-8c7x-5hfx, GHSA-jpxq-7h8p-2q76
uv.lock - mediumMedium. Worth checking, often a vulnerable dependency or a setup problem.pyasn1@0.6.4: 4 known vulnerabilitiesGHSA-2qm8-x737-gmw5, GHSA-9m75-vc3g-4x39, GHSA-fm9c-5rcf-2q5p, GHSA-mm57-4v3p-rchx
uv.lock - lowLow. Minor, or common in normal tools. Shown for information.Possible example credential in docs/tests: generic-api-key
integtests/README.md:85 - lowLow. Minor, or common in normal tools. Shown for information.Possible example credential in docs/tests: generic-api-key
tests/router/helpers.py:18 - lowLow. Minor, or common in normal tools. Shown for information.Possible example credential in docs/tests: generic-api-key
tests/test_multiproject.py:676 - lowLow. Minor, or common in normal tools. Shown for information.Possible example credential in docs/tests: generic-api-key
tests/test_mcp.py:2548 - lowLow. Minor, or common in normal tools. Shown for information.Possible example credential in docs/tests: generic-api-key
tests/test_oauth.py:1008 - lowLow. Minor, or common in normal tools. Shown for information.No manifest declaring network access and environment variables (agent.json)
- lowLow. Minor, or common in normal tools. Shown for information.Contacted these domains while starting up (no manifest to compare against)pypi.org
Network activity
Tools exposed (56)
get_componentsRetrieves detailed information about one or more components by their IDs. RETURNS FOR EACH COMPONENT: - Component metadata (name, type, description) - Documentation and usage instructions - Configuration JSON schema (required for creating/updating configurations) - Links to component dashboard in K
get_configsRetrieves component configurations in the project with optional filtering. Can list summaries of multiple configurations (grouped by component) or retrieve full details for specific configurations. Returns a list of components, each containing: - Component metadata (ID, name, type, description) -
get_config_examplesRetrieves sample configuration examples for a specific component. USAGE: - Use before calling `create_config` or `add_config_row` to understand the expected parameters structure. - Use when you want to see example configurations for a specific component. EXAMPLES: - user_input: `Show me example co
create_configCreates a root component configuration using the specified name, component ID, configuration JSON, and description. Not for SQL transformations (`keboola.snowflake-transformation` / `keboola.google-bigquery-transformation`), data apps (`keboola.data-apps`) or flows — use the dedicated tools (see WHE
update_configUpdates an existing root component configuration by modifying its parameters, storage mappings, name or description. Not for SQL transformations (`keboola.snowflake-transformation` / `keboola.google-bigquery-transformation`), data apps (`keboola.data-apps`) or flows — use the dedicated tools (see WH
add_config_rowCreates a component configuration row in the specified configuration_id, using the specified name, component ID, configuration JSON, and description. BEFORE CALLING - REQUIRED STEPS: 1. Call `get_components([component_id])` to retrieve the component's `configuration_row_schema`. 2. Read `configurat
update_config_rowUpdates an existing component configuration row by modifying its parameters, storage mappings, name, or description. This tool allows PARTIAL parameter updates - you only need to provide the fields you want to change. All other fields will remain unchanged. Configuration rows are individual items w
run_sync_actionExecutes a synchronous action for a component configuration or a component row configuration. Effects depend on the component and action; execution can modify external resources. WHEN TO USE: - For finding available values of a configuration field - For validating already configured values (e.g. te
create_sql_transformationCreates an SQL transformation using the specified name, SQL query following the current SQL dialect, a detailed description, and a list of created table names. CONSIDERATIONS: - By default, SQL transformation must create at least one table to produce a result; omit only if the user explicitly ind
update_sql_transformationUpdates an existing SQL transformation configuration by modifying its SQL code, storage mappings, name or description. This tool allows PARTIAL parameter updates for transformation SQL blocks and code - you only need to provide the operations you want to perform. All other fields will remain unchan
modify_streamlit_data_appCreates or updates a Streamlit data app. Python-js is the default type for new data apps when you can run git: create them with `modify_python_js_data_app` (python-js source code is delivered only by `git push`). Use this tool to create a new app when you cannot run git or when the user asks for St
modify_python_js_data_appCreates or updates a python-js data app. Python-js is the default type for new data apps when you can run git: this tool only creates the configuration and the repository, and you deliver the source code by `git push`. Use `modify_streamlit_data_app` instead when you cannot run git or when the user
create_python_js_data_app_git_credentialMints a one-time HTTPS token on a python-js **prod** data app so the caller can clone, pull, and push to the app's managed git repo over HTTPS. **Always call against the prod app's configuration_id** — drafts have no managed repo of their own, so calling this on a draft fails. The prod app is the c
get_data_appsLists summaries of data apps in the project given the limit and offset or gets details of a data apps by providing their configuration IDs. WHEN NOT TO USE: - Do NOT list all data apps just to find one by name. Use `search` with item_types=["data-app"] instead. - Only list all data apps when you
deploy_data_appDeploys/redeploys a data app or stops a running data app in the Keboola environment asynchronously, given the action and the configuration ID. **MCP never runs git on your behalf.** All git work — clone, branch, commit, push, merge, branch-delete — is yours. This tool only triggers deploys against
delete_python_js_data_app_draftDeletes a python-js DRAFT data app — both the data-app instance (DSAPI) and its Storage configuration. **MCP never runs git on your behalf.** Deleting the feature branch on the remote is your job; this tool only tears down the draft config and its data-app instance. WHEN TO CALL: at the end of a p
get_data_app_preview_linkCreates a short-lived link that opens a dev-mode data app in your browser without the app's login. Use it to see or test a python-js **draft** deployed with `deploy_data_app(action='deploy', mode='dev')`. - Only a python-js draft reaches dev mode: a Streamlit app has no managed git repo and its ima
docs_queryAnswers a question using the Keboola documentation as a source.
create_flowCreates a new legacy (non-conditional) flow using `keboola.orchestrator`. PRE-REQUISITES: - Always use `get_flow_schema` with flow_type="keboola.orchestrator" and review `get_flow_examples` if unknown - Collect component configuration IDs for every task you include (for data apps, their `data_app_i
create_conditional_flowCreates a new conditional flow configuration using `keboola.flow`. PRE-REQUISITES: - Always use `get_flow_schema` with flow_type="keboola.flow" and review `get_flow_examples` if unknown - Gather component configuration IDs for all tasks you include (for data apps, their `data_app_id`) RULES: - `ph
get_flowsLists flows or retrieves full details for specific flows. WHEN NOT TO USE: - Do NOT call with `flow_ids=[]` just to find a flow by name. Use `search` with item_types=["flow"] instead. - Only use `flow_ids=[]` when you need a complete list of all flows in the project. OPTIONS: - `flow_ids=[]` → s
update_flowUpdates an existing flow configuration (either legacy `keboola.orchestrator` or conditional `keboola.flow`). PRE-REQUISITES: - Always use `get_flow_schema` (and `get_flow_examples`) for that flow type you want to update to follow the required structure and see the examples if unknown - Only pass `p
modify_flowUpdates an existing flow configuration (either legacy `keboola.orchestrator` or conditional `keboola.flow`) or manages schedules for this flow. PRE-REQUISITES: - Always use `get_flow_schema` (and `get_flow_examples`) for that flow type you want to update to follow the required structure and see the
get_flow_examplesRetrieves examples of valid flow configurations. PRE-REQUISITES: - Unknown examples for the target flow type: `keboola.flow` (conditional) or `keboola.orchestrator` (legacy) to help build the specific flow configuration by mirroring the structure/fields. RULES: - Conditional-flow examples require
get_flow_schemaReturns the JSON schema for the given flow type (markdown). PRE-REQUISITES: - Unknown schema for the target flow type: `keboola.flow` (conditional) or `keboola.orchestrator` (legacy) RULES: - Projects without conditional flows enabled cannot request `keboola.flow` schema - Use the returned schema
get_jobsRetrieves job execution information from the Keboola project. CONTEXT: Jobs in Keboola are execution records of components (extractors, transformations, writers, flows). Each job represents a single run with its status, timing, configuration, and results. TWO MODES OF OPERATION (controlled by job_
run_jobStarts a new job for a given component or transformation.
get_merge_requestsLists the project's merge requests, or returns the full detail of the given ones. A merge request promotes a development branch's configuration changes into production. Works from any session (production or branch). Without ids: summaries of all merge requests (title, state, who created it, review
create_merge_requestCreates a merge request for the CURRENT development branch into production. Available only from a development-branch chat: the source branch is the chat's branch and the target is production — there are no branch parameters. On production, tell the user to open a chat on the development branch and
update_merge_requestUpdates a merge request's title, description, reviewers or auto-merge setting. Omitted fields are kept. Use it to disarm auto-merge (`auto_merge='none'`) or to change reviewers. Arming auto-merge (`'immediately'` / `'scheduled'`) makes the backend merge without a further confirmation — confirm with
request_merge_request_reviewSends a merge request for review (author action). From a development-branch chat it works on that branch's merge request (merge_request_id optional); from a production chat pass merge_request_id. Rarely needed: merge_merge_request already skips the review when the project requires no approvals, so
approve_merge_requestApproves a merge request as a reviewer. Valid only while the merge request is `in_review` (the backend rejects it otherwise) and never for its creator. Projects with the default of 0 required approvals never enter `in_review`, so this is needed only when the project requires approvals. Works from a
request_merge_request_changesSends a merge request back to its author for changes (a reviewer's "reject"). The merge request returns to `development` and loses its approvals; it is NOT closed — the author fixes the branch and merges (or requests a review) again. Works from any session. Returns the merge request with its status
merge_merge_requestMerges a merge request into production and waits for the merge to finish. From a development-branch chat it merges that branch's merge request (merge_request_id optional); from a production chat pass merge_request_id (use this route when Kai is unavailable on the branch because its merge request is
get_merge_request_conflictsShows what blocks a merge request from merging: each conflicting configuration with its three-way diff and a per-path classification. From a development-branch chat it works on that branch's merge request (merge_request_id optional); from a production chat pass merge_request_id (use this route when
resolve_merge_request_conflictResolves ONE conflicting configuration of a merge request by re-anchoring the branch configuration onto the current production version with the chosen content. From a development-branch chat it works on that branch's merge request (merge_request_id optional); from a production chat pass merge_reque
create_oauth_urlGenerates an OAuth authorization URL for a Keboola component configuration. When using this tool, be very concise in your response. Just guide the user to click the authorization link. Note that this tool should be called specifically for the OAuth-requiring components after their configuration is
get_project_infoRetrieves structured information about the current project, including essential context and base instructions for working with it (e.g., transformations, components, workflows, and dependencies). Always call this tool at least once at the start of a conversation to establish the project context bef
update_project_descriptionUpdates the description of the current Keboola project.
get_accessible_projectsLists the Keboola projects the current login can access across the stack, each with its SQL dialect and organization. Only call this when a data tool call has actually failed asking you to confirm a project scope -- the session may already be pre-scoped (e.g. the user chose specific projects at `lo
set_project_scopeScopes the current session to a set of Keboola projects. Mints a scoped access token (narrowed to `project_ids`, optionally read-only) that is used for the rest of the conversation. Read-only tools then run against every scoped project in a single call; write/modify/delete tools take a `project_id`
create_projectCreates a brand-new Keboola project for a session that has no Keboola credentials yet, and signs this session in to it. Use this when the user has no Keboola project to work in -- it is how a first-time user gets started without leaving the conversation. Whether a given caller may create a project
find_component_idReturns list of component IDs that match the given query. WHEN TO USE: - Use when you want to find the component for a specific purpose. USAGE EXAMPLES: - user_input: "I am looking for a salesforce extractor component" → Returns a list of component IDs that match the query, ordered by relevance/
searchSearches for Keboola items (tables, buckets, components, configurations, transformations, flows, data-apps, etc.) in the current project and returns matching ID + metadata. This tool supports two complementary search types: 1) textual - Searches items by name, server-side (fast, independent of pro
search_semantic_contextSearches semantic models and semantic objects using regex patterns matched against their names, descriptions and stringified JSON attributes. Returns compact matches grouped by semantic model. Each match includes the semantic object type, the paths where the patterns matched, and compact object vie
get_semantic_contextLoads semantic objects grouped by semantic object type. CONSIDERATIONS: - If a selection has empty `ids`, the tool returns all objects of that type in compact form. - If a selection has non-empty `ids`, the tool returns only those specific objects with full attributes. - `semantic_model_ids` option
get_semantic_schemaReturns JSON schemas for the requested semantic object types. WHEN TO USE: - When you want to know the JSON schema of a semantic object type, e.g. before searching something specific.
validate_semantic_queryPerforms best-effort semantic validation of an SQL query against one or more semantic models and compares it with the expected semantic objects provided. RETURNS: - `validation_auto_detected`: semantic validation built from objects heuristically detected in the SQL - `validation_detected_from_expec
query_dataExecutes an SQL SELECT query to get the data from the underlying database. Only one read-only statement is accepted: SELECT or WITH ... SELECT, and on Snowflake also SHOW, DESCRIBE or EXPLAIN (BigQuery has none of these; query INFORMATION_SCHEMA instead). Anything else, including multiple statements
get_bucketsLists buckets or retrieves full details of specific buckets, including descriptions, lineage references (created/updated by), and links. WHEN NOT TO USE: - Do NOT call with `bucket_ids=[]` just to find a bucket by name. Use `search` with item_types=["bucket"] instead. - Only use `bucket_ids=[]` w
get_tablesLists tables in buckets or retrieves full details of specific tables, including fully qualified database name, column definitions, lineage references (created/updated by) and links. WHEN NOT TO USE: - Do NOT list tables across buckets just to find a table by name. Use `search` with item_types=["t
update_descriptionsUpdates the description for a Keboola storage item. This tool supports three item types, inferred from the provided item_id: - bucket: item_id = "in.c-bucket" - table: item_id = "in.c-bucket.table" - column: item_id = "in.c-bucket.table.column" Usage examples (payload uses a list of DescriptionUp
get_shared_bucketsLists buckets shared with this project by other Keboola projects that are not necessarily linked into this project yet (the Data Catalog "Shared with me" view). Use this to answer "what data is shared with this project?" or "what could I link?" — `get_buckets` only returns buckets already in this pr
link_shared_bucketLinks a bucket shared with this project (found via `get_shared_buckets`) into this project as a new local bucket, so its tables become directly queryable/joinable like any other bucket in the project. Not idempotent: calling this again with the same `target_bucket_name` fails once that name already
get_streamsRetrieves the Data Streams in the project: sources receiving events and the sinks writing them to tables. Data Streams receive events over HTTP (webhooks, apps) or OTLP (OpenTelemetry logs/metrics/traces) and store them in Storage tables in near real time, without any component configuration. Each
create_streamCreates a Data Stream: a source with an endpoint receiving events and the sinks storing them in tables. - source_type="http": one sink into `table_id` with the given `columns`. Send events as HTTP POST requests (any body, JSON recommended) to the returned `endpoint_url`. - source_type="otlp": thr
Automated result for the commit shown. See our scan policy. View the scan log
Maintainers can claim the listing to rescan, or dispute a result.
MCP Server alternatives
View more →Similar mcp servers in Other, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.
| Name | Stars | Licence | Last updated | Scan |
|---|---|---|---|---|
| MCP Server (this page) keboola | 85 | MIT | Oct 30, 2026 | Scanned, no flagged issues |
| Github MCP Server github | 34k | MIT | Oct 30, 2026 | Scanned, no flagged issues |
| Fastapi MCP tadata-org | 12k | MIT | Nov 24, 2025 | Scanned, no flagged issues |
| GhidraMCP LaurieWired | 12k | Apache-2.0 | Oct 10, 2026 | Scanned, no flagged issues |
| MCP Go mark3labs | 9.2k | MIT | Oct 30, 2026 | Scanned, no flagged issues |
| Git MCP idosal | 8.5k | Apache-2.0 | May 8, 2026 | Scanned, no flagged issues |