本文档介绍了如何将 Spanner 实例连接到支持 Model Context Protocol (MCP) 的 IDE。MCP 是一种开放协议,用于将大语言模型 (LLM) 连接到 Spanner 等数据源。连接后,LLM 代理可以查询 Spanner 实例并与之互动。
本文档介绍了适用于以下 IDE 的连接过程:
- Claude Code
- Claude for Desktop
- Cline(VS Code 扩展程序)
- Cursor
- Visual Studio Code (Copilot)
- Windsurf (Codium)
- Gemini CLI
- Gemini Code Assist
准备工作
在 Google Cloud 控制台的项目选择器页面上,选择或创建 Google Cloud 项目。
设置 Spanner 实例
配置完成此任务所需的角色和权限。调用 LLM 代理的用户需要拥有 Spanner Database User 角色 (
roles/spanner.databaseUser
) 或等效的 Identity and Access Management 权限才能连接到实例。需要在数据库级授予此角色。为您的环境配置应用默认凭证 (ADC)。
安装 MCP Toolbox
以二进制文件形式下载最新版本的 MCP Toolbox。选择与您的操作系统 (OS) 和 CPU 架构对应的二进制文件。您必须使用 MCP Toolbox 0.7.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
设置 MCP IDE
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:
{ "mcp": { "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:
{ "mcp": { "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" } } } }
Gemini CLI
1. 安装 Gemini CLI。
2. 在项目根目录中,创建名为
.gemini
的文件夹,并在其中创建 settings.json
文件。3. 根据
settings.json
文件中的 Spanner 方言添加以下配置之一。4. 将以下变量替换为您的值:
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" } } } }
Gemini Code Assist
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" } } } }
与 Spanner 实例互动
您的 IDE 现在已使用 MCP 连接到 Spanner。LLM 代理现在可以列出表、创建表或定义和执行其他 SQL 语句。
LLM 可使用以下工具:
- list_tables:列出表和说明
- execute_sql:执行任何 SQL 语句
- execute_sql_dql:执行 DQL SQL 语句