本文档介绍了如何将 Spanner 实例连接到支持 Model Context Protocol (MCP) 的各种开发者工具。
我们建议使用 Gemini CLI 的专用 Spanner 扩展程序。此扩展程序无需设置单独的服务器连接。您可以将 Gemini Code Assist 配置为使用 Gemini CLI,从而在 IDE 中获得类似的设置优势。如需了解详情,请参阅 Gemini CLI 扩展程序 - Spanner。
或者,支持 MCP 的其他 IDE 和开发者工具可以通过 MCP Toolbox for Databases 进行连接。MCP Toolbox 是一款开源 MCP 服务器,旨在将 AI 智能体连接到您的数据。它可处理身份验证和连接池等任务,让您可以直接通过 IDE 使用自然语言与数据进行交互。
在 Spanner 中使用 Gemini CLI 扩展程序
Spanner 与 Gemini CLI 的集成是通过一个开源扩展程序实现的,该扩展程序提供了比标准 MCP Toolbox 连接更多的附加功能。除了提供安装、配置和使用示例的详细信息外,该扩展程序还提供了一个安装流程和一套工具。如果您使用 Gemini CLI 扩展程序,则无需安装 MCP Toolbox。如需了解详情,请参阅 Gemini CLI 扩展程序 - Spanner。
spanner
扩展程序包含用于列出表以及执行 SQL 和 SQL DQL 语句的工具。
工具 | 自然语言提示示例 |
---|---|
list_tables |
我的 Spanner 实例中有哪些表? |
execute_sql |
将测试数据插入到商品表中。 |
execute_sql_dql |
哪些电子类商品在美国销售? |
准备工作
在 Google Cloud 控制台的项目选择器页面上,选择或创建 Google Cloud 项目。
设置 Spanner 实例
配置完成此任务所需的角色和权限。调用 LLM 智能体的用户需要在数据库级层拥有以下角色:
Cloud Spanner Database Reader (
roles/spanner.databaseReader
),用于执行 DQL 查询和列出表。Cloud Spanner Database User (
roles/spanner.databaseUser
),用于执行 DML 查询。
为您的环境配置应用默认凭证 (ADC)。
安装 MCP Toolbox
以二进制文件形式下载最新版本的 MCP Toolbox。选择与您的操作系统 (OS) 和 CPU 架构对应的二进制文件。您必须使用 MCP Toolbox 0.15.0 版或更高版本:
linux/amd64
curl -O https://storage.googleapis.com/genai-toolbox/version/linux/amd64/toolbox
darwin/arm64
curl -O https://storage.googleapis.com/genai-toolbox/version/darwin/arm64/toolbox
darwin/amd64
curl -O https://storage.googleapis.com/genai-toolbox/version/darwin/amd64/toolbox
windows/amd64
curl -O https://storage.googleapis.com/genai-toolbox/version/windows/amd64/toolbox
将该二进制文件设为可执行文件:
chmod +x toolbox
验证安装:
./toolbox --version
设置智能体工具
本部分介绍了如何配置各种开发者工具,以便连接到 Spanner 实例。从以下选项中选择您的智能体工具:
Gemini CLI
- 安装 Gemini CLI。
- 使用以下命令从 GitHub 代码库安装适用于 Gemini CLI 的 Spanner 扩展程序:
- 设置以下环境变量以连接到 Spanner 实例:
替换以下内容:export SPANNER_PROJECT: "PROJECT_ID" export SPANNER_INSTANCE: "INSTANCE_NAME" export SPANNER_DATABASE: "DATABASE_NAME" export SPANNER_DIALECT: "DIALECT_NAME"
PROJECT_ID
:您的 Google Cloud 项目 ID。INSTANCE_NAME
:您的 Spanner 实例名称。DATABASE_NAME
:您的 Spanner 数据库名称。DIALECT_NAME
:您的 Spanner SQL 方言。接受googlesql
或postgresql
。如果未定义,则默认为googlesql
。
- 以互动模式启动 Gemini CLI:
该 CLI 会自动加载适用于 Gemini CLI 的 Spanner 扩展程序及其工具,您可以使用这些工具与数据库进行交互。gemini
gemini extensions install https://github.com/gemini-cli-extensions/spanner
Gemini Code Assist
我们强烈建议您将 Gemini Code Assist 配置为使用 Gemini CLI,因为这种方法无需手动配置 MCP 服务器。不过,您仍可在以下部分找到手动配置 MCP 服务器的说明:
1. 在 VS Code 中安装 Gemini Code Assist 扩展程序。
2. 启用代理模式,并将代理模型切换为 Gemini。
3. 在项目根目录中,创建名为
.gemini
的文件夹,并在其中创建 settings.json
文件。4. 根据
settings.json
文件中的 Spanner 方言添加以下配置之一。5. 将以下变量替换为您的值:
PROJECT_ID
:您的 Google Cloud 项目 ID。INSTANCE_NAME
:您的 Spanner 实例名称。DATABASE_NAME
:您的 Spanner 数据库名称。
使用 GoogleSQL 方言的 Spanner:
{ "mcpServers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }
使用 PostgreSQL 方言的 Spanner:
{ "mcpServers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner-postgres","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }
Claude Code
1. 安装 Claude Code。
2. 在项目根目录中创建
.mcp.json
文件(如果尚不存在)。3. 根据您的 Spanner 方言添加以下配置之一,将环境变量替换为您的值,然后保存文件:
使用 GoogleSQL 方言的 Spanner:
{ "mcpServers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }
使用 PostgreSQL 方言的 Spanner:
{ "mcpServers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner-postgres","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }
Claude for Desktop
1. 打开 Claude for Desktop,然后前往设置。
2. 在开发者标签页中,点击修改配置以打开配置文件。
3. 根据您的 Spanner 方言添加以下配置之一,将环境变量替换为您的值,然后保存文件:
使用 GoogleSQL 方言的 Spanner:
{ "mcpServers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }
使用 PostgreSQL 方言的 Spanner:
{ "mcpServers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner-postgres","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }
4. 重启 Claude for Desktop。
5. 新聊天界面会显示锤子 (MCP) 图标以及新的 MCP 服务器。
Cline
1. 在 VS Code 中打开 Cline 扩展程序,然后点击 MCP 服务器图标。
2. 点按“配置 MCP 服务器”以打开配置文件。
3. 根据您的 Spanner 方言添加以下配置之一,将环境变量替换为您的值,然后保存文件:
使用 GoogleSQL 方言的 Spanner:
{ "mcpServers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }
使用 PostgreSQL 方言的 Spanner:
{ "mcpServers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner-postgres","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }
服务器成功连接后,系统会显示绿色的活跃状态。
光标
1. 在项目根目录中创建
.cursor
目录(如果尚不存在)。2. 创建
.cursor/mcp.json
文件(如果尚不存在)并打开该文件。3. 根据您的 Spanner 方言添加以下配置之一,将环境变量替换为您的值,然后保存文件:
使用 GoogleSQL 方言的 Spanner:
{ "mcpServers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }
使用 PostgreSQL 方言的 Spanner:
{ "mcpServers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner-postgres","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }
4. 打开 Cursor,然后依次前往设置 > Cursor 设置 > MCP。服务器连接时,系统会显示绿色的活跃状态。
Visual Studio Code (Copilot)
1. 打开 VS Code,并在项目根目录中创建
.vscode
目录(如果尚不存在)。2. 创建
.vscode/mcp.json
文件(如果尚不存在)并打开该文件。3. 根据您的 Spanner 方言添加以下配置之一,将环境变量替换为您的值,然后保存文件:
使用 GoogleSQL 方言的 Spanner:
{ "servers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }
使用 PostgreSQL 方言的 Spanner:
{ "servers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner-postgres","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }
Windsurf
1. 打开 Windsurf 并前往 Cascade 助理。
2. 点击 MCP 图标,然后点击配置以打开配置文件。
3. 根据您的 Spanner 方言添加以下配置之一,将环境变量替换为您的值,然后保存文件:
使用 GoogleSQL 方言的 Spanner:
{ "mcpServers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }
使用 PostgreSQL 方言的 Spanner:
{ "mcpServers": { "spanner": { "command": "./PATH/TO/toolbox", "args": ["--prebuilt","spanner-postgres","--stdio"], "env": { "SPANNER_PROJECT": "PROJECT_ID", "SPANNER_INSTANCE": "INSTANCE_NAME", "SPANNER_DATABASE": "DATABASE_NAME" } } } }