Added
- Data products. A curated, documented bundle of tables and views with an
owner, tags, and per-asset descriptions, managed from a new Data products
nav view. AI clients find them by keyword through thesearch_data_products
andget_data_productMCP tools, which is how an agent locates the right data
instead of guessing from raw catalog metadata. Publishing a product describes
data — it never widens who can read it, and products the caller has no
cluster or catalog grant for are not listed. - Parameterized query templates. An operator publishes named SQL with typed
{{placeholders}}; MCP clients call it throughlist_query_templates/
run_query_templatesupplying values only, never SQL. Values are validated by
declared type (string,number,boolean,date,identifier) and
rendered as escaped literals, and the finished statement still passes the
read-only check. A template whose SQL isn't read-only once filled in is
rejected when it is saved, not when an agent calls it. get_query_resultMCP tool.run_querystops polling after ~12s and
returnsstatus: "running"with aquery_id; that id can now be redeemed to
keep waiting, instead of stranding the caller.- OAuth discovery for MCP. The server publishes RFC 9728 metadata at
/.well-known/oauth-protected-resource(and the/mcp-suffixed form), and an
unauthenticated/mcpcall now answers with aWWW-Authenticatechallenge
pointing at it. Clients that discover authentication rather than accept a
pasted token can connect; the configured SSO issuer is advertised as the
authorization server. MANAGE_DATA_PRODUCTSprivilege, gating both curation surfaces above.
The seededadminrole is now kept in sync with the full privilege list, so a
database created before a privilege existed picks it up on startup.- MCP has its own documentation topic. The MCP screen is visible to every
user, but its documentation lived inside the admin-only Automation & API
topic, so an analyst could open the screen and read nothing about it. MCP
is now a top-level, non-admin docs group, rewritten against the server: all
eight tools, what each one may run, and how/mcpis authenticated and
firewalled. Data products is documented alongside it. - Installing on a host you manage yourself is documented. The README now
compares the three install paths — CloudFormation stack, your own host, local
development — and walks through the apt/venv/systemd route, the instance
profile the control plane needs, and how running off EC2 degrades. - This changelog, backfilled to the first tagged release. Its section for a tag
is published as that GitHub Release's body, so release notes are written once
rather than auto-generated from PR titles. - The running version is shown in the sidebar, linked to its release.
- A test asserts the CloudFormation
GitRefdefault matches the package
version, so the two cannot drift apart unnoticed.
Changed
- MCP clients can run
SHOW,DESCRIBE, andEXPLAIN, not onlySELECT,
which is what makes schema discovery and query-plan inspection possible.
EXPLAIN ANALYZEstays refused because it executes the statement it explains,
andEXPLAINre-validates whatever follows it so a write cannot ride in
behind the keyword. Ask Trino is unchanged and remainsSELECT-only. - MCP query results are capped at 100 KB, separately from the browser's
1,000-row / 10 MB display cap. A tool result is read into a model's context
rather than rendered in a table, so the old cap could swamp a client long
before the data became useful. Trimmed results still reporttruncated: true.
Fixed
- The unattended maintenance agent in
automation/never ran: its systemd units
were never installed, its service unit pointed at the wrong checkout path, it
had no git identity on the build box, and a half-built virtualenv was never
rebuilt. All four are fixed, and a release-preparation job runs alongside it.
Upgrading
No migration or configuration change is required. The three new tables
(query_templates, data_products, data_product_assets) are created on
startup, and the seeded admin role picks up MANAGE_DATA_PRODUCTS
automatically. Back up .trinohub/ before upgrading, and upgrade an existing
instance through SSM — see the AWS upgrade guide.
New CloudFormation installations pin to the immutable v0.4.0 release.
Four things to check afterwards:
- Custom roles do not get the new privilege. Only the system
adminrole is
synced. GrantMANAGE_DATA_PRODUCTSunder Users → Roles to any custom
role whose members should publish data products or query templates. Reading a
product needs no new privilege — the existing cluster and catalog grants still
decide what a caller sees. - MCP tool results are now capped at 100 KB. A client that relied on the old
1,000-row / 10 MB limit will seetruncated: truesooner. Narrow the query, or
page through it withrun_queryandget_query_result. - The MCP tool surface is wider than
SELECT. If your review of MCP access
assumedSELECT-only, note thatSHOW,DESCRIBE, andEXPLAINnow reach
metadata for any catalog the caller is already granted. Writes and
EXPLAIN ANALYZEare still refused, and Ask Trino staysSELECT-only. - Behind a reverse proxy, set the SSO redirect base if you want OAuth
discovery to work. The new discovery documents and theWWW-Authenticate
challenge take their URLs from that setting when it is configured
(PUT /api/sso/oidc,redirect_base) and from the incoming request
otherwise, which behind a proxy is the internal address a client cannot reach.