将 IDE 连接到 Spanner

本文档介绍了如何将 Spanner 实例连接到支持 Model Context Protocol (MCP) 的 IDE。MCP 是一种开放协议,用于将大语言模型 (LLM) 连接到 Spanner 等数据源。连接后,LLM 代理可以查询 Spanner 实例并与之互动。

本文档介绍了适用于以下 IDE 的连接过程:

准备工作

  1. 在 Google Cloud 控制台的项目选择器页面上,选择或创建 Google Cloud 项目。

  2. 确保您的 Google Cloud 项目已启用结算功能

设置 Spanner 实例

  1. 在 Google Cloud 项目中启用 Spanner API

  2. 创建或选择 Spanner 实例和数据库

  3. 配置完成此任务所需的角色和权限。调用 LLM 代理的用户需要拥有 Spanner Database User 角色 (roles/spanner.databaseUser) 或等效的 Identity and Access Management 权限才能连接到实例。需要在数据库级授予此角色。

  4. 为您的环境配置应用默认凭证 (ADC)

安装 MCP Toolbox

  1. 以二进制文件形式下载最新版本的 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

  2. 将该二进制文件设为可执行文件:

    chmod +x toolbox
    
  3. 验证安装:

    ./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 数据库名称。
5. 保存文件。

使用 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 数据库名称。
6. 保存文件。

使用 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 语句