mcp-data-platform-v0.22.0
What's New
Read-Only trino_query and New trino_execute Tool
The platform now ships with mcp-trino v0.8.0, which splits SQL execution into two tools with clear safety semantics:
| Tool | Purpose | MCP Annotation | Client Behavior |
|---|---|---|---|
trino_query |
Read-only SQL (SELECT, SHOW, DESCRIBE) | ReadOnlyHint: true |
Auto-approve |
trino_execute |
Any SQL including writes (INSERT, UPDATE, DELETE, CREATE, DROP) | DestructiveHint: true |
Prompt for confirmation |
Write SQL sent to trino_query is rejected before reaching Trino with a clear error directing users to trino_execute.
Three Layers of Write Control
- Tool semantics —
trino_queryalways rejects writes;trino_executealways allows them - Instance-level ReadOnly — when
read_only: true, the platform's interceptor blocks writes on both tools - Persona allow/deny — deny
trino_executefor read-only personas, allow it for write personas
Persona Examples
Analyst with full read-write access:
analyst:
tools:
allow: ["trino_*", "datahub_*"]Viewer with read-only query access:
viewer:
tools:
allow: ["trino_query", "trino_list_*", "trino_describe_*", "datahub_*"]
deny: ["trino_execute"]Existing personas using trino_* wildcards automatically pick up trino_execute with no config changes.
ReadOnlyInterceptor Simplified
The platform's ReadOnlyInterceptor now delegates to upstream trinotools.IsWriteSQL() instead of maintaining a duplicate regex and keyword list.
Breaking Changes
trino_querynow rejects write SQL that it previously accepted. Workflows usingtrino_queryfor writes must switch totrino_execute.- The platform registers 8 Trino tools (was 7).
Tools()returnstrino_executein the list.
Files Changed
| Area | Files | Change |
|---|---|---|
| Code | go.mod |
mcp-trino v0.6.2 → v0.8.0 |
| Code | pkg/toolkits/trino/toolkit.go |
Register ToolExecute in RegisterTools() and Tools() |
| Code | pkg/toolkits/trino/readonly.go |
Delegate to upstream IsWriteSQL() |
| Docs | 12 documentation files | Added trino_execute to tool references, API specs, persona examples, deny lists |
| Config | 4 mcpapps configs | Added trino_execute to query-results app tool lists |
Upgrading
No configuration changes required for most deployments. If your personas use trino_* wildcards, trino_execute is automatically included.
If you have personas that should NOT have write access, explicitly deny trino_execute:
read_only_persona:
tools:
allow: ["trino_query", "trino_list_*", "datahub_*"]
deny: ["trino_execute"]Changelog
- feat: upgrade mcp-trino to v0.8.0, register trino_execute tool (#115)
Full diff: v0.21.1...v0.22.0
Installation
Homebrew (macOS)
brew install txn2/tap/mcp-data-platformClaude Code CLI
claude mcp add mcp-data-platform -- mcp-data-platformDocker
docker pull ghcr.io/txn2/mcp-data-platform:v0.22.0Verification
All release artifacts are signed with Cosign. Verify with:
cosign verify-blob --bundle mcp-data-platform_0.22.0_linux_amd64.tar.gz.sigstore.json \
mcp-data-platform_0.22.0_linux_amd64.tar.gz