Database Tools
This page covers installation and server-side configuration for built-in database tools.
Use this together with:
- Tools for request examples and runtime usage
Supported database tools
Built-in database tools include:
database_query_v1/v1/tools/database-query
How to install
Python extras
Choose the smallest extra that matches your database:
If you only want the database tool itself, tool-database is the simplest entry point. If you want a narrower install, use the driver-specific extra directly.
DB2 support is only available on non-aarch64 platforms in the current package metadata. On arm64 / Apple Silicon, the database-db2 extra cannot be installed and DB2 is not supported.
Examples:
database_query_v1 will also work when you install broader bundles that include database support, such as private-gpt[database], private-gpt[tool-database], private-gpt[tools], or private-gpt[core].
OS libraries required
The Python drivers above need database client libraries from the operating system.
Install by environment
Docker
macOS
Linux (Debian/Ubuntu)
When you use the published Docker image (zylonai/private-gpt:latest and variants), there is nothing extra to install for database tools: the image already contains the Python drivers and required OS libraries for all supported databases.
Only if you are building your own image from source do you need to think about extras:
This mirrors the official image behavior by:
- Installing the Python extras from the table above (
tool-database→ alldatabase-*extras). - Triggering the Dockerfile logic that installs OS-level libraries (
libmariadb3for MySQL/MariaDB andmsodbcsql18for SQL Server).
After that, run the image as usual:
You can still pass additional extras via EXTRAS if you also need ingestion, media, or other tools.
Settings reference
Database query does not have a global enabled flag in settings.yaml. Instead, the server uses runtime limits from database_query, and each request provides the target database through a sql_database artifact.
Settings
Runtime requirement
The database connection is not configured globally in settings.yaml. Pass it in the request as a sql_database artifact.
See Tools for Messages API and standalone tool endpoint examples.

