모델 컨텍스트 프로토콜 (MCP) 서버는 대규모 언어 모델 (LLM) 또는 AI 애플리케이션에 컨텍스트, 데이터 또는 기능을 제공하는 외부 서비스 간의 프록시 역할을 합니다. MCP 서버는 AI 애플리케이션을 데이터베이스 및 웹 서비스와 같은 외부 시스템에 연결하여 AI 애플리케이션이 이해할 수 있는 형식으로 응답을 변환합니다.
서버 설정
사용하기 전에 MCP 서버를 사용 설정하고 인증을 설정해야 합니다. Google 및 Google Cloud 원격 MCP 서버 사용에 대한 자세한 내용은 Google Cloud MCP 서버 개요를 참고하세요.
MCP용 Cloud SQL Admin API
서버 엔드포인트
MCP 서비스 엔드포인트는 AI 애플리케이션 (MCP 클라이언트의 호스트)이 보안 표준 연결을 설정하는 데 사용하는 MCP 서버의 네트워크 주소 및 통신 인터페이스 (일반적으로 URL)입니다. LLM이 컨텍스트를 요청하거나, 도구를 호출하거나, 리소스에 액세스할 때 사용하는 연락처입니다. Google MCP 엔드포인트는 전역 또는 리전일 수 있습니다.
cloud-sql MCP 서버에는 다음과 같은 MCP 엔드포인트가 있습니다.
- https://sqladmin.googleapis.com/mcp
MCP 도구
MCP 도구는 MCP 서버가 LLM 또는 AI 애플리케이션에 노출하여 실제 작업을 실행하는 함수 또는 실행 가능한 기능입니다.
cloud-sql MCP 서버에는 다음 도구가 있습니다.
| MCP 도구 | |
|---|---|
| list_instances | 프로젝트의 모든 Cloud SQL 인스턴스를 나열합니다. |
| get_instance | Cloud SQL 인스턴스의 세부정보를 가져옵니다. |
| create_instance |
Cloud SQL 인스턴스 생성을 시작합니다.
달리 지정하지 않는 한 새로 생성된 인스턴스는 개발 환경의 기본 인스턴스 구성을 사용합니다. 다음은 개발 환경의 인스턴스에 대한 기본 구성입니다. 프로덕션 환경의 인스턴스에는 다음 구성을 사용하는 것이 좋습니다. SQL Server에는 다음 인스턴스 구성이 권장됩니다. |
| execute_sql |
Cloud SQL 인스턴스에서 데이터 정의 언어 (DDL), 데이터 제어 언어 (DCL), 데이터 쿼리 언어 (DQL) 또는 데이터 조작 언어 (DML) 문을 비롯한 유효한 SQL 문을 실행합니다.
'인스턴스에 IAM 인증이 사용 설정되지 않음'과 같은 오류가 표시되면 '인스턴스에서 executeSql을 사용하여 이 인스턴스에 액세스할 수 없습니다'와 같은 오류가 표시되면 인증 오류가 표시되는 경우:
|
| execute_sql_readonly |
Cloud SQL 인스턴스에서 유효한 읽기 전용 SQL 문을 실행합니다.
'인스턴스에 IAM 인증이 사용 설정되지 않음'과 같은 오류가 표시되면 '인스턴스에서 executeSql을 사용하여 이 인스턴스에 액세스할 수 없습니다'와 같은 오류가 표시되면 인증 오류가 표시되는 경우:
|
| get_operation | 장기 실행 작업 상태를 가져옵니다. 장기 실행 작업은 완료하는 데 몇 분 정도 걸릴 수 있습니다. 작업에 시간이 오래 걸리는 경우 명령줄 도구를 사용하여 30초 동안 일시중지한 후 작업 상태를 다시 확인합니다. |
| create_user |
Cloud SQL 인스턴스의 데이터베이스 사용자를 만듭니다.
PostgreSQL에서 IAM 사용자를 만들려면 다음 단계를 따르세요.
IAM 사용자를 위해 생성된 데이터베이스 사용자 이름은 PostgreSQL에서 IAM 서비스 계정을 만들려면 다음 단계를 따르세요.
IAM 서비스 계정에 대해 생성된 데이터베이스 사용자 이름은 MySQL에서 IAM 사용자 또는 IAM 서비스 계정을 만들려면 다음 단계를 따르세요.
IAM 사용자를 위해 생성된 데이터베이스 사용자 이름은
IAM 서비스 계정에 대해 생성된 데이터베이스 사용자 이름은 |
| update_user |
Cloud SQL 인스턴스의 데이터베이스 사용자를 업데이트합니다. 이 도구는 데이터베이스 역할을 할당하기 위해 사용자를 업데이트하는 것만 지원합니다.
사용자 역할을 업데이트하기 위한 주요 매개변수는 다음과 같습니다.
역할 업데이트 작동 방식:
예:
|
| clone_instance |
Cloud SQL 인스턴스를 소스 인스턴스의 클론으로 만듭니다.
|
| update_instance |
Cloud SQL 인스턴스의 구성 설정을 부분적으로 업데이트합니다.
|
| list_users | Cloud SQL 인스턴스의 모든 데이터베이스 사용자를 나열합니다. |
| create_backup | Cloud SQL 인스턴스에서 백업을 수행합니다. 항상 요청에 프로젝트 및 인스턴스 필드를 채웁니다. 백업의 위치 (리전)와 설명을 선택적으로 제공할 수도 있으며, 이 경우 해당 요청 필드도 채워야 합니다. |
| restore_backup |
Cloud SQL 인스턴스로 백업을 복원합니다. target_instance 및 target_project는 요청에 제공되고 채워져야 합니다. 백업 식별자는 다음과 같은 여러 방법으로 제공할 수 있습니다.
식별자를 사용하여 요청의 요청에 source_project가 입력되어야 합니다. 식별자가 backup_run_id인 경우 source_project가 제공됩니다. 식별자가 백업 URI인 경우 URI에서 source_project를 추출해야 할 수 있습니다. 추출된 source_project를 다른 방식으로 제공되는 target_project와 혼동하지 마세요. 또한 식별자가 backup_run_id인 경우 요청에 source_instance를 제공하고 입력해야 합니다. 복원 전에 인스턴스를 만들려고 하지 마세요. 필요한 경우 복원 자체에서 인스턴스를 만듭니다. 복원을 실행하기 전에 사용자에게 매개변수를 확인합니다. |
| import_data |
Cloud SQL 인스턴스로 데이터를 가져옵니다. 파일이 Cloud Storage에 파일을 업로드하기 전에 제공된 프로젝트에서 기존 버킷을 사용할지 아니면 새 버킷을 만들지 고려하세요. 파일이 Cloud Storage에 업로드된 후 인스턴스 서비스 계정에는 Cloud Storage 버킷에서 업로드된 파일을 읽을 수 있는 충분한 권한이 있어야 합니다. 이 작업은 다음과 같이 수행할 수 있습니다.
권한이 부여되면 데이터를 가져올 수 있습니다. 선택적 매개변수는 비워 두고 시스템 기본값을 사용하는 것이 좋습니다. 파일 유형은 일반적으로 파일 확장자로 확인할 수 있습니다. 예를 들어 파일이 SQL 파일인 경우 CSV 파일의 다음은 MySQL용 샘플 SQL 데이터베이스 이름이 SQL 파일에 있어야 하므로 MySQL에는 PostgreSQL의 경우
|
| postgres_upgrade_precheck |
PostgreSQL용 Cloud SQL 인스턴스가 지정된 타겟 버전으로의 메이저 버전 업그레이드를 준비하고 있는지 확인합니다.
이 도구를 사용하면 실제 업그레이드를 시도하기 전에 잠재적인 문제를 식별하여 실패 또는 다운타임의 위험을 줄일 수 있습니다. 이 도구는 PostgreSQL 기본 인스턴스에서만 지원되며 읽기 복제본에서는 실행되지 않습니다. 사전 검사에서는 일반적으로 다음을 평가합니다.
이 도구는 장기 실행 작업을 반환합니다. 이 호출에서 반환된 작업 이름과 함께 중요: 작업 상태가 DONE이 되면 발견 사항은 다음과 같이 구조화됩니다.
각 발견 사항에는 메시지와 필요한 조치가 포함되어야 합니다. 메이저 버전 업그레이드를 진행하기 전에 보고된 문제를 해결하는 것이 중요합니다. 이 사전 점검을 실행해도 인스턴스의 가용성에는 영향을 미치지 않습니다. |
MCP 도구 사양 가져오기
MCP 서버의 모든 도구에 대한 MCP 도구 사양을 가져오려면 tools/list 메서드를 사용하세요. 다음 예시에서는 curl을 사용하여 MCP 서버 내에서 현재 사용할 수 있는 모든 도구와 사양을 나열하는 방법을 보여줍니다.
| curl 요청 |
|---|
curl --location 'https://sqladmin.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/list", "jsonrpc": "2.0", "id": 1 }' |