Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 32 additions & 24 deletions .ci/integration.cloudbuild.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
steps:
- id: "detect-changes"
name: "gcr.io/cloud-builders/git"
waitFor: ["-"]
waitFor: ["-"]
entrypoint: "bash"
args:
- -c
Expand Down Expand Up @@ -98,15 +98,20 @@ steps:
- "CLOUD_SQL_POSTGRES_REGION=$_REGION"
- "SERVICE_ACCOUNT_EMAIL=$SERVICE_ACCOUNT_EMAIL"
secretEnv:
["CLOUD_SQL_POSTGRES_USER", "CLOUD_SQL_POSTGRES_PASS", "CLIENT_ID", "API_KEY"]
[
"CLOUD_SQL_POSTGRES_USER",
"CLOUD_SQL_POSTGRES_PASS",
"CLIENT_ID",
"API_KEY",
]
volumes:
- name: "go"
path: "/gopath"
args:
- -c
- |
PATTERN="cloudsqlpg|internal/sources/postgres|tests/postgres|internal/server/|tests/common.go|tests/tool.go|.ci/"

if grep -qE "$$PATTERN" /workspace/changed_files.txt; then
echo "Relevant changes detected. Starting Cloud SQL Postgres tests..."
.ci/test_with_coverage.sh \
Expand Down Expand Up @@ -137,7 +142,7 @@ steps:
- -c
- |
PATTERN="alloydb|internal/sources/postgres|tests/postgres|internal/server/|tests/common.go|.ci/"

if grep -qE "$$PATTERN" /workspace/changed_files.txt; then
echo "Relevant changes detected. Starting AlloyDB tests..."
.ci/test_with_coverage.sh \
Expand All @@ -161,7 +166,13 @@ steps:
- "ALLOYDB_POSTGRES_DATABASE=$_DATABASE_NAME"
- "ALLOYDB_POSTGRES_REGION=$_REGION"
- "SERVICE_ACCOUNT_EMAIL=$SERVICE_ACCOUNT_EMAIL"
secretEnv: ["ALLOYDB_POSTGRES_USER", "ALLOYDB_POSTGRES_PASSWORD", "CLIENT_ID", "API_KEY"]
secretEnv:
[
"ALLOYDB_POSTGRES_USER",
"ALLOYDB_POSTGRES_PASSWORD",
"CLIENT_ID",
"API_KEY",
]
volumes:
- name: "go"
path: "/gopath"
Expand Down Expand Up @@ -508,7 +519,7 @@ steps:
- "SPANNER_DATABASE=$_DATABASE_NAME"
- "SPANNER_INSTANCE=$_SPANNER_INSTANCE"
- "SERVICE_ACCOUNT_EMAIL=$SERVICE_ACCOUNT_EMAIL"
secretEnv: ["CLIENT_ID"]
secretEnv: ["CLIENT_ID", "API_KEY"]
volumes:
- name: "go"
path: "/gopath"
Expand Down Expand Up @@ -536,7 +547,7 @@ steps:
- "GOPATH=/gopath"
- "NEO4J_DATABASE=$_NEO4J_DATABASE"
- "NEO4J_URI=$_NEO4J_URI"
secretEnv: ["NEO4J_USER", "NEO4J_PASS"]
secretEnv: ["NEO4J_USER", "NEO4J_PASS", "API_KEY"]
volumes:
- name: "go"
path: "/gopath"
Expand Down Expand Up @@ -757,8 +768,7 @@ steps:
env:
- "GOPATH=/gopath"
- "SERVICE_ACCOUNT_EMAIL=$SERVICE_ACCOUNT_EMAIL"
secretEnv:
["CLIENT_ID"]
secretEnv: ["CLIENT_ID"]
volumes:
- name: "go"
path: "/gopath"
Expand Down Expand Up @@ -1159,7 +1169,7 @@ steps:
env:
- "GOPATH=/gopath"
- "SERVICE_ACCOUNT_EMAIL=$SERVICE_ACCOUNT_EMAIL"
secretEnv: ["CLIENT_ID", "ELASTICSEARCH_USER", "ELASTICSEARCH_PASS", "ELASTICSEARCH_HOST"]
secretEnv: ["CLIENT_ID", "API_KEY"]
volumes:
- name: "go"
path: "/gopath"
Expand Down Expand Up @@ -1188,7 +1198,8 @@ steps:
- "SERVICE_ACCOUNT_EMAIL=$SERVICE_ACCOUNT_EMAIL"
- "SNOWFLAKE_DATABASE=$_SNOWFLAKE_DATABASE"
- "SNOWFLAKE_SCHEMA=$_SNOWFLAKE_SCHEMA"
secretEnv: ["CLIENT_ID", "SNOWFLAKE_USER", "SNOWFLAKE_PASS", "SNOWFLAKE_ACCOUNT"]
secretEnv:
["CLIENT_ID", "SNOWFLAKE_USER", "SNOWFLAKE_PASS", "SNOWFLAKE_ACCOUNT"]
volumes:
- name: "go"
path: "/gopath"
Expand All @@ -1215,7 +1226,8 @@ steps:
env:
- "GOPATH=/gopath"
- "SERVICE_ACCOUNT_EMAIL=$SERVICE_ACCOUNT_EMAIL"
secretEnv: ["CLIENT_ID", "CASSANDRA_USER", "CASSANDRA_PASS", "CASSANDRA_HOST"]
secretEnv:
["CLIENT_ID", "CASSANDRA_USER", "CASSANDRA_PASS", "CASSANDRA_HOST"]
volumes:
- name: "go"
path: "/gopath"
Expand All @@ -1237,13 +1249,14 @@ steps:

- id: "oracle"
name: ghcr.io/oracle/oraclelinux9-instantclient:23
waitFor: ["install-dependencies","detect-changes"]
waitFor: ["install-dependencies", "detect-changes"]
entrypoint: /bin/bash
env:
- "GOPATH=/gopath"
- "SERVICE_ACCOUNT_EMAIL=$SERVICE_ACCOUNT_EMAIL"
- "ORACLE_SERVER_NAME=$_ORACLE_SERVER_NAME"
secretEnv: ["CLIENT_ID", "ORACLE_USERNAME", "ORACLE_PASSWORD", "ORACLE_HOST"]
secretEnv:
["CLIENT_ID", "ORACLE_USERNAME", "ORACLE_PASSWORD", "ORACLE_HOST"]
volumes:
- name: "go"
path: "/gopath"
Expand Down Expand Up @@ -1337,7 +1350,7 @@ steps:
- "SINGLESTORE_USER=$_SINGLESTORE_USER"
- "SINGLESTORE_DATABASE=$_SINGLESTORE_DATABASE"
- "SERVICE_ACCOUNT_EMAIL=$SERVICE_ACCOUNT_EMAIL"
secretEnv: ["SINGLESTORE_PASSWORD", "SINGLESTORE_HOST", "CLIENT_ID"]
secretEnv: ["SINGLESTORE_PASSWORD", "SINGLESTORE_HOST", "CLIENT_ID", "API_KEY"]
volumes:
- name: "go"
path: "/gopath"
Expand All @@ -1351,7 +1364,9 @@ steps:
.ci/test_with_coverage.sh \
"SingleStore" \
singlestore \
singlestore
singlestore \
"" \
"API_KEY"
else
echo "No relevant changes for SingleStore. Skipping shard."
exit 0
Expand Down Expand Up @@ -1384,7 +1399,6 @@ steps:
exit 0
fi


availableSecrets:
secretManager:
# Common secrets
Expand Down Expand Up @@ -1474,12 +1488,6 @@ availableSecrets:
env: YUGABYTEDB_USER
- versionName: projects/$PROJECT_ID/secrets/yugabytedb_pass/versions/latest
env: YUGABYTEDB_PASS
- versionName: projects/$PROJECT_ID/secrets/elastic_search_host/versions/latest
env: ELASTICSEARCH_HOST
- versionName: projects/$PROJECT_ID/secrets/elastic_search_user/versions/latest
env: ELASTICSEARCH_USER
- versionName: projects/$PROJECT_ID/secrets/elastic_search_pass/versions/latest
env: ELASTICSEARCH_PASS
- versionName: projects/$PROJECT_ID/secrets/snowflake_account/versions/latest
env: SNOWFLAKE_ACCOUNT
- versionName: projects/$PROJECT_ID/secrets/snowflake_user/versions/latest
Expand Down Expand Up @@ -1573,4 +1581,4 @@ substitutions:
_MARIADB_PORT: "3307"
_MARIADB_DATABASE: test_database
_SNOWFLAKE_DATABASE: "test"
_SNOWFLAKE_SCHEMA: "PUBLIC"
_SNOWFLAKE_SCHEMA: "PUBLIC"
4 changes: 4 additions & 0 deletions .hugo/hugo.cloudflare.toml
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,10 @@ ignoreFiles = ["quickstart/shared", "quickstart/python", "quickstart/js", "quick
# Add a new version block here before every release
# The order of versions in this file is mirrored into the dropdown

[[params.versions]]
version = "v1.0.0"
url = "https://mcp-toolbox.dev/v1.0.0/"

[[params.versions]]
version = "v0.32.0"
url = "https://mcp-toolbox.dev/v0.32.0/"
Expand Down
4 changes: 4 additions & 0 deletions .hugo/hugo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@ ignoreFiles = ["quickstart/shared", "quickstart/python", "quickstart/js", "quick
# Add a new version block here before every release
# The order of versions in this file is mirrored into the dropdown

[[params.versions]]
version = "v1.0.0"
url = "https://mcp-toolbox.dev/v1.0.0/"

[[params.versions]]
version = "v0.32.0"
url = "https://mcp-toolbox.dev/v0.32.0/"
Expand Down
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,27 @@
# Changelog

## [1.0.0](https://github.com/googleapis/mcp-toolbox/compare/v0.32.0...v1.0.0) (2026-04-10)


> [!IMPORTANT]
> This is the first stable release. Please review the [UPGRADING.md](UPGRADING.md) guide for instructions on migrating from previous beta versions.


### ⚠ BREAKING CHANGES

* **tools/elasticsearch:** add vector search support and remove query passing through param ([#2891](https://github.com/googleapis/mcp-toolbox/issues/2891))
* **tools/looker:** refactor looker-git-branch tool into 5 separate tools ([#2976](https://github.com/googleapis/mcp-toolbox/issues/2976))

### Features

* **auth:** Support opaque token validation for `generic` authService ([#2944](https://github.com/googleapis/mcp-toolbox/issues/2944)) ([c924701](https://github.com/googleapis/mcp-toolbox/commit/c924701adede95877594423d78b7ae72fe0b9c82))
* **cloudsqlpg:** Run `SELECT 1` after successful connection attempt ([#2997](https://github.com/googleapis/mcp-toolbox/issues/2997)) ([6ed9700](https://github.com/googleapis/mcp-toolbox/commit/6ed9700e15f08b31e65eb0afa605f4a8ea937e66))
* **tools/bigquerysql:** Add semantic search support ([#2890](https://github.com/googleapis/mcp-toolbox/issues/2890)) ([862c396](https://github.com/googleapis/mcp-toolbox/commit/862c396cadfa1d95d12cc121312a81035c22cbad))
* **tools/elasticsearch-execute-esql:** Add Tool to execute arbitrary ES/QL queries ([#3013](https://github.com/googleapis/mcp-toolbox/issues/3013)) ([ae49fb7](https://github.com/googleapis/mcp-toolbox/commit/ae49fb737031d783b6734a0ea35488dd0f4c7ccc))
* **tools/elasticsearch:** Add vector search support and remove query passing through param ([#2891](https://github.com/googleapis/mcp-toolbox/issues/2891)) ([d44e879](https://github.com/googleapis/mcp-toolbox/commit/d44e879336f6628790e3f1dca2477cb56fe8f080))
* **tools/looker:** Refactor looker-git-branch tool into 5 separate tools ([#2976](https://github.com/googleapis/mcp-toolbox/issues/2976)) ([b2472d4](https://github.com/googleapis/mcp-toolbox/commit/b2472d4926dacc496fc6956185fb281b5e75f56f))
* **tools/mysql:** Add list-table-stats-tool to list table statistics in MySQL and Cloud SQL MySQL source. ([#2938](https://github.com/googleapis/mcp-toolbox/issues/2938)) ([dc2c2b4](https://github.com/googleapis/mcp-toolbox/commit/dc2c2b44e512e34d4d3a0b9c63b59374c37c4c4a))

## [0.32.0](https://github.com/googleapis/mcp-toolbox/compare/v0.31.0...v0.32.0) (2026-04-08)


Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ To install Toolbox as a binary:
>
> ```sh
> # see releases page for other versions
> export VERSION=0.32.0
> export VERSION=1.0.0
> curl -L -o toolbox https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/linux/amd64/toolbox
> chmod +x toolbox
> ```
Expand All @@ -253,7 +253,7 @@ To install Toolbox as a binary:
>
> ```sh
> # see releases page for other versions
> export VERSION=0.32.0
> export VERSION=1.0.0
> curl -L -o toolbox https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/darwin/arm64/toolbox
> chmod +x toolbox
> ```
Expand All @@ -266,7 +266,7 @@ To install Toolbox as a binary:
>
> ```sh
> # see releases page for other versions
> export VERSION=0.32.0
> export VERSION=1.0.0
> curl -L -o toolbox https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/darwin/amd64/toolbox
> chmod +x toolbox
> ```
Expand All @@ -279,7 +279,7 @@ To install Toolbox as a binary:
>
> ```cmd
> :: see releases page for other versions
> set VERSION=0.32.0
> set VERSION=1.0.0
> curl -o toolbox.exe "https://storage.googleapis.com/mcp-toolbox-for-databases/v%VERSION%/windows/amd64/toolbox.exe"
> ```
>
Expand All @@ -291,7 +291,7 @@ To install Toolbox as a binary:
>
> ```powershell
> # see releases page for other versions
> $VERSION = "0.32.0"
> $VERSION = "1.0.0"
> curl.exe -o toolbox.exe "https://storage.googleapis.com/mcp-toolbox-for-databases/v$VERSION/windows/amd64/toolbox.exe"
> ```
>
Expand All @@ -304,7 +304,7 @@ You can also install Toolbox as a container:

```sh
# see releases page for other versions
export VERSION=0.32.0
export VERSION=1.0.0
docker pull us-central1-docker.pkg.dev/database-toolbox/toolbox/toolbox:$VERSION
```

Expand All @@ -328,7 +328,7 @@ To install from source, ensure you have the latest version of
[Go installed](https://go.dev/doc/install), and then run the following command:

```sh
go install github.com/googleapis/mcp-toolbox@v0.32.0
go install github.com/googleapis/mcp-toolbox@v1.0.0
```
<!-- {x-release-please-end} -->

Expand Down
21 changes: 15 additions & 6 deletions UPGRADING.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,16 @@ This guide outlines what has changed and the steps you need to take to upgrade.

## 🚨 Breaking Changes (Action Required)

### 1. Endpoint Transition: `/api` disabled by default
### 1. Repository Rename: genai-toolbox ➡️ mcp-toolbox
The GitHub repository has been officially renamed to `googleapis/mcp-toolbox`. To update your local environment, run the following commands:

1. Rename your local directory: `cd .. && mv genai-toolbox mcp-toolbox && cd mcp-toolbox`

2. Update the remote URL: `git remote set-url origin git@github.com:googleapis/mcp-toolbox.git`

3. Verify the update: `git remote -v`

### 2. Endpoint Transition: `/api` disabled by default
The legacy `/api` endpoint for the native Toolbox protocol is now disabled by default. All official SDKs have been updated to use the `/mcp` endpoint, which aligns with the standard Model Context Protocol (MCP) specification.

If you still require the legacy `/api` endpoint, you must explicitly activate it using a new command-line flag.
Expand All @@ -27,15 +36,15 @@ If you still require the legacy `/api` endpoint, you must explicitly activate it
relied on a non-standard feature that is missing from the new implementation, please submit a
feature request on our [GitHub Issues page](https://github.com/googleapis/mcp-toolbox/issues).

### 2. Strict Tool Naming Validation (SEP986)
### 3. Strict Tool Naming Validation (SEP986)
Tool names are now strictly validated against [ModelContextProtocol SEP986 guidelines](https://github.com/alexhancock/modelcontextprotocol/blob/main/docs/specification/draft/server/tools.mdx#tool-names) prior to MCP initialization.
* **Migration:** Ensure all your tool names **only** contain alphanumeric characters, hyphens (`-`), underscores (`_`), and periods (`.`). Any other special characters will cause initialization to fail.

### 3. Removed CLI Flags
### 4. Removed CLI Flags
The legacy snake_case flag `--tools_file` has been completely removed.
* **Migration:** Update your deployment scripts to use `--config` instead.

### 4. Singular `kind` Values in Configuration
### 5. Singular `kind` Values in Configuration
_(This step applies only if you are currently using the new flat format.)_

All primitive kind fields in configuration files have been updated to use singular nouns instead of plural. For example, `kind: sources` is now `kind: source`, and `kind: tools` is now `kind: tool`.
Expand All @@ -44,12 +53,12 @@ All primitive kind fields in configuration files have been updated to use singul
values. _(Note: If you transitioned to the flat format using the `./toolbox migrate` command, this step was handled automatically.)_


### 5. Configuration Schema: `authSources` renamed
### 6. Configuration Schema: `authSources` renamed
The `authSources` field is no longer supported in configuration files.
* **Migration:** Rename all instances of `authSources` to `authService` in your
configuration files.

### 6. CloudSQL for SQL Server: `ipAddress` removed
### 7. CloudSQL for SQL Server: `ipAddress` removed
The `ipAddress` field for the CloudSQL for SQL Server source was redundant and has been removed.
* **Migration:** Remove the `ipAddress` field from your CloudSQL for SQL Server configurations.

Expand Down
4 changes: 2 additions & 2 deletions cmd/internal/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1763,7 +1763,7 @@ func TestPrebuiltTools(t *testing.T) {
},
"monitor": tools.ToolsetConfig{
Name: "monitor",
ToolNames: []string{"get_query_plan", "list_active_queries", "get_query_metrics", "get_system_metrics", "list_table_fragmentation", "list_tables_missing_unique_indexes"},
ToolNames: []string{"get_query_plan", "list_active_queries", "get_query_metrics", "get_system_metrics", "list_table_fragmentation", "list_table_stats", "list_tables_missing_unique_indexes"},
},
"lifecycle": tools.ToolsetConfig{
Name: "lifecycle",
Expand Down Expand Up @@ -1847,7 +1847,7 @@ func TestPrebuiltTools(t *testing.T) {
},
"monitor": tools.ToolsetConfig{
Name: "monitor",
ToolNames: []string{"get_query_plan", "list_active_queries", "list_table_fragmentation", "list_tables_missing_unique_indexes"},
ToolNames: []string{"get_query_plan", "list_active_queries", "list_table_fragmentation", "list_table_stats", "list_tables_missing_unique_indexes"},
},
},
},
Expand Down
1 change: 1 addition & 0 deletions cmd/internal/imports.go
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ import (
_ "github.com/googleapis/mcp-toolbox/internal/tools/mysql/mysqllisttablefragmentation"
_ "github.com/googleapis/mcp-toolbox/internal/tools/mysql/mysqllisttables"
_ "github.com/googleapis/mcp-toolbox/internal/tools/mysql/mysqllisttablesmissinguniqueindexes"
_ "github.com/googleapis/mcp-toolbox/internal/tools/mysql/mysqllisttablestats"
_ "github.com/googleapis/mcp-toolbox/internal/tools/mysql/mysqlsql"
_ "github.com/googleapis/mcp-toolbox/internal/tools/neo4j/neo4jcypher"
_ "github.com/googleapis/mcp-toolbox/internal/tools/neo4j/neo4jexecutecypher"
Expand Down
2 changes: 1 addition & 1 deletion cmd/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.32.0
1.0.0
1 change: 1 addition & 0 deletions docs/CLOUDSQLMYSQL_README.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ The Cloud SQL for MySQL MCP server provides the following tools:
| `list_tables` | Lists detailed schema information for user-created tables. |
| `list_tables_missing_unique_indexes` | Find tables that do not have primary or unique key constraint. |
| `list_table_fragmentation` | List table fragmentation in MySQL. |
| `list_table_stats` | List table statistics in MySQL. |

## Custom MCP Server Configuration

Expand Down
Loading
Loading