Azure MCP Server를 사용하면 자연어 프롬프트를 사용하여 Azure Database for MySQL 서버, 데이터베이스 및 테이블을 관리할 수 있습니다. 복잡한 구문 없이 MySQL 리소스 관리를 간소화합니다.
Azure Database for MySQL은 MySQL 커뮤니티 버전에서 제공하는 완전히 관리되는 관계형 데이터베이스 서비스입니다. Azure에서 MySQL 데이터베이스를 호스트하는 데 사용합니다. 예측 가능한 성능과 동적 확장성으로 중요 업무용 워크로드를 처리합니다.
비고
도구 매개 변수: Azure MCP Server 도구는 작업을 완료하는 데 필요한 데이터에 대한 매개 변수를 정의합니다. 이러한 매개 변수 중 일부는 각 도구와 관련이 있으며 아래에 설명되어 있습니다. 다른 매개 변수는 전역이며 모든 도구에서 공유됩니다. 자세한 내용은 도구 매개 변수를 참조하세요.
데이터베이스: 모든 데이터베이스 나열
지정된 Azure Database for MySQL 유연한 서버 인스턴스에서 사용할 수 있는 모든 데이터베이스를 나열합니다. 이 명령은 데이터베이스 구조에 대한 가시성을 제공하고 연결 및 쿼리 작업에 대한 데이터베이스를 식별하는 데 도움이 됩니다.
프롬프트 예제는 다음과 같습니다.
- 데이터베이스 나열: "사용자 'dbadmin'이 있는 리소스 그룹 'database-rg'의 서버 'my-mysql-server'에 있는 모든 데이터베이스 나열"
- 데이터베이스 표시: "사용자 'appuser'를 사용하여 리소스 그룹 'prod-rg'의 MySQL 서버 'prod-mysql-server'에 있는 모든 데이터베이스 표시"
- 이름으로 필터링: "'test'로 시작하는 사용자 '개발자'가 있는 리소스 그룹 'dev-rg'의 서버 'dev-mysql-server'에 데이터베이스 나열"
- 리소스 그룹의 목록: "리소스 그룹 'analytics-rg'의 서버 'analytics-mysql-server'에 사용자 'analyst'로 데이터베이스 나열"
- 사용자가 액세스할 수 있는 데이터베이스 표시: "리소스 그룹 'reporting-rg'의 서버 'report-mysql-server'에서 사용자가 'readonly'로 액세스할 수 있는 데이터베이스 나열"
| 매개 변수 | 필수 또는 선택 사항 | Description |
|---|---|---|
| 리소스 그룹 | 필수 | Azure 리소스 그룹의 이름입니다. Azure 리소스에 대한 논리적 컨테이너입니다. |
| User | 필수 | MySQL 서버에 액세스할 사용자 이름입니다. |
| 서버 | 필수 | 액세스할 MySQL 서버입니다. |
파괴: ❌ | Idempotent: ✅ | 오픈 월드: ❌ | 읽기 전용: ✅ | 비밀: ❌ | 로컬 필수: ❌
데이터베이스: 쿼리
Azure Database for MySQL 유연한 서버의 데이터베이스에 대해 안전한 읽기 전용 SQL SELECT 쿼리를 실행합니다. 이 도구를 사용하여 테이블 데이터를 수정하지 않고 탐색하거나 검색할 수 있습니다.
모범 사례:
- 필요한 열만 나열합니다(사용하지 마세요
SELECT *). - 결과 범위를 좁히려면 WHERE 필터를 추가합니다.
- 페이징에 LIMIT/OFFSET을 사용합니다.
- 결정적 결과에는 ORDER BY를 사용합니다.
- 불필요한 중요한 데이터를 반환하지 않습니다.
허용:
- 단일 SELECT 문만 허용됩니다.
허용되지 않음:
- SELECT가 아닌 문(INSERT, UPDATE, DELETE, REPLACE, MERGE, TRUNCATE, ALTER, CREATE, DROP).
- 다중 문입니다.
- 쓰기 작업을 숨기는 주석입니다.
- 트랜잭션 제어 문(BEGIN, COMMIT, ROLLBACK).
- INTO OUTFILE 및 기타 파괴적인 키워드.
Example:
SELECT ID, name, status FROM customers WHERE status = 'Active' ORDER BY name LIMIT 50;
프롬프트 예제는 다음과 같습니다.
- 쿼리 실행: "사용자 'appuser'를 사용하여 리소스 그룹 'sales-rg'의 서버 'prod-mysql-server'에 있는 데이터베이스 'salesdb'에서 쿼리 'SELECT ID, 이름 FROM customers WHERE status = 'Active' ORDER BY name LIMIT 50'을 실행합니다."
- 개수 행: "쿼리 SELECT COUNT(*) FROM orders WHERE status = 'completed' on database 'salesdb' on server 'prod-mysql-server' in resource group 'sales-rg' with user 'analyst'"
- 필터링된 쿼리: "쿼리 'SELECT name FROM users WHERE created_at > '2025-01-01' ORDER BY created_at LIMIT 25' 서버의 'app-mysql-server' 서버 'app-mysql-server' 리소스 그룹 'app-rg'에서 사용자 'developer'와 함께 실행"
- 상위 제품: "쿼리 'SELECT product_id, SUM(quantity) AS TOTAL FROM sales WHERE sale_date >= '2025-01-01' GROUP BY product_id ORDER BY total DESC LIMIT 10' 서버 'analytics-mysql-server'의 서버 'analytics-mysql-server'에서 'analytics-rg' 사용자 'analyst'의 데이터베이스 'analytics-mysql-server'
- 고유 값: "리소스 그룹 'inventory-rg'의 서버 'inventory-mysql-server'에서 데이터베이스 '인벤토리'에서 'SELECT DISTINCT Category FROM products LIMIT 20' 쿼리를 실행합니다.'
| 매개 변수 | 필수 또는 선택 사항 | Description |
|---|---|---|
| 리소스 그룹 | 필수 | Azure 리소스 그룹의 이름입니다. Azure 리소스에 대한 논리적 컨테이너입니다. |
| User | 필수 | MySQL 서버에 액세스할 사용자 이름입니다. |
| 서버 | 필수 | 액세스할 MySQL 서버입니다. |
| Database | 필수 | 액세스할 MySQL 데이터베이스입니다. |
| 쿼리 | 필수 | MySQL 데이터베이스에 대해 실행할 SQL 쿼리입니다. |
파괴: ❌ | Idempotent: ✅ | 오픈 월드: ❌ | 읽기 전용: ✅ | 비밀: ❌ | 로컬 필수: ❌
서버: 구성 가져오기
지정된 Azure Database for MySQL 유연한 서버 인스턴스에 대한 포괄적인 구성 세부 정보를 검색합니다. 이 명령은 서버 설정, 성능 매개 변수, 보안 구성 및 데이터베이스 관리 및 최적화에 필수적인 운영 특성에 대한 인사이트를 제공합니다. 구성 데이터를 JSON 형식(예: , ServerName, Location, VersionSKUStorageSizeGB및 BackupRetentionDays 속성)GeoRedundantBackup으로 반환합니다.
프롬프트 예제는 다음과 같습니다.
- 서버 구성 가져오기: "사용자 'dbadmin'을 사용하여 리소스 그룹 'database-rg'에서 서버 'prod-mysql-server'에 대한 구성 세부 정보를 가져옵니다."
- 버전 및 SKU 표시: "사용자 'developer'가 있는 리소스 그룹 'app-rg'에서 서버 'app-mysql-server'에 대한 MySQL 엔진 버전 및 SKU 표시"
- 백업 보존 가져오기: "사용자 'backup-admin'이 있는 리소스 그룹 'backup-rg'의 서버 'backup-mysql-server'에 대한 백업 보존 기간은 어떻게 됩니까?"
- 스토리지 할당 표시: "사용자 'analyst'를 사용하여 리소스 그룹 'analytics-rg'에서 서버 'analytics-mysql-server'에 대한 스토리지 할당 표시"
- 전체 구성 가져오기: "사용자 'sysadmin'을 사용하여 리소스 그룹 'prod-rg'에서 서버 'prod-mysql-server'에 대한 전체 구성 가져오기"
| 매개 변수 | 필수 또는 선택 사항 | Description |
|---|---|---|
| 리소스 그룹 | 필수 | Azure 리소스 그룹의 이름입니다. Azure 리소스에 대한 논리적 컨테이너입니다. |
| User | 필수 | MySQL 서버에 액세스할 사용자 이름입니다. |
| 서버 | 필수 | 액세스할 MySQL 서버입니다. |
파괴: ❌ | Idempotent: ✅ | 오픈 월드: ❌ | 읽기 전용: ✅ | 비밀: ❌ | 로컬 필수: ❌
서버: 리소스 그룹의 모든 인스턴스 나열
지정된 리소스 그룹 내의 모든 Azure Database for MySQL 유연한 서버 인스턴스를 나열합니다. 이 명령은 이름 및 현재 상태를 포함하여 사용 가능한 MySQL 서버 리소스의 인벤토리를 제공하므로 서버를 효율적으로 관리하고 리소스를 계획할 수 있습니다.
프롬프트 예제는 다음과 같습니다.
- 서버 나열: "사용자 'dbadmin'을 사용하여 리소스 그룹 'database-rg'의 모든 MySQL 유연한 서버 인스턴스 나열"
- 리소스 그룹의 서버 나열: "사용자 'sysadmin'을 사용하여 리소스 그룹 'prod-rg'에 MySQL 서버 나열"
- 지역별로 필터링: "사용자 'operator'를 사용하여 리소스 그룹 'eastus-rg'의 지역 'eastus'에 MySQL 서버 표시"
- 서버 상태 표시: "사용자 'monitor'를 사용하여 리소스 그룹 'monitoring-rg'의 현재 상태와 함께 서버를 나열합니다."
- 이름으로 서버 찾기: "사용자 'developer'가 있는 리소스 그룹 'prod-rg'에서 'prod-mysql-server'라는 서버 찾기"
| 매개 변수 | 필수 또는 선택 사항 | Description |
|---|---|---|
| 리소스 그룹 | 필수 | Azure 리소스 그룹의 이름입니다. Azure 리소스에 대한 논리적 컨테이너입니다. |
| User | 필수 | MySQL 서버에 액세스할 사용자 이름입니다. |
파괴: ❌ | Idempotent: ✅ | 오픈 월드: ❌ | 읽기 전용: ✅ | 비밀: ❌ | 로컬 필수: ❌
서버: get 매개 변수
Azure Database for MySQL 유연한 서버에서 단일 서버 구성 매개 변수의 현재 값을 검색합니다. 이 서버 명령을 사용하여 설정을 변경하기 전에 , max_connections또는 wait_timeout등의 설정을 slow_query_log검사합니다.
프롬프트 예제는 다음과 같습니다.
- 매개 변수 값 가져오기: "'dbadmin'이 있는 리소스 그룹 'database-rg'에서 서버 'prod-mysql-server'에 대한 매개 변수 'max_connections' 값 가져오기"
- slow_query_log 확인: "'analytics-mysql-server' 서버에서 'analytics-mysql-server' slow_query_log 매개 변수 'analytics-rg' 사용자 'analyst'로 매개 변수 가져오기"
- wait_timeout 가져오기: "리소스 그룹 'app-rg'에서 서버 'app-mysql-server'에 대한 'wait_timeout' 매개 변수 값을 사용자 'developer'와 함께 표시합니다."
- 버퍼 풀 크기 표시: "사용자 'sysadmin'이 있는 리소스 그룹 'prod-rg'에서 서버 'prod-mysql-server'에 대한 매개 변수 'innodb_buffer_pool_size' 가져오기"
- 변경 전 매개 변수 검색: "업데이트 전에 사용자 'dba'를 사용하여 리소스 그룹 'performance-rg'의 서버 'perf-mysql-server'에서 'max_allowed_packet' 매개 변수 검색"
| 매개 변수 | 필수 또는 선택 사항 | Description |
|---|---|---|
| 리소스 그룹 | 필수 | Azure 리소스 그룹의 이름입니다. Azure 리소스에 대한 논리적 컨테이너입니다. |
| User | 필수 | MySQL 서버에 액세스할 사용자 이름입니다. |
| 서버 | 필수 | 액세스할 MySQL 서버입니다. |
| Parameter | 필수 | 액세스할 MySQL 매개 변수입니다. |
파괴: ❌ | Idempotent: ✅ | 오픈 월드: ❌ | 읽기 전용: ✅ | 비밀: ❌ | 로컬 필수: ❌
서버: set 매개 변수
MySQL 서버 구성 매개 변수를 새 값으로 설정하거나 업데이트합니다. 이 명령을 사용하여 성능, 보안 또는 운영 동작을 최적화합니다. 이 명령을 사용하면 매개 변수 변경 내용이 서버의 현재 상태 및 제약 조건과 호환되는지 확인하기 위해 유효성 검사를 통해 미세 조정된 구성 관리를 수행할 수 있습니다.
프롬프트 예제는 다음과 같습니다.
- 매개 변수 설정: "'dbadmin'이 있는 리소스 그룹 'database-rg'의 서버 'prod-mysql-server'에서 'max_connections' 매개 변수를 '500' 값으로 설정합니다."
- 느린 쿼리 로그 사용: "'slow_query_log' 매개 변수를 'dba'를 사용하여 리소스 그룹 'analytics-rg'의 서버 'analytics-mysql-server'에서 'ON' 값으로 설정"
- 시간 제한 조정: "'wait_timeout' 매개 변수를 'sysadmin'이 있는 리소스 그룹 'app-rg'의 서버 'app-mysql-server'에서 '300' 값으로 설정합니다."
- 버퍼 풀 늘리기: "사용자 'dba'를 사용하여 리소스 그룹 'prod-rg'의 서버 'prod-mysql-server'에서 'innodb_buffer_pool_size' 매개 변수를 '2G' 값으로 설정합니다."
- 허용되는 최대 패킷 변경: "'max_allowed_packet' 매개 변수를 'dbadmin'을 사용하여 리소스 그룹 'performance-rg'의 서버 'perf-mysql-server'에서 '64M' 값으로 설정합니다."
| 매개 변수 | 필수 또는 선택 사항 | Description |
|---|---|---|
| 리소스 그룹 | 필수 | Azure 리소스 그룹의 이름입니다. Azure 리소스에 대한 논리적 컨테이너입니다. |
| User | 필수 | MySQL 서버에 액세스할 사용자 이름입니다. |
| 서버 | 필수 | 액세스할 MySQL 서버입니다. |
| Parameter | 필수 | 액세스할 MySQL 매개 변수입니다. |
| 값 | 필수 | MySQL 매개 변수에 대해 설정할 값입니다. |
파괴: ✅ | Idempotent: ✅ | 오픈 월드: ❌ | 읽기 전용: ❌ | 비밀: ❌ | 로컬 필수: ❌
테이블: 데이터베이스의 모든 테이블 나열
Azure Database for MySQL 유연한 서버 인스턴스에서 지정된 데이터베이스 내의 모든 테이블을 열거합니다. 이 명령은 테이블 개체의 전체 인벤토리를 제공하여 개발 작업에 대한 데이터베이스 탐색, 스키마 분석 및 데이터 아키텍처 이해를 용이하게 합니다.
프롬프트 예제는 다음과 같습니다.
- 테이블 나열: "사용자 'appuser'가 있는 리소스 그룹 'sales-rg'의 서버 'prod-mysql-server'에 있는 데이터베이스 'salesdb'의 모든 테이블 나열"
- 테이블 표시: "사용자 'developer'가 있는 리소스 그룹 'inventory-rg'의 서버 'inventory-mysql-server'의 데이터베이스 '인벤토리'에 있는 테이블은 무엇인가요?"
- 필터 테이블: "사용자 'developer'가 있는 리소스 그룹 'app-rg'의 서버 'app-mysql-server'에 있는 데이터베이스 'appdb'에서 'tmp_'으로 시작하는 테이블 나열"
- 개수 테이블: "사용자 '분석가'가 있는 리소스 그룹 'analytics-rg'의 서버 'analytics-mysql-server'의 데이터베이스 '분석'에 있는 테이블은 몇 개입니까?"
- 테이블 찾기: "사용자가 'readonly'인 리소스 그룹 'sales-rg'의 서버 'sales-mysql-server'에서 데이터베이스 'salesdb'에서 테이블 'orders' 찾기"
| 매개 변수 | 필수 또는 선택 사항 | Description |
|---|---|---|
| 리소스 그룹 | 필수 | Azure 리소스 그룹의 이름입니다. Azure 리소스에 대한 논리적 컨테이너입니다. |
| User | 필수 | MySQL 서버에 액세스할 사용자 이름입니다. |
| 서버 | 필수 | 액세스할 MySQL 서버입니다. |
| Database | 필수 | 액세스할 MySQL 데이터베이스입니다. |
파괴: ❌ | Idempotent: ✅ | 오픈 월드: ❌ | 읽기 전용: ✅ | 비밀: ❌ | 로컬 필수: ❌
테이블: 테이블 스키마 가져오기
Azure Database for MySQL 유연한 서버 데이터베이스 내의 특정 테이블에 대한 자세한 스키마 정보를 검색합니다. 이 명령은 열 정의, 데이터 형식, 제약 조건, 인덱스 및 관계를 포함한 포괄적인 메타데이터를 제공합니다. 이 정보는 테이블 구조를 이해하고 애플리케이션 개발을 지원하는 데 필수적입니다.
프롬프트 예제는 다음과 같습니다.
- 테이블 스키마 가져오기: "사용자 'developer'가 있는 리소스 그룹 'sales-rg'의 서버 'sales-mysql-server'에 있는 데이터베이스 'salesdb'에 테이블 'orders'에 대한 스키마 표시"
- 열 목록 가져오기: "사용자 'appuser'가 있는 리소스 그룹 'crm-rg'의 서버 'crm-mysql-server'에 있는 데이터베이스 'crm'의 테이블 'customers'에 대한 열 및 데이터 형식 나열"
- 인덱스 정보 표시: "사용자 'analyst'가 있는 리소스 그룹 'billing-rg'의 서버 'billing-mysql-server'에서 데이터베이스 '청구'에 테이블 '트랜잭션'에 대한 인덱스 표시"
- 기본 키 찾기: "사용자 '개발자'가 있는 리소스 그룹 'auth-rg'의 서버 'auth-mysql-server'에 있는 데이터베이스 'auth'의 테이블 '사용자'에 대한 기본 키는 무엇인가요?"
- 전체 정의 표시: "사용자가 'readonly'인 리소스 그룹 'inventory-rg'의 서버 'inventory-mysql-server'에 있는 데이터베이스 '인벤토리'에서 테이블 'inventory_items'에 대한 전체 테이블 정의 가져오기"
| 매개 변수 | 필수 또는 선택 사항 | Description |
|---|---|---|
| 리소스 그룹 | 필수 | Azure 리소스 그룹의 이름입니다. Azure 리소스에 대한 논리적 컨테이너입니다. |
| User | 필수 | MySQL 서버에 액세스할 사용자 이름입니다. |
| 서버 | 필수 | 액세스할 MySQL 서버입니다. |
| Database | 필수 | 액세스할 MySQL 데이터베이스입니다. |
| 테이블 | 필수 | 액세스할 MySQL 테이블입니다. |
파괴: ❌ | Idempotent: ✅ | 오픈 월드: ❌ | 읽기 전용: ✅ | 비밀: ❌ | 로컬 필수: ❌