mcp-data-platform-v0.26.0
Highlights
This release fixes a critical bug where multiple Trino connections were non-deterministically routed, causing queries to hit the wrong catalog. It also adds connection descriptions, mandatory connection selection for multi-instance deployments, and correct list_connections expansion.
Bug Fixes
Deterministic Trino multi-connection routing (#146)
When multiple Trino instances were configured (e.g., warehouse, elasticsearch, cassandra), the platform created N separate toolkit objects that each registered the same 7 tool names. Due to Go map iteration order, one random toolkit "owned" all tools per process start — silently misrouting queries to the wrong catalog.
Root cause: RegisterTools calls AddTool with the same names from each toolkit. Last writer wins, and the winner is non-deterministic.
Fix: Replaced N separate toolkits with a single toolkit backed by multiserver.Manager from mcp-trino. The manager routes each tool call to the correct backend based on the connection parameter.
New Features
Connection descriptions
Trino instances now support a description field in the platform YAML config. Descriptions are surfaced in list_connections output and in error messages, helping LLMs understand what each connection is for.
toolkits:
trino:
instances:
warehouse:
host: trino.example.com
catalog: hive
description: "Production data warehouse for batch analytics and reporting"
elasticsearch:
host: trino.example.com
catalog: elasticsearch
description: "Elasticsearch for transactional sales data"Mandatory connection selection
When multiple Trino connections are configured and a tool call omits the connection parameter, the request is now rejected with a descriptive error listing all available connections and their descriptions. Previously, the query silently routed to the default — which was wrong because the LLM had no way to know it needed to choose.
Error: multiple Trino connections are configured — you must specify the 'connection' parameter.
Available connections:
- cassandra: Real-time event store
- elasticsearch: Transactional sales data
- warehouse (default): Production data warehouse for batch analytics
Single-instance deployments are unaffected — the connection parameter remains optional.
Expanded list_connections output
The list_connections tool now correctly lists all Trino connections with their descriptions and default status. Previously it showed only 1 entry for the single Trino toolkit.
{
"connections": [
{"kind": "trino", "name": "warehouse", "connection": "warehouse", "description": "Production data warehouse", "is_default": true},
{"kind": "trino", "name": "elasticsearch", "connection": "elasticsearch", "description": "Sales data"},
{"kind": "datahub", "name": "primary", "connection": "primary-datahub"}
],
"count": 3
}Toolkits implementing the new ConnectionLister interface are expanded into individual entries. Non-lister toolkits (DataHub, S3) fall through to the existing single-entry behavior.
Accurate audit connection logging
Audit logs now record the actual target connection from the tool call's connection argument, not the toolkit's default connection name.
Breaking Changes
None. All changes are backward compatible. The connection parameter is only required when >1 Trino instance is configured.
Technical Details
- New
AggregateToolkitFactorypattern in the registry for toolkits that manage multiple connections internally - New
pkg/toolkitshared types package (ConnectionDetail,ConnectionLister) to avoid import cycles ConnectionRequiredMiddlewareuses reflection (FieldByName("Connection")) to extract the connection from any Trino tool input type without coupling to all 7 input structs- Connection list in error messages is sorted alphabetically for determinism
- 19 files changed, +1,819 / -102 lines
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.26.0Verification
All release artifacts are signed with Cosign. Verify with:
cosign verify-blob --bundle mcp-data-platform_0.26.0_linux_amd64.tar.gz.sigstore.json \
mcp-data-platform_0.26.0_linux_amd64.tar.gz