Skip to content

mcp-data-platform-v1.97.0

Choose a tag to compare

@github-actions github-actions released this 04 Jul 08:16
98b588b

A configuration "default-on" sweep (PR #788, issue #787) in the same spirit as v1.96.0's elicitation change. Several switches move from opt-in to on-by-default, and discovery-before-query becomes a real gate rather than an after-the-fact warning. This release contains behavior changes that affect existing deployments; read the upgrade notes below before rolling out.

⚠️ Breaking and behavior changes

1. Search-first gate is now a hard block, on by default

Previously, calling a query tool without prior discovery only appended a warning to the result; the query still ran. It is now a real gate: trino_query and trino_execute are refused with a SEARCH_REQUIRED error until a discovery tool (search, or any datahub_* tool) has been called at least once in the session. The tool handler does not run for a blocked call. Once discovery has happened, the gate stays open for the rest of that session.

  • Impact: any deployment that never configured workflow gating will start refusing trino_query / trino_execute until the agent calls search (or a datahub_* tool) once per session. Automations that query without discovering first will break.
  • Opt out: set workflow.require_search: false to disable gating entirely (no block, no hint).

2. Config key renamed: require_discovery_before_query becomes require_search

workflow.require_discovery_before_query is renamed to workflow.require_search (*bool, default enabled). This is a rename, not an alias: under non-strict parsing the old key is silently ignored, so update any config that set it.

3. Removed tuning rules

tuning.rules.require_datahub_check and tuning.rules.warn_on_deprecated are removed. The first is superseded by the real gate above; the second had no runtime effect (deprecation is already surfaced by the enrichment path). Remove these keys from your config.

4. Personas that run queries must grant search

A persona granted trino_* but neither search nor a datahub_* tool will now be gated out of queries, because it cannot reach any discovery tool. The shipped and documented example personas have been updated to grant search. Review your persona tool allow-lists: query-capable personas should include search.

5. Defaults now on where a database is available

Three switches flip from off-by-default to on-by-default (each is a tri-state *bool; set it to false to opt out):

Setting Old default New default
audit.log_tool_calls off on (when audit is enabled)
knowledge.apply.enabled off on (when a database is available)
admin.enabled off on
  • With a DB and no audit: block, tool calls are now logged (expect audit_logs growth). Set audit.log_tool_calls: false to keep audit on but skip per-call rows.
  • apply_knowledge registers by default when a database is present. On a database-but-no-DataHub deployment it registers with a no-op write path (logged), so tag/term writes are inert until a DataHub connection is configured.
  • The admin REST API route is mounted by default. It remains gated by admin-role auth; enabling mounts the route, it does not grant open access.

Under the hood

  • New MCPWorkflowGateMiddleware, modeled on the existing session gate: it short-circuits a blocked query with a self-describing SEARCH_REQUIRED error and never invokes the underlying tool handler. It sits inner to auth (so identity and the recorded tool call are available) and outer to audit and enrichment (so a blocked call never reaches them).
  • The old warn-after-execution machinery is removed: MCPRuleEnforcementMiddleware, its escalation and warning-count logic, and the require_datahub_check static hint.
  • Dead warn_on_deprecated rule machinery removed from the tuning package.
  • mountAdminAPI now backfills the path prefix and admin persona for configs injected directly (bypassing default resolution), so admin-on-by-default cannot collide with the root handler or lock admins out.
  • The default discovery set stays broad (search plus the datahub_* tools) so a hard gate cannot deadlock a persona granted datahub_* but not search.

Upgrade checklist

  1. Rename workflow.require_discovery_before_query to workflow.require_search, or remove it to accept the on-by-default gate.
  2. Remove tuning.rules.require_datahub_check and tuning.rules.warn_on_deprecated.
  3. Add search to the tool allow-list of any query-capable persona.
  4. If you do not want the gate, set workflow.require_search: false.
  5. To keep prior audit/admin/apply behavior, explicitly set audit.log_tool_calls: false, admin.enabled: false, and/or knowledge.apply.enabled: false.

Tests and docs

Integration tests over the real middleware chain prove a query is rejected before search, succeeds after search, and that a datahub_* tool opens the gate; tri-state tests cover each new default. CLAUDE.md, docs/server/configuration.md, docs/reference/middleware.md, docs/llms.txt, docs/llms-full.txt, and configs/platform.yaml are updated for the rename, the new defaults, and the hard-gate behavior.

Note

trino_export is intentionally not gated by default; add it to workflow.query_tools if you want export gated too.


Changelog

Features

  • 98b588b: feat(config): default-on sweep — search-first hard gate + audit/knowledge/admin defaults (#787) (#788) (@cjimti)

Installation

Homebrew (macOS)

brew install txn2/tap/mcp-data-platform

Claude Code CLI

claude mcp add mcp-data-platform -- mcp-data-platform

Docker

docker pull ghcr.io/txn2/mcp-data-platform:v1.97.0

Verification

All release artifacts are signed with Cosign. Verify with:

cosign verify-blob --bundle mcp-data-platform_1.97.0_linux_amd64.tar.gz.sigstore.json \
  mcp-data-platform_1.97.0_linux_amd64.tar.gz