Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

com.keboola/mcp

PYPI · KEBOOLA-MCP-SERVER · 2 COMPONENTS · SCANNED SEP 21

Connect your AI assistants to Keboola and expose your data, transformations, SQL queries, ...

+27 this week 61 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security37
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Install-script risk not yet assessed.Unverified
  • 2 of 52 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency32
Schema Quality & AI Usability73
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 26108 tokens (~593/item across 44 items; 44 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
  • Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (98% of tools); any adoption earns full credit.Pass
Tool Safety88
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 2 of 4 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "run_sync_action" implies "execute" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Partial
  • An AI judge read all 45 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the com.keboola/mcp server?

com.keboola/mcp runs locally as a PyPI package, launched with uvx keboola-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · keboola-mcp-server

# add to Claude Code
claude mcp add com-keboola-mcp -- uvx keboola-mcp-server
// .cursor/mcp.json
{
  "mcpServers": {
    "com-keboola-mcp": {
      "command": "uvx",
      "args": [
        "keboola-mcp-server"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-keboola-mcp": {
      "command": "uvx",
      "args": [
        "keboola-mcp-server"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add com-keboola-mcp -- uvx keboola-mcp-server
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-keboola-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "keboola-mcp-server"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-keboola-mcp --command uvx --arg keboola-mcp-server
# ~/.hermes/config.yaml
mcp_servers:
  com-keboola-mcp:
    command: "uvx"
    args: ["keboola-mcp-server"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-keboola-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "keboola-mcp-server"
      ]
    }
  }
}
# add to Vellum
assistant mcp add com-keboola-mcp -t stdio -c uvx -a keboola-mcp-server
// mcp.json
{
  "mcpServers": {
    "com-keboola-mcp": {
      "command": "uvx",
      "args": [
        "keboola-mcp-server"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 21 Sept 26 +10
    • Malware scan: pass → unverified security
    • Injection markers: unverified → pass security
    • First check of Judged manipulation: pass security
    • Tool coverage: unverified → 100 functional
    • Schema quality: unverified → 100 functional
    • First check of Schema quality: fail functional
    • First check of Schema quality: excellent functional
    • First check of Schema quality: fail functional
    • First check of Destructive annotations: 50 functional
    • First check of Tool coverage: 98 functional
    • First check of Tool coverage: 100 functional
    • MCP protocol: Implements a current MCP spec version (2026-07-28). functional
    • Stability: pass → 0.90 functional
    • Package version: 1.81.1 → 1.86.0 functional
  • 20 Sept 26 +1
    • Stability: 0.97 → pass security
  • 19 Sept 26 −1
    • Stability: pass → 0.97 functional
  • 18 Sept 26 +1
    • Stability: 0.97 → pass security
  • 16 Sept 26 +1
    • Package version: 1.80.1 → 1.81.1 functional
  • 15 Sept 26 +15
    • Malware scan: unverified → pass security
  • 14 Sept 26 −14
    • Malware scan: pass → unverified security
  • 12 Sept 26 −3
    • Stability: pass → 0.80 functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Analysed pypi/keboola-mcp-server@1.86.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Dependencies 52 packages
Packages resolved 52
Stale 1
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 44 exposed · ~25,755 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
update_config ~1,152

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 WHEN NOT TO USE). This IS the tool for updating Python (`keboola.python-transformation-v2`), R (`keboola.r-transformation-v2`) and DuckDB (`keboola.duckdb-transformation`) transformations. This tool allows PARTIAL parameter updates - you only need to provide the fields you want to change. All other fields will remain unchanged. Use this tool when modifying existing configurations; for configuration rows, use update_config_row instead. WHEN TO USE: - Modifying configuration parameters (credentials, settings, API keys, etc.) - Updating storage mappings (input/output tables or files) - Changing configuration name or description - Any combination of the above WHEN NOT TO USE: - `keboola.orchestrator` / `keboola.flow` → use `update_flow` - `keboola.data-apps` → use `modify_python_js_data_app` / `modify_streamlit_data_app` / `deploy_data_app` - `keboola.snowflake-transformation` / `keboola.google-bigquery-transformation` → use `update_sql_transformation` PREREQUISITES: - Configuration must already exist (use create_config for new configurations) - You must know both component_id and configuration_id - For parameter updates: Review the component's root_configuration_schema using get_components. - For storage updates: Ensure mappings are valid for the component type IMPORTANT CONSIDERATIONS: - Parameter updates are PARTIAL - only specify fields you want to change - parameter_updates supports granular operations: set keys, replace strings, remove keys, or append to lists - Parameters must conform to the component's root_configuration_schema - Validate schemas before calling: use get_components to retrieve root_configuration_schema - For row-based components, this updates the R…

NameTypeReqDescription
change_descriptionstringyesA clear, human-readable summary of what changed in this update. Be specific: e.g., "Updated API key", "Added customers table to input mapping".
component_idstringyesThe ID of the component the configuration belongs to.
configuration_idstringyesThe ID of the configuration to update.
descriptionstringNew detailed description for the configuration. Only provide if changing the description. Should explain the purpose, data sources, and behavior of this configuration. Leave empty to preserve the ori…
folderFolder name to organize this configuration in the Keboola UI. Pass an empty string to remove an existing folder assignment. Existing folder names are returned in the response change_summary when no f…
namestringNew name for the configuration. Only provide if changing the name. Name should be short (typically under 50 characters) and descriptive.
parameter_updatesList of granular parameter update operations to apply. Each operation (set, str_replace, remove, list_append) modifies a specific value using JSONPath notation. Only provide if updating parameters -…
processors_afterThe list of processors that will run after the configured component row runs.
processors_beforeThe list of processors that will run before the configured component row runs.
project_idTarget Keboola project id for this write. Required when the session is scoped to 2+ projects; optional (defaults to the single scoped project) otherwise.
runtimeRuntime settings such as "parallelism" (parallel row processing) and backend configuration. Only provide if updating runtime settings - this replaces the ENTIRE runtime configuration. Leave unfilled…
storageComplete storage configuration containing input/output table and file mappings. Only provide if updating storage mappings - this replaces the ENTIRE storage configuration. When to use: - Adding/rem…
variablesVariable definitions for this configuration. Provide a non-empty list to create or replace all variable definitions. Provide an empty list ([]) to remove all variables. Omit (None) to leave existing…
NameTypeReqDescription
change_summaryOptional summary of the change to update the agent's context.
component_idstringyesThe ID of the component.
configuration_idstringyesThe ID of the configuration.
descriptionstringyesThe description of the configuration.
linksarrayyesThe links relevant to the configuration.
successbooleanIndicates if the operation succeeded.
timestampstringyesThe timestamp of the operation.
versionintegeryesThe version number of the configuration.

No examples provided.

update_config_row ~970

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 within a configuration, often representing separate data sources, tables, or endpoints that share the same component type and parent configuration settings. WHEN TO USE: - Modifying row-specific parameters (table sources, filters, credentials, etc.) - Updating storage mappings for a specific row (input/output tables or files) - Changing row name or description - Any combination of the above WHEN NOT TO USE: - `keboola.orchestrator` / `keboola.flow` → use `update_flow` - `keboola.data-apps` → use `modify_python_js_data_app` / `modify_streamlit_data_app` / `deploy_data_app` - `keboola.snowflake-transformation` / `keboola.google-bigquery-transformation` → use `update_sql_transformation` PREREQUISITES: - The configuration row must already exist (use add_config_row for new rows) - You must know component_id, configuration_id, and configuration_row_id - For parameter updates: Review the component's row_configuration_schema using get_components - For storage updates: Ensure mappings are valid for row-level storage IMPORTANT CONSIDERATIONS: - Parameter updates are PARTIAL - only specify fields you want to change - parameter_updates supports granular operations: set individual keys, replace strings, or remove keys - Parameters must conform to the component's row_configuration_schema (not root schema) - Validate schemas before calling: use get_components to retrieve row_configuration_schema - Each row operates independently - changes to one row don't affect others - Row-level storage is separate from root-level storage configuration WORKFLOW: 1. Retrieve current configuration using get_configs to see existing rows 2. Identify the specific row to modify by its configuration_row…

NameTypeReqDescription
change_descriptionstringyesA clear, human-readable summary of what changed in this row update. Be specific.
component_idstringyesThe ID of the component the configuration belongs to.
configuration_idstringyesThe ID of the parent configuration containing the row to update.
configuration_row_idstringyesThe ID of the specific configuration row to update.
descriptionstringNew detailed description for the configuration row. Only provide if changing the description. Should explain the specific purpose and behavior of this individual row.
is_disabledEnable or disable the configuration row. Set to True to disable execution (config row won't run), False to enable execution (config row will run). Only provide if changing the status, leave as null t…
namestringNew name for the configuration row. Only provide if changing the name. Name should be short (typically under 50 characters) and descriptive of this specific row.
parameter_updatesList of granular parameter update operations to apply to this row. Each operation (set, str_replace, remove, list_append) modifies a specific parameter using JSONPath notation. Only provide if updati…
processors_afterThe list of processors that will run after the configured component row runs.
processors_beforeThe list of processors that will run before the configured component row runs.
project_idTarget Keboola project id for this write. Required when the session is scoped to 2+ projects; optional (defaults to the single scoped project) otherwise.
storageComplete storage configuration for this row containing input/output table and file mappings. Only provide if updating storage mappings - this replaces the ENTIRE storage configuration for this row.…
NameTypeReqDescription
change_summaryOptional summary of the change to update the agent's context.
component_idstringyesThe ID of the component.
configuration_idstringyesThe ID of the configuration.
descriptionstringyesThe description of the configuration.
linksarrayyesThe links relevant to the configuration.
successbooleanIndicates if the operation succeeded.
timestampstringyesThe timestamp of the operation.
versionintegeryesThe version number of the configuration.

No examples provided.

update_descriptions ~241

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 DescriptionUpdate objects): - Update a bucket: updates=[DescriptionUpdate(item_id="in.c-my-bucket", description="New bucket description")] - Update a table: updates=[DescriptionUpdate(item_id="in.c-my-bucket.my-table", description="New table description")] - Update a column: updates=[DescriptionUpdate(item_id="in.c-my-bucket.my-table.my_column", description="New column description")]

NameTypeReqDescription
project_idTarget Keboola project id for this write. Required when the session is scoped to 2+ projects; optional (defaults to the single scoped project) otherwise.
updatesarrayyesList of DescriptionUpdate objects with storage item_id and new description. Examples: "bucket_id", "bucket_id.table_id", "bucket_id.table_id.column_name"
NameTypeReqDescription
failedintegeryesNumber of failed updates.
resultsarrayyesResults for each update attempt.
successfulintegeryesNumber of successful updates.
total_processedintegeryesTotal number of items processed.

No examples provided.

update_flow ~623

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 `phases`/`tasks` when you want to replace them; omit to keep the existing ones unchanged RULES (ALL FLOWS): - `flow_type` must match the stored component id of the flow; do not switch flow types during update - `phases` and `tasks` must follow the schema for the selected flow type; include at least `id` and `name` - Tasks must reference existing component configurations; keep dependencies consistent - Always provide a clear `change_description` and surface any links returned in the response to the user CONDITIONAL FLOWS (`keboola.flow`): - Maintain a single entry phase and ensure every phase is reachable; connect phases via `next` transitions - No cycles or dangling phases; failed tasks already stop the flow, so only add retries/conditions if requested LEGACY FLOWS (`keboola.orchestrator`): - Phases run sequentially; tasks inside a phase run in parallel; `dependsOn` references other phase ids - Use `continueOnFailure` or best-effort patterns only when the user explicitly asks for them WHEN TO USE: - Renaming a flow, updating descriptions, adding/removing phases or tasks, adjusting dependencies, or enabling/disabling flow execution

NameTypeReqDescription
change_descriptionstringyesDescription of changes made.
configuration_idstringyesID of the flow configuration.
descriptionstringUpdated flow description. Only updated if provided.
flow_typestringyesThe type of flow to update. Use "keboola.flow" for conditional flows or "keboola.orchestrator" for legacy flows. This MUST match the existing flow type.
folderFolder name to organize this flow in the Keboola UI. Pass an empty string to remove an existing folder assignment. Existing folder names are returned in the response change_summary when no folder is…
is_disabledEnable or disable the flow. Set to True to disable execution (flow won't run), False to enable execution (flow will run). Only provide if changing the status, leave as null to preserve current state.
namestringUpdated flow name. Only updated if provided.
phasesUpdated list of phase definitions.
project_idTarget Keboola project id for this write. Required when the session is scoped to 2+ projects; optional (defaults to the single scoped project) otherwise.
tasksUpdated list of task definitions.
NameTypeReqDescription
change_summaryAdditional notes or hints about the operation.
component_idstringyesThe ID of the component.
configuration_idstringyesThe configuration ID of the flow.
descriptionstringyesThe description of the Flow.
linksarrayyesThe links relevant to the flow.
responseThe response message from the operation.
successbooleanIndicates if the operation succeeded.
timestampstringyesThe timestamp of the operation.
versionintegeryesThe version number of the flow configuration.

No examples provided.

update_project_description ~68

Updates the description of the current Keboola project.

NameTypeReqDescription
descriptionstringyesThe new project description text.
project_idTarget Keboola project id for this write. Required when the session is scoped to 2+ projects; optional (defaults to the single scoped project) otherwise.

No output schema declared.

No examples provided.

update_sql_transformation ~2,642

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 unchanged. Use this for modifying SQL transformations created with create_sql_transformation. WHEN TO USE: - SQL transformations only (Snowflake/BigQuery); use update_config for Python/R/DuckDB transformations - Modifying SQL queries in transformation (add/edit/remove SQL statements) - Updating transformation block or code block names - Changing input/output table mappings for the transformation - Updating the transformation name or description - Any combination of the above PREREQUISITES: - Transformation must already exist (use create_sql_transformation for new transformations) - You must know the configuration_id of the transformation - SQL dialect is determined automatically from the workspace - CRITICAL: Use get_configs first to see the current transformation structure and get block_id/code_id values TRANSFORMATION STRUCTURE: A transformation has this hierarchy: transformation └─ blocks[] - List of transformation blocks (each has a unique block_id) └─ block.name - Descriptive name for the block └─ block.codes[] - List of code blocks within the block (each has a unique code_id) └─ code.name - Descriptive name for the code block └─ code.script - SQL script (string with SQL statements) Example structure from get_configs: { "blocks": [ { "id": "b0", ← block_id needed for operations (format: b{index}) "name": "Data Preparation", "codes": [ { "id": "b0.c0", ← code_id needed for operations (format: b{block_index}.c{code_index}) "name": "Load customers", "script": "SELECT * FROM customers WHERE status = 'active';" } ] } ] } PARAMETER UPDATE OPERATIONS: All operat…

NameTypeReqDescription
change_descriptionstringyesA clear, human-readable summary of what changed in this transformation update. Be specific: e.g., "Added JOIN with customers table", "Updated WHERE clause to filter active records".
configuration_idstringyesThe ID of the transformation configuration to update.
descriptionstringNew detailed description for the transformation. Only provide if changing the description. Should explain what the transformation does, data sources, and business logic. Leave empty to preserve the o…
folderFolder name to organize this transformation in the Keboola UI. Pass an empty string to remove an existing folder assignment. Existing folder names are returned in the response change_summary when no…
namestringNew name for the transformation. Only provide if changing the name. Name should be short (typically under 50 characters) and descriptive.
parameter_updatesList of operations to apply to the transformation structure (blocks, codes, SQL scripts). Each operation modifies specific elements using block_id and code_id identifiers. Only provide if updating SQ…
project_idTarget Keboola project id for this write. Required when the session is scoped to 2+ projects; optional (defaults to the single scoped project) otherwise.
storageComplete storage configuration for transformation input/output table mappings. Only provide if updating storage mappings - this replaces the ENTIRE storage configuration. When to use: - Adding/remo…
variablesVariable definitions for this transformation. Provide a non-empty list to create or replace all variable definitions. Provide an empty list ([]) to remove all variables. Omit (None) to leave existing…
NameTypeReqDescription
change_summaryOptional summary of the change to update the agent's context.
component_idstringyesThe ID of the component.
configuration_idstringyesThe ID of the configuration.
descriptionstringyesThe description of the configuration.
linksarrayyesThe links relevant to the configuration.
successbooleanIndicates if the operation succeeded.
timestampstringyesThe timestamp of the operation.
versionintegeryesThe version number of the configuration.

No examples provided.

validate_semantic_query ~926

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_expected`: semantic validation built only from explicitly provided expected object IDs - expected semantic objects that were matched or missing in the auto-detected result - unexpected auto-detected objects outside the expected semantic scope LIMITATIONS: - Detection is heuristic and based on string matching over SQL and semantic metadata. - The tool does not parse SQL semantically and does not execute the query. - Auto-detected objects, missing objects, and relationship matches may therefore be imperfect. - Use the result as a best-effort semantic check, not as a formal proof that the query is correct. CONSIDERATIONS: - Prefer calling this tool before executing any SQL that touches semantic objects. - This tool confirms the SQL dialect, surfaces semantic constraint violations, and provides post-execution checks. - Only proceed to query_data once this tool returns valid=True and violations is empty. If violations are found, fix the query first or consider the limitations of this tool. - Entries under `semantic_models` carry `scope`/`project_id`/`source_project_id`/ `target_project_ids` -- see `get_semantic_context`'s CONSIDERATIONS for what they mean. A "targeted"/"organization"-scope model does not guarantee the query is actually runnable from every project that can see it; this tool validates against the semantic layer, not against whether the underlying Storage tables are reachable here. Pass `resolve_data_location=True` to check that directly for every used dataset instead of inferring it from scope alone. WHEN TO USE: - Before generating or approving a query that should follow a semantic model. - When you want to validate a SQL query against the semantic objects befo…

NameTypeReqDescription
expected_semantic_objectsarrayOptional semantic object selections that define the expected semantic scope of the query. These expectations are compared with the objects actually detected in the SQL. Use `ids` when you want to ass…
query_refOpaque correlation token chosen by the agent. Pass the SAME value that was sent to query_data so the client can pair this validation with its result. Purely a passthrough; it does not affect executio…
resolve_data_locationbooleanFor each dataset the SQL is detected to use, resolve whether its underlying Storage table is actually reachable from this project and, if not, add a warning-severity violation explaining why. Off by…
semantic_model_idsarrayyesOne or more semantic model IDs against which the SQL should be validated. Contexts from all models are merged into a single universe for object detection. Constraint evaluation is performed per model…
sql_querystringyesSQL query that should be checked against the semantic layer. The query is not executed; the tool performs best-effort semantic detection and rule validation using heuristic string matching, so the de…
NameTypeReqDescription
matched_expected_objectsarrayExpected semantic objects that were also detected in the SQL.
missing_expected_objectsarrayExpected semantic objects that were not detected in the SQL.
query_refCorrelation token echoed from the request.
unexpected_detected_objectsarrayDetected semantic objects that fall outside the expected semantic scope.
validation_auto_detectedobjectyesValidation result built from semantic objects auto-detected from the SQL query.
validation_detected_from_expectedValidation result built only from explicitly provided expected semantic object IDs.

No examples provided.

Common questions

What is the com.keboola/mcp server?

com.keboola/mcp is listed in the public MCP registry as com.keboola/mcp. Connect your AI assistants to Keboola and expose your data, transformations, SQL queries, ... This page covers its PyPI package (keboola-mcp-server).

Is the com.keboola/mcp server safe to use?

com.keboola/mcp scores 61 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the com.keboola/mcp server expose?

com.keboola/mcp exposes 44 tools: get_components, get_configs, get_config_examples, create_config, update_config, and 39 more. Their descriptions and schemas cost roughly 25,755 tokens of context every time the server is loaded.

Is the com.keboola/mcp server still maintained?

com.keboola/mcp is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.