Repository navigation
LibreDB Studio 1.3.0 opens MCP and the read-only agent to most of the engines Studio connects to, gives each MCP token a tool list of its own, and records per engine what Studio can write, so read-only means the same thing in the form, the seed file and the agent.
Action required: an OPC UA seed connection must declare agentReadRoots; until it does, agents and MCP no longer read it. See docs/providers/opcua.md.
Action required (library users): ProviderCapabilities in @libredb/studio no longer has enforcesReadOnly; read capabilities.writeReach instead. No engine's read-only behaviour changes.
Behaviour change: on an engine where Studio has no write path, the connection form shows a fixed Read-only label instead of a toggle, and a stored readOnly: true there is dropped on the connection's next save.
MCP and the agent
- MCP runs read-only statements through
run_read_queryon Oracle, Db2 LUW, ClickHouse, libSQL, InfluxDB 3, Elasticsearch, OpenSearch, Cassandra and Couchbase. - Engine tools read metadata or data windows on Redis, etcd, Milvus, Qdrant, Weaviate, Kafka, RabbitMQ streams, S3, MQTT, Sparkplug B, MTConnect, SNMP and LibreDB files, and
run_cypher_readruns read-only Cypher on Neo4j. - The read-only agent now executes reads on RabbitMQ, Kafka, S3, Firestore, SNMP, NETCONF, Modbus (paced), OPC UA, MTConnect, MQTT, Sparkplug B, Prometheus and Trino, with sensitive fields withheld per engine.
tools/listreturns only the tools a token can use, and each tool's hints state its real effects.inspect_schematakestimeout_ms, can return foreign keys, and names the other schemas a connection holds.- An unavailable connection answers with the same sentence on every statement tool, and a seed's Vault references are read when a tool opens the connection.
- The repository ships a
libredb-studioskill and a Claude Code plugin for connecting a coding agent to Studio over MCP (docs/MCP.md).
Seeds and read-only
- A seed connection can carry a separate
agentUserandagentPassword, so agent mode and MCP run under a narrower login than the seed's own. - Each engine now declares its write reach (none, guarded or open); a seed's
readOnlyand the connection form read that one record. - Kafka and Prometheus are recorded as having no write path, each with its proof.
Editor and API
POST /api/db/statement/analyzereturns the web editor's run decision (nothing, refuse, run or confirm) to clients outside the browser, without opening a database connection.- The object tree has a control to read the objects again.
- TOTP enrolment shows a QR code for server-store accounts.
Fixes and hardening
- Hardening of the standalone AI prompt routes and of inline and seed connection input.
- The OIDC callback keeps the configured base path.
- Redis sends
READONLYso Cluster-mode replicas serve reads, and lists the session database whenCONFIG GETis refused. - SQL Server bounds set-operation and CTE queries as one result; data profiling quotes every column, so a reserved-word name no longer fails.
- Long text results no longer overflow the stack, and the editor's confirmation check reads its text in linear time.
- Kafka bounds the whole connect by the query timeout; MQTT and RabbitMQ stream reads end on time; Druid, Trino and Db2 keep agent statements away from system data.
Helm chart: 0.1.120
The chart moves to appVersion 1.3.0. No chart values change.
Full changelog: 1.2.0...1.3.0