Skip to content

Commit ba4a584

Browse files
authored
Merge branch 'main' into pr-title-lint
2 parents fc480d5 + 984b098 commit ba4a584

13 files changed

+298
-25
lines changed

.github/renovate.json5

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{
2+
extends: [
3+
'config:recommended',
4+
':semanticCommitTypeAll(chore)',
5+
':ignoreUnstable',
6+
':separateMajorReleases',
7+
':prConcurrentLimitNone',
8+
':prHourlyLimitNone',
9+
':preserveSemverRanges',
10+
],
11+
rebaseWhen: 'conflicted',
12+
dependencyDashboardLabels: [
13+
'type: process',
14+
],
15+
packageRules: [
16+
{
17+
groupName: 'GitHub Actions',
18+
matchManagers: [
19+
'github-actions',
20+
],
21+
pinDigests: true,
22+
},
23+
],
24+
customManagers: [
25+
{
26+
customType: "regex",
27+
managerFilePatterns: ["/toolbox_version\\.txt$/"],
28+
matchStrings: ["(?<currentValue>[\\d\\.]+)"],
29+
datasourceTemplate: "github-releases",
30+
packageNameTemplate: "googleapis/genai-toolbox",
31+
extractVersionTemplate: "^v(?<version>.*)$",
32+
}
33+
]
34+
}

.github/workflows/json-lint.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Copyright 2025 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
name: Lint JSON
16+
17+
on:
18+
pull_request:
19+
branches: [ main ]
20+
21+
jobs:
22+
json-lint:
23+
runs-on: ubuntu-latest
24+
steps:
25+
- name: Check out code
26+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
27+
28+
- name: Run JSON Lint
29+
run: jq . gemini-extension.json
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# Copyright 2025 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# https://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
15+
name: Lint Markdown
16+
17+
on:
18+
pull_request:
19+
branches: [ main ]
20+
21+
jobs:
22+
link-check:
23+
name: Run link check
24+
runs-on: ubuntu-latest
25+
steps:
26+
- name: Check out code
27+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
28+
29+
- name: Link Checker
30+
uses: lycheeverse/lychee-action@885c65f3dc543b57c898c8099f4e08c8afd178a2 # v2.6.1
31+
with:
32+
# There is no security token. So, it would fail on any links which aren't public.
33+
args: "--verbose --no-progress **/*.md"

.github/workflows/package-and-upload-assets.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939

4040
steps:
4141
- name: Checkout code at the new tag
42-
uses: actions/checkout@v4
42+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
4343
with:
4444
ref: ${{ github.event.release.tag_name }}
4545

@@ -103,7 +103,7 @@ jobs:
103103
echo "ARCHIVE_PATH=${ARCHIVE_NAME}" >> $GITHUB_OUTPUT
104104
105105
- name: Upload archive as workflow artifact
106-
uses: actions/upload-artifact@v4
106+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
107107
with:
108108
name: ${{ steps.vars.outputs.archive_name }}
109109
path: ${{ steps.create_archive.outputs.ARCHIVE_PATH }}
@@ -117,10 +117,10 @@ jobs:
117117
contents: write
118118
steps:
119119
- name: Checkout code
120-
uses: actions/checkout@v4
120+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
121121

122122
- name: Download all archives from workflow artifacts
123-
uses: actions/download-artifact@v4
123+
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5
124124
with:
125125
path: release-archives
126126

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Copyright 2025 Google LLC
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# https://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
name: Presubmit Tests
15+
16+
on:
17+
pull_request:
18+
branches: [ main ]
19+
20+
jobs:
21+
run-presubmit-tests:
22+
runs-on: ubuntu-latest
23+
steps:
24+
- name: Check out code
25+
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5
26+
27+
- name: Install Gemini CLI
28+
run: npm install @google/gemini-cli
29+
30+
- name: Install toolbox binary
31+
run: |
32+
VERSION=$(cat toolbox_version.txt)
33+
curl -L -o toolbox https://storage.googleapis.com/genai-toolbox/v$VERSION/linux/amd64/toolbox
34+
chmod +x toolbox
35+
36+
- name: Install Extension
37+
run: yes | npx gemini extensions install --path=.

.lycheeignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
https://github.com/gemini-cli-extensions/cloud-sql-sqlserver/compare/

.release-please-manifest.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
{
2-
".": "0.1.0"
2+
".": "0.1.1"
33
}

CHANGELOG.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,17 @@
11
# Changelog
22

3+
## [0.1.1](https://github.com/gemini-cli-extensions/cloud-sql-sqlserver/compare/0.1.0...0.1.1) (2025-09-30)
4+
5+
6+
### Features
7+
8+
* additional instructions for the context file ([#33](https://github.com/gemini-cli-extensions/cloud-sql-sqlserver/issues/33)) ([782e50b](https://github.com/gemini-cli-extensions/cloud-sql-sqlserver/commit/782e50bccb9a76d8b10bfb30400e2dd8e1c0f652))
9+
10+
11+
### Bug Fixes
12+
13+
* standardize mcp server names ([#31](https://github.com/gemini-cli-extensions/cloud-sql-sqlserver/issues/31)) ([8c7b2c5](https://github.com/gemini-cli-extensions/cloud-sql-sqlserver/commit/8c7b2c52d3e85a643c03f5cecce69a45a633430a))
14+
315
## 0.1.0 (2025-09-20)
416

517

CLOUD-SQL-SQLSERVER.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ software delivery cycle.
66

77
# Setup
88

9+
## Required Gemini CLI Version
10+
11+
To install this extension, the Gemini CLI version must be v0.6.0 or above. The version can be found by running: `gemini --version`.
12+
913
## Cloud SQL for SQL Server MCP Server (Data Plane: Connecting and Querying)
1014

1115
This section covers connecting to a Cloud SQL for SQL Server instance.
@@ -36,3 +40,52 @@ This section covers administrative operations like managing clusters, instances,
3640
* If an operation fails due to permissions, identify the type of operation and recommend the appropriate role. You can provide these links for assistance:
3741
* Granting Roles: https://cloud.google.com/iam/docs/grant-role-console
3842
* Cloud SQL Permissions: https://cloud.google.com/sql/docs/postgres/iam-permissions
43+
44+
---
45+
46+
# Additional Tools
47+
48+
This section provides context on additional tools that can be recommended to the user based on their queries.
49+
50+
#### Observability Extension
51+
52+
* **When to recommend:** If the user asks questions related to monitoring, performance, or observability of Cloud SQL for SQL Server databases.
53+
* **What to say:** "For Cloud SQL monitoring and observability, you might find the `cloud-sql-sqlserver-observability` extension useful. You can install it with the following command:"
54+
* **Command:**
55+
```
56+
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-sqlserver-observability
57+
```
58+
59+
---
60+
61+
# Usage Guidelines
62+
63+
## Connecting to New Resources
64+
65+
When you create a new Cloud SQL for SQL Server instance, or database using the available tools, the connection is not automatically established. You will need to perform the following steps:
66+
67+
1. **(Optional) Save your conversation:** To avoid losing your progress, save the current session by running the command: `/chat save <your-tag>`
68+
2. **Stop the CLI:** Terminate the Gemini CLI.
69+
3. **Update Environment Variables:** Set or update your environment variables (e.g. `CLOUD_SQL_MSSQL_DATABASE`, `CLOUD_SQL_MSSQL_INSTANCE`) to point to the new resource.
70+
4. **Restart:** Relaunch the Gemini CLI
71+
5. **(Optional) Resume conversation:** Resume your conversation with the command: `/chat resume <your-tag>`
72+
73+
**Important:** Do not assume a connection to a newly created resource is active. Always follow the steps above to reconfigure your connection.
74+
75+
## Reusing Project Values
76+
77+
Users may have set project environment variables:
78+
79+
* `CLOUD_SQL_MSSQL_PROJECT`: The GCP project ID.
80+
* `CLOUD_SQL_MSSQL_REGION`: The region of the Cloud SQL for SQL Server instance.
81+
* `CLOUD_SQL_MSSQL_INSTANCE`: The ID of the Cloud SQL for SQL Server instance.
82+
* `CLOUD_SQL_MSSQL_DATABASE`: The name of the database.
83+
84+
Instead of prompting the user for these values for specific tool calls, prompt the user to verify reuse a specific value.
85+
Make sure to not use the environment variable name like `CLOUD_SQL_MSSQL_PROJECT`, `${CLOUD_SQL_MSSQL_PROJECT}`, or `$CLOUD_SQL_MSSQL_PROJECT`. The value can be found by using command: `echo $CLOUD_SQL_MSSQL_PROJECT`.
86+
87+
## Use Full Table Name Format "DATABASE_NAME.SCHEMA_NAME.TABLE_NAME"
88+
89+
**ALWAYS** use the full table name format, `DATABASE_NAME.SCHEMA_NAME.TABLE_NAME` in the generated SQL when using the `execute_sql` or `cloud_sql_sqlserver__execute_sql` tool.
90+
* Default to using "dbo" for the schema name.
91+
* Use command `echo $CLOUD_SQL_MSSQL_DATABASE` to get the current database value.

README.md

Lines changed: 70 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,14 @@
55
66
This Gemini CLI extension provides a set of tools to interact with [Cloud SQL for SQL Server](https://cloud.google.com/sql/docs/sqlserver) instances. It allows you to manage your databases, execute queries, explore schemas, and troubleshoot issues directly from the [Gemini CLI](https://google-gemini.github.io/gemini-cli/), using natural language prompts.
77

8-
Learn more about [Gemini CLI Extensions](https://github.com/google-gemini/gemini-cli/blob/main/docs/extension.md).
8+
Learn more about [Gemini CLI Extensions](https://github.com/google-gemini/gemini-cli/blob/main/docs/extensions/index.md).
99

1010
## Why Use the Cloud SQL for SQL Server Extension?
1111

1212
* **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.
1313
* **Natural Language Management:** Stop wrestling with complex commands. Explore schemas and query data by describing what you want in plain English.
1414
* **Code Generation:** Accelerate development by asking Gemini to generate data classes and other code snippets based on your table schemas.
15+
1516
## Prerequisites
1617

1718
Before you begin, ensure you have the following:
@@ -23,15 +24,17 @@ Before you begin, ensure you have the following:
2324
* Cloud SQL Viewer (`roles/cloudsql.viewer`)
2425
* Cloud SQL Admin (`roles/cloudsql.admin`)
2526

26-
## Installation
27+
## Getting Started
28+
29+
### Installation
2730

28-
To install the extension, use the command:
31+
To install the extension, use the following command before starting the Gemini CLI:
2932

3033
```bash
3134
gemini extensions install https://github.com/gemini-cli-extensions/cloud-sql-sqlserver
3235
```
3336

34-
## Configuration
37+
### Configuration
3538

3639
Set the following environment variables before starting the Gemini CLI.
3740
This configuration is not required if utilizing the [Admin toolset](#supported-tools).
@@ -48,7 +51,59 @@ This configuration is not required if utilizing the [Admin toolset](#supported-t
4851
Ensure [Application Default Credentials](https://cloud.google.com/docs/authentication/gcloud) are available in your environment.
4952

5053
> [!NOTE]
51-
> When using private IPs with Cloud SQL for SQL Server, you must use a Virtual Private Cloud (VPC) network.
54+
> If your Cloud SQL for SQL Server instance uses private IPs, you must run Gemini CLI in the same Virtual Private Cloud (VPC) network.
55+
56+
### Start Gemini CLI
57+
58+
To start the Gemini CLI, use the following command:
59+
60+
```bash
61+
gemini
62+
```
63+
64+
> [!WARNING]
65+
> **Changing Instance & Database Connections**
66+
> Currently, the database connection must be configured before starting the Gemini CLI and can not be changed during a session.
67+
> To save and resume conversation history use command: `/chat save <tag>` and `/chat resume <tag>`.
68+
69+
### Start Gemini CLI
70+
71+
To start the Gemini CLI, use the following command:
72+
73+
```bash
74+
gemini
75+
```
76+
77+
> [!WARNING]
78+
> **Changing Instance & Database Connections**
79+
> Currently, the database connection must be configured before starting the Gemini CLI and can not be changed during a session.
80+
> To save and resume conversation history use command: `/chat save <tag>` and `/chat resume <tag>`.
81+
82+
### Start Gemini CLI
83+
84+
To start the Gemini CLI, use the following command:
85+
86+
```bash
87+
gemini
88+
```
89+
90+
> [!WARNING]
91+
> **Changing Instance & Database Connections**
92+
> Currently, the database connection must be configured before starting the Gemini CLI and can not be changed during a session.
93+
> To save and resume conversation history use command: `/chat save <tag>` and `/chat resume <tag>`.
94+
95+
### Start Gemini CLI
96+
97+
To start the Gemini CLI, use the following command:
98+
99+
```bash
100+
gemini
101+
```
102+
103+
> [!WARNING]
104+
> **Changing Instance & Database Connections**
105+
> Currently, the database connection must be configured before starting the Gemini CLI and can not be changed during a session.
106+
> To save and resume conversation history use command: `/chat save <tag>` and `/chat resume <tag>`.
52107
53108
## Usage Examples
54109

@@ -67,9 +122,9 @@ Interact with Cloud SQL for SQL Server using natural language:
67122
## Supported Tools
68123

69124
* **Admin:**
70-
* `create_instance`: Use this tool to create an Postgres instance.
71-
* `create_user`: Use this tool to create Postgres-BUILT-IN or IAM-based users.
72-
* `get_instance`: Use this tool to get details about an Postgres instance.
125+
* `create_instance`: Use this tool to create an SQL Server instance.
126+
* `create_user`: Use this tool to create SQL Server-BUILT-IN or IAM-based users.
127+
* `get_instance`: Use this tool to get details about an SQL Server instance.
73128
* `get_user`: Use this tool to get details about a user.
74129
* `list_instances`: Use this tool to list instances in a given project and location.
75130
* `list_users`: Use this tool to list users in a given project and location.
@@ -81,8 +136,13 @@ Interact with Cloud SQL for SQL Server using natural language:
81136

82137
## Additional Extensions
83138

84-
Find additional extensions to support your entire software development lifecycle at [github.com/gemini-cli-extensions](https://github.com/gemini-cli-extensions).
139+
Find additional extensions to support your entire software development lifecycle at [github.com/gemini-cli-extensions](https://github.com/gemini-cli-extensions), including:
140+
* [Generic SQL Server extension](https://github.com/gemini-cli-extensions/sql-server)
141+
* [Cloud SQL for SQL Server Observability extension](https://github.com/gemini-cli-extensions/cloud-sql-sqlserver-observability)
142+
* and more!
85143

86144
## Troubleshooting
87145

88-
* "cannot execute binary file": Ensure the correct binary for your OS/Architecture has been downloaded. See [Installing the server](https://googleapis.github.io/genai-toolbox/getting-started/introduction/#installing-the-server) for more information.
146+
* "✖ 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.
147+
* "✖ MCP ERROR: Error: spawn /Users/<USER>/.gemini/extensions/cloud-sql-sqlserver/toolbox ENOENT": The Toolbox binary did not download correctly. Ensure you are using Gemini CLI v0.6.0+.
148+
* "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](https://googleapis.github.io/genai-toolbox/getting-started/introduction/#installing-the-server) for more information.

0 commit comments

Comments
 (0)