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 데이터베이스 사용자 역할(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 Servers 아이콘을 클릭합니다.
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. 커서를 열고 설정 > 커서 설정 > 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 문 실행