MCP Server by keboola

by keboola• 85•• Scanned•Claim this listing•Request removal
Otherdata platformetl pipelinekeboola platformmcpmcp server

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

Scanned
Full scan at d56b7fb · Nov 5, 2026
Scanned Builds Boots Reproducible
Static code scanpass
Secrets scanpass
Dependency audit16 known vulnerabilitiesfail
Manifestnonewarn
Buildpass
Boot & handshake56 toolspass
Network egressfail
Reproducible (×3)pass

Findings (11)

  • high
    dependencies issue
    Details are available to the maintainer after claiming this listing.
  • medium
    dnspython@2.8.0: 1 known vulnerability
    GHSA-45c3-73f7-pv4m
    uv.lock
  • medium
    joserfc@1.7.0: 2 known vulnerabilities
    GHSA-9pg5-8c7x-5hfx, GHSA-jpxq-7h8p-2q76
    uv.lock
  • medium
    pyasn1@0.6.4: 4 known vulnerabilities
    GHSA-2qm8-x737-gmw5, GHSA-9m75-vc3g-4x39, GHSA-fm9c-5rcf-2q5p, GHSA-mm57-4v3p-rchx
    uv.lock
  • low
    Possible example credential in docs/tests: generic-api-key
    integtests/README.md:85
  • low
    Possible example credential in docs/tests: generic-api-key
    tests/router/helpers.py:18
  • low
    Possible example credential in docs/tests: generic-api-key
    tests/test_multiproject.py:676
  • low
    Possible example credential in docs/tests: generic-api-key
    tests/test_mcp.py:2548
  • low
    Possible example credential in docs/tests: generic-api-key
    tests/test_oauth.py:1008
  • low
    No manifest declaring network access and environment variables (agent.json)
  • low
    Contacted these domains while starting up (no manifest to compare against)
    pypi.org

Network activity

During install
files.pythonhosted.orgpypi.org
While running
pypi.org

Tools exposed (56)

  • get_components

    Retrieves 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_configs

    Retrieves 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_examples

    Retrieves 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_config

    Creates 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_config

    Updates 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_row

    Creates 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_row

    Updates 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_action

    Executes 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_transformation

    Creates 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_transformation

    Updates 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_app

    Creates 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_app

    Creates 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_credential

    Mints 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_apps

    Lists 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_app

    Deploys/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_draft

    Deletes 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_link

    Creates 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_query

    Answers a question using the Keboola documentation as a source.

  • create_flow

    Creates 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_flow

    Creates 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_flows

    Lists 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_flow

    Updates 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_flow

    Updates 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_examples

    Retrieves 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_schema

    Returns 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_jobs

    Retrieves 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_job

    Starts a new job for a given component or transformation.

  • get_merge_requests

    Lists 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_request

    Creates 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_request

    Updates 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_review

    Sends 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_request

    Approves 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_changes

    Sends 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_request

    Merges 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_conflicts

    Shows 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_conflict

    Resolves 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_url

    Generates 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_info

    Retrieves 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_description

    Updates the description of the current Keboola project.

  • get_accessible_projects

    Lists 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_scope

    Scopes 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_project

    Creates 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_id

    Returns 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/

  • search

    Searches 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_context

    Searches 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_context

    Loads 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_schema

    Returns 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_query

    Performs 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_data

    Executes 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_buckets

    Lists 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_tables

    Lists 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_descriptions

    Updates 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_buckets

    Lists 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_bucket

    Links 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_streams

    Retrieves 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_stream

    Creates 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.

NameStarsLicenceLast updatedScan
MCP Server (this page)
keboola
85MITOct 30, 2026Scanned, no flagged issues
Github MCP Server
github
34kMITOct 30, 2026Scanned, no flagged issues
Fastapi MCP
tadata-org
12kMITNov 24, 2025Scanned, no flagged issues
GhidraMCP
LaurieWired
12kApache-2.0Oct 10, 2026Scanned, no flagged issues
MCP Go
mark3labs
9.2kMITOct 30, 2026Scanned, no flagged issues
Git MCP
idosal
8.5kApache-2.0May 8, 2026Scanned, no flagged issues