Note
This extension is currently in beta (pre-v1.0), and may see breaking changes until the first stable release (v1.0).
This Gemini CLI extension provides a set of tools to interact with Cloud SQL for PostgreSQL instances. It allows you to manage your databases, execute queries, explore schemas, and troubleshoot issues directly from the Gemini CLI, using natural language prompts.
Learn more about Gemini CLI Extensions.
Important
We Want Your Feedback! Please share your thoughts with us by filling out our feedback form. Your input is invaluable and helps us improve the project for everyone.
- Seamless Workflow: As a Google-developed extension, it integrates seamlessly into the Gemini CLI environment. No need to constantly switch contexts for common database tasks.
- Natural Language Queries: Stop wrestling with complex commands. Explore schemas and query data by describing what you want in plain English.
- Full Lifecycle Control: Manage the entire lifecycle of your database, from creating instances to exploring schemas and running queries.
- Code Generation: Accelerate development by asking Gemini to generate data classes and other code snippets based on your table schemas.
Before you begin, ensure you have the following:
- Gemini CLI installed with version +v0.6.0.
- Setup Gemini CLI Authentication.
- A Google Cloud project with the Cloud SQL Admin API enabled.
- Ensure Application Default Credentials are available in your environment.
- IAM Permissions:
- Cloud SQL Client (
roles/cloudsql.client) - Cloud SQL Admin (
roles/cloudsql.admin)
- Cloud SQL Client (
Note
If you do not configure a specific CLOUD_SQL_POSTGRES_USER or CLOUD_SQL_POSTGRES_PASSWORD, this extension defaults to using the active local IAM user credentials. You must also add the IAM user to your Cloud SQL instance, see Creating a database user.
To install the extension, use the command:
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-postgresqlYou will be prompted to configure the following settings during installation. These settings are saved in an .env file within the extension's directory.
CLOUD_SQL_POSTGRES_PROJECT: The GCP project ID.CLOUD_SQL_POSTGRES_REGION: The region of your Cloud SQL instance.CLOUD_SQL_POSTGRES_INSTANCE: The ID of your Cloud SQL instance.CLOUD_SQL_POSTGRES_DATABASE: The name of the database to connect to.CLOUD_SQL_POSTGRES_USER: (Optional) The database username. Defaults to the active IAM user.CLOUD_SQL_POSTGRES_PASSWORD: (Optional) The password for the database user.CLOUD_SQL_POSTGRES_IP_TYPE: (Optional) Type of the IP address:PUBLIC,PRIVATE, orPSC. Defaults toPUBLIC.
Note
This configuration is primarily for the Data Plane tools (querying). The Admin toolset does not strictly require these to be pre-set if you provide them in your prompts, but it is recommended for a smoother experience.
To view or update your configuration:
List Settings:
- Terminal:
gemini extensions list - Gemini CLI:
/extensions list
Update Settings:
- Terminal:
gemini extensions config cloud-sql-postgresql [setting name] [--scope <scope>]setting name: (Optional) The single setting to configure.scope: (Optional) The scope of the setting in (userorworkspace). Defaults touser.
- Currently, you must restart the Gemini CLI for changes to take effect. We recommend using
gemini --resumeto resume your session.
Alternatively, you can manually set these environment variables before starting the Gemini CLI:
export CLOUD_SQL_POSTGRES_PROJECT="<your-gcp-project-id>"
export CLOUD_SQL_POSTGRES_REGION="<your-cloud-sql-region>"
export CLOUD_SQL_POSTGRES_INSTANCE="<your-cloud-sql-instance-id>"
export CLOUD_SQL_POSTGRES_DATABASE="<your-database-name>"
export CLOUD_SQL_POSTGRES_USER="<your-database-user>" # Optional
export CLOUD_SQL_POSTGRES_PASSWORD="<your-database-password>" # Optional
export CLOUD_SQL_POSTGRES_IP_TYPE="PUBLIC" # Optional: `PUBLIC`, `PRIVATE`, `PSC`. Defaults to `PUBLIC`.Note
- Ensure Application Default Credentials are available in your environment.
- If your Cloud SQL for PostgreSQL instance uses private IPs, you must run Gemini CLI in the same Virtual Private Cloud (VPC) network.
- See Troubleshooting for debugging your configuration.
To start the Gemini CLI, use the following command:
geminiWarning
Changing Instance & Database Connections
Currently, the database connection must be configured before starting the Gemini CLI and can not be changed during a session.
To save and resume conversation history use command: /chat save <tag> and /chat resume <tag>.
Interact with Cloud SQL for PostgreSQL using natural language:
- Provision Infrastructure:
- "Create a new CLoud SQL for Postgres instance named 'e-commerce-prod' in the 'my-gcp-project' project."
- "Create a new user named 'analyst' with read access to all tables."
- Explore Schemas and Data:
- "Show me all tables in the 'orders' database."
- "What are the columns in the 'products' table?"
- "How many orders were placed in the last 30 days, and what were the top 5 most purchased items?"
- Generate Code:
- "Generate a Python dataclass to represent the 'customers' table."
-
Admin:
clone_instance: Creates a clone for an existing Cloud SQL for PostgreSQL instance.create_backup: Creates a backup on a Cloud SQL instance.create_instance: Use this tool to create an Postgres instance.create_user: Use this tool to create Postgres-BUILT-IN or IAM-based users.create_database: Creates a new database in a Cloud SQL instance.get_instance: Use this tool to get details about an Postgres instance.list_instances: Use this tool to list instances in a given project and location.list_databases: Lists all databases for a Cloud SQL instance.restore_backup: Restores a backup of a Cloud SQL instance.wait_for_operation: Use this tool to poll the operations API until the operation is done.
-
Data:
list_tables: Use this tool to lists tables in the database.database_overview: Use this tool to fetches the current state of the PostgreSQL server.execute_sql: Use this tool to executes a SQL query.list_active_queries: Use this tool to list currently running queries.list_available_extensions: Use this tool to list available extensions for installation.list_installed_extensions: Use this tool to list installed extensions.get_query_plan: Use this tool to get query plan.list_autovacuum_configurations: Use this tool to list autovacuum configurations and its value.list_database_stats: Use this tool to lists the key performance and activity statistics for each database in the postgreSQL instance.list_indexes: Use this tool to list available user indexes in a PostgreSQL database.list_memory_configurations: Use this tool to list memory configurations and its value.list_pg_settings: Use this tool to list configuration parameters for the PostgreSQL server.list_publication_tables: Use this tool to list publication tables in a PostgreSQL database.list_replication_slots: Use this tool to list replication slots.list_roles: Use this tool to lists all the user-created roles in PostgreSQL database.list_schemas: Use this tool to lists schemas in the database.list_sequences: Use this tool to list sequences in a PostgreSQL database.list_tablespaces: Use this tool to lists tablespaces in the database.list_top_bloated_tables: Use this tool to list top bloated tables.list_triggers: Use this tool to lists triggers in the database.list_views: Use this tool to lists views in the database from pg_views with a default limit of 50 rows.list_invalid_indexes: Use this tool to list invalid indexes.
Find additional extensions to support your entire software development lifecycle at github.com/gemini-cli-extensions, including:
Use gemini --debug to enable debugging.
Common issues:
- "failed to find default credentials: google: could not find default credentials.": Ensure Application Default Credentials are available in your environment. See Set up Application Default Credentials for more information.
- "✖ Error during discovery for server: MCP error -32000: Connection closed": The database connection has not been established. Ensure your configuration is set via environment variables.
- "✖ MCP ERROR: Error: spawn /Users/USER/.gemini/extensions/cloud-sql-postgresql/toolbox ENOENT": The Toolbox binary did not download correctly. Ensure you are using Gemini CLI v0.6.0+.
- "cannot execute binary file": The Toolbox binary did not download correctly. Ensure the correct binary for your OS/Architecture has been downloaded. See Installing the server for more information.