Releases: gizmodata/gizmosql-mcp
Release list
v0.4.5
Fixed
- Hosted HTTP transport with OAuth: the documented scope setting requested
only the API scope, so Microsoft Entra ID issued no refresh token and Claude
lost the connector as soon as the access token expired (about an hour), with
no way to re-authorize mid-conversation. The README, chart and deployment
template now advertiseoffline_access(withopenid profile email)
alongside the API scope, and the server warns at startup when
GIZMOSQL_MCP_OAUTH_SCOPESlacks it. - Rejected bearer tokens (401) are now logged with the reason, as 403s already
were, so an expired-token loop is visible in the pod logs.
Container image: ghcr.io/gizmodata/gizmosql-mcp:0.4.5 (linux/amd64, linux/arm64)
Helm chart: oci://ghcr.io/gizmodata/charts/gizmosql-mcp --version 0.4.5
v0.4.4
Changed
- Requires
@gizmodata/gizmosql-client>= 2.2.1, which bundles gizmosql-adbc
v2.0.13: parameterized DDL/DML sent throughexecute_statementwith bound
parameters now executes immediately instead of running lazily on the server,
where it could be silently lost or interrupted by the client's own cancel.
Container image: ghcr.io/gizmodata/gizmosql-mcp:0.4.4 (linux/amd64, linux/arm64)
Helm chart: oci://ghcr.io/gizmodata/charts/gizmosql-mcp --version 0.4.4
v0.4.3
Added
- Integration coverage for the hosted HTTP transport (
test/integration/sessions.test.ts,
runs in the existing CI job against the GizmoSQL service container and a
throwaway OpenID Connect issuer): per-user isolation ofuse_schema,
use_connectionand unqualified name resolution under concurrent bursts,
idle-session expiry end to end, and a sweep over every registered tool that
checks for structured content, the version stamp, and conformance to the
declared output schema. - Unit tests for
login_sso(test/unit/sso.test.ts) and for the session
reset notice.
Changed
- When a user's HTTP session has expired and a new one starts, the first tool
result says so (a note in the text and asession_resetfield in the
structured content) instead of silently applying the defaults. GIZMOSQL_MCP_SESSION_IDLE_SECONDSaccepts values down to 1 second (was 30).
Container image: ghcr.io/gizmodata/gizmosql-mcp:0.4.3 (linux/amd64, linux/arm64)
Helm chart: oci://ghcr.io/gizmodata/charts/gizmosql-mcp --version 0.4.3
v0.4.2
Changed
list_schemasnever lists the per-backend temporary schemas of an attached
Postgres database (pg_temp_N,pg_toast_temp_N), even with
include_system: true. They hold nothing usable, there is one pair per
Postgres backend, and a busy attachment exposes hundreds of them. The
result reports how many were skipped ashidden_temp_schemas.
Container image: ghcr.io/gizmodata/gizmosql-mcp:0.4.2 (linux/amd64, linux/arm64)
Helm chart: oci://ghcr.io/gizmodata/charts/gizmosql-mcp --version 0.4.2
v0.4.1
Fixed
- Calling
run_queryorexecute_statementwith fewer (or more) values than
the statement has placeholders is now rejected before the query is sent,
with a message that states both counts, instead of surfacing DuckDB's
"Values were not provided for the following prepared statement parameters"
wrapped in Arrow and Flight SQL transport noise. - Server errors are shown without the driver's wrappers (
Arrow Error: C Data interface error: [FlightSQL] An execution error has occurred:and the
trailing(Unknown; DoGet: endpoint 0: [])), whichever tool raised them. - The note about the
LIMITwrapper offsetting line numbers is only added to
errors that actually cite a line.
Changed
list_schemasexplains that DuckDB keepsinformation_schemaand
pg_catalogin thesystemcatalog only, soinclude_systemdoes not add
schemas to a user catalog.
Container image: ghcr.io/gizmodata/gizmosql-mcp:0.4.1 (linux/amd64, linux/arm64)
Helm chart: oci://ghcr.io/gizmodata/charts/gizmosql-mcp --version 0.4.1
v0.4.0
Added
- OAuth for the Streamable HTTP transport. With
GIZMOSQL_MCP_OAUTH_ISSUERand
GIZMOSQL_MCP_PUBLIC_URLset, the server acts as an OAuth 2.1 resource server
for any OpenID Connect provider that issues JWT access tokens (Microsoft Entra
ID, Okta, Auth0, Keycloak, Cognito, Clerk): it discovers the provider's JWKS,
verifies issuer, audience, signature and expiry on every request, serves the
RFC 9728 protected-resource metadata at/.well-known/oauth-protected-resource
(and the/mcp-suffixed form), and answers 401 with theWWW-Authenticate
challenge Claude.ai uses to start the sign-in flow. Optional
GIZMOSQL_MCP_OAUTH_AUTHORIZED_EMAILSrestricts callers to an email allowlist
(403),GIZMOSQL_MCP_OAUTH_AUDIENCEaccepts several audiences, and
GIZMOSQL_MCP_OAUTH_JWKS_URIskips discovery. The caller's token is never
forwarded: GizmoSQL is reached with the configured service credentials. - Per-user sessions over HTTP. Each authenticated user gets their own
GizmoSQL connections, current connection and search path, souse_schema,
USEanduse_connectionno longer leak between people sharing one
server. Sessions close afterGIZMOSQL_MCP_SESSION_IDLE_SECONDS(default
1800) without a request or whenGIZMOSQL_MCP_MAX_SESSIONS(default 200)
is reached, least recently used first.server_inforeports
session_scope,session_startedandsession_idle_timeout_seconds. - Every JSON-RPC request over HTTP is logged with the authenticated caller and
the tool or resource it touched, andserver_inforeportsauthenticated_user. - A container image for the HTTP transport (
ghcr.io/gizmodata/gizmosql-mcp,
linux/amd64 and linux/arm64) and a Helm chart
(oci://ghcr.io/gizmodata/charts/gizmosql-mcp), both published by the release
workflow with versions locked to the npm package.
Changed
GIZMOSQL_MCP_BEARER_TOKENand OAuth are mutually exclusive; configuring both
is a startup error. The 401 for a static token now carries a JSON body.login_ssois only registered on the stdio transport; over HTTP it would
open a browser on the server.
Container image: ghcr.io/gizmodata/gizmosql-mcp:0.4.0 (linux/amd64, linux/arm64)
Helm chart: oci://ghcr.io/gizmodata/charts/gizmosql-mcp --version 0.4.0
v0.3.7
Fixed
explain_queryappeared to return only the version envelope in 0.3.6:
it was the one tool without structured content, and hosts that show
structured content in preference to text saw nothing else. It now returns
physical_planandsectionsas structured JSON alongside the Markdown.
Added
- Error results end with the server name and version, so the build is
identifiable exactly when a bug report needs it. (Errors cannot carry
structured content: clients validate it againstrun_query's output
schema even for errors.)
v0.3.6
Added
- Every successful tool result now includes
mcp_server_versionin its
structured content (andrun_query's output schema). Claude Desktop shows
structured content to the model but not_meta, so the version added in
0.3.4 was invisible there.
v0.3.5
Fixed
describe_tablefailed outright in 0.3.4 when the one-row estimate probe
was refused (GizmoSQL's system-managed instrumentation catalog is
admin-only). A refused probe now leavesestimated_rowsasnull.
Added
- The schema-dialect unit test now compiles every advertised tool schema
with a 2020-12-only Ajv validator, the same check that rejected
run_queryin Claude Desktop, with a draft-07 control that must fail.
v0.3.4
Changed
list_schemashides system schemas (information_schema,pg_catalog,
pg_toast,pg_temp_*,pg_toast_temp_*) by default and reports how
many were hidden. Attached Postgres databases expose hundreds of
pg_temp_Nschemas, which made the unfiltered call unusable. Pass
include_system: trueto list them.
Added
- Every tool result carries
_meta.gizmosql_mcpwith the server name and
version, so a client can tell which build answered without calling
server_info.
Fixed
describe_tableno longer reportsestimated_rows: 0for populated
tables DuckDB has no statistics for (attached Postgres catalogs). A
one-row probe turns that intonull(unknown) when data exists.