heungh/db_assistant_mcp_server
If you are the rightful owner of db_assistant_mcp_server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Database Assistant MCP Server is a comprehensive solution for database management, analysis, and CloudWatch metric integration.
Database Assistant MCP Server
이 프로젝트는 통합된 MCP (Model Context Protocol) 서버를 제공합니다: DB Assistant MCP Server - DDL 검증, 데이터베이스 스키마 분석, CloudWatch 메트릭 수집 및 고급 분석을 하나의 서버에서 통합 제공
📋 목차
🎯 개요
🔄 2025-08-15 통합 완료
기존의 ddl_validation_qcli_mcp_server.py와 analyze_db_mcp_server.py의 모든 기능이 db_assistant_mcp_server.py 하나로 통합되었습니다.
🛠️ 통합된 DB Assistant MCP Server 기능
📋 데이터베이스 관리 (5개 도구)
- SQL 파일 목록 조회 및 관리
- AWS Secrets Manager 기반 DB 연결 정보 관리
- 데이터베이스 연결 테스트 및 선택
- SSH 터널링 지원
🔍 데이터베이스 분석 (4개 도구)
- 스키마 요약 정보 및 상세 조회
- 테이블 스키마 및 인덱스 정보 분석
- 실시간 성능 메트릭 조회
📊 CloudWatch 메트릭 분석 (6개 도구) - 🆕 새로 추가
- AWS CloudWatch에서 RDS 메트릭 자동 수집
- 메트릭 간 상관관계 분석 및 시각화
- 통계적 아웃라이어 탐지 및 이상 패턴 식별
- 머신러닝 기반 회귀 분석 및 성능 예측
- CSV 데이터 관리 및 요약 정보 제공
🔧 시스템 요구사항
- Python 3.8+
- AWS CLI 구성 (AWS 자격 증명)
- 필수 Python 패키지:
pip install boto3 pandas numpy matplotlib scikit-learn mysql-connector-python mcp
⚙️ 설치 및 설정
1. 저장소 클론
git clone <repository-url>
cd database-assistant-mcp
2. Python 환경 설정
python -m venv venv
source venv/bin/activate # Linux/Mac
# 또는
venv\Scripts\activate # Windows
3. 의존성 설치
pip install -r requirements.txt
4. MCP 서버 등록
~/.kiro/settings/mcp.json 또는 .kiro/settings/mcp.json 파일에 다음 설정을 추가:
{
"mcpServers": {
"db-assistant": {
"command": "/path/to/python",
"args": [
"/path/to/db_assistant_mcp_server.py"
],
"env": {
"AWS_DEFAULT_REGION": "us-east-1",
"PYTHONPATH": "/path/to/project"
},
"disabled": false,
"autoApprove": [
"list_sql_files",
"list_database_secrets",
"list_data_files",
"get_metric_summary"
]
}
}
}
🔍 통합된 기능 소개
📋 데이터베이스 관리 도구
1. SQL 파일 목록 조회
# 사용법
list_sql_files()
2. 데이터베이스 시크릿 목록 조회
# 사용법
list_database_secrets(keyword="")
3. 데이터베이스 연결 테스트
# 사용법
test_database_connection(database_secret="my-db-secret")
4. 데이터베이스 목록 조회 및 선택
# 사용법
list_databases(database_secret="my-db-secret")
select_database(database_secret="my-db-secret", database_selection="1")
🔍 데이터베이스 분석 도구
1. 스키마 요약 정보
# 사용법
get_schema_summary(database_secret="my-db-secret")
2. 테이블 스키마 조회
# 사용법
get_table_schema(database_secret="my-db-secret", table_name="users")
3. 테이블 인덱스 정보
# 사용법
get_table_index(database_secret="my-db-secret", table_name="users")
4. 성능 메트릭 조회
# 사용법
get_performance_metrics(database_secret="my-db-secret", metric_type="all")
📊 CloudWatch 메트릭 분석 도구 (새로 추가)
1. 메트릭 수집
# 사용법
collect_db_metrics(
db_instance_identifier="my-db-instance",
hours=24,
metrics=["CPUUtilization", "DatabaseConnections", "DBLoad"],
region="us-east-1"
)
2. 상관관계 분석
# 사용법
analyze_metric_correlation(
csv_file="database_metrics_my-db-instance_20250815_192241.csv",
target_metric="CPUUtilization",
top_n=10
)
3. 아웃라이어 탐지
# 사용법
detect_metric_outliers(
csv_file="database_metrics_my-db-instance_20250815_192241.csv",
std_threshold=2.0
)
4. 회귀 분석
# 사용법
perform_regression_analysis(
csv_file="database_metrics_my-db-instance_20250815_192241.csv",
predictor_metric="DatabaseConnections",
target_metric="CPUUtilization"
)
5. 데이터 파일 관리
# 데이터 파일 목록 조회
list_data_files()
# 메트릭 요약 정보 조회
get_metric_summary(csv_file="database_metrics.csv")
🧪 사용 예시
기본 테스트 시나리오
1단계: SQL 파일 목록 확인
Q CLI에서 입력: "DB Assistant 서버에서 사용 가능한 SQL 파일 목록을 보여주세요"
예상 응답:
📁 SQL 파일 목록:
- sample_create_table.sql
- test_good_table.sql
- test_bad_naming.sql
- test_syntax_error.sql
- sample_alter_table.sql
2단계: 데이터베이스 시크릿 조회
Q CLI에서 입력: "데이터베이스 시크릿 목록을 조회해주세요"
예상 응답:
데이터베이스 시크릿 목록:
- rds-mysql-dev-secret
- aurora-prod-secret
- test-db-credentials
3단계: 데이터베이스 연결 테스트
Q CLI에서 입력: "rds-mysql-dev-secret으로 데이터베이스 연결을 테스트해주세요"
예상 응답:
✅ 데이터베이스 연결 성공!
**연결 정보:**
- 서버 버전: 8.0.35
- 현재 데이터베이스: testdb
- 연결 방식: SSH Tunnel
**데이터베이스 목록:**
- testdb
- userdb
- productdb
4단계: 스키마 분석
Q CLI에서 입력: "현재 데이터베이스의 스키마 요약 정보를 보여주세요"
예상 응답:
📊 데이터베이스 스키마 요약 (DB: testdb)
📋 **테이블 목록** (3개):
🔹 **users** (InnoDB)
- 컬럼: 5개, 인덱스: 2개
- 예상 행 수: 1,250
🔹 **products** (InnoDB)
- 컬럼: 8개, 인덱스: 3개
- 예상 행 수: 500
5단계: CloudWatch 메트릭 수집
Q CLI에서 입력: "aurora-prod-cluster 인스턴스의 지난 24시간 메트릭을 수집해주세요"
예상 응답:
✅ 메트릭 수집 완료
📊 수집된 메트릭: 13개
📈 데이터 포인트: 1,248개
💾 저장 위치: data/database_metrics_aurora-prod-cluster_20250815_192241.csv
6단계: 상관관계 분석
Q CLI에서 입력: "CPUUtilization과 다른 메트릭들의 상관관계를 분석해주세요"
예상 응답:
📊 CPUUtilization과 상관관계가 높은 상위 10개 메트릭:
• DatabaseConnections: 0.8542
• DBLoad: 0.7891
• DBLoadCPU: 0.7654
• ReadIOPS: 0.6734
• WriteIOPS: 0.6123
📈 상관관계 그래프가 저장되었습니다: output/correlation_analysis_CPUUtilization_20250815_192241.png
7단계: 아웃라이어 탐지
Q CLI에서 입력: "database_metrics.csv에서 이상치를 탐지해주세요"
예상 응답:
🚨 아웃라이어 탐지 결과 (임계값: ±2.0σ):
⚠️ CPUUtilization 메트릭의 아웃라이어 (5개):
정상 범위: 15.23 ~ 45.67
• 2025-08-15 10:15:00: 78.45
• 2025-08-15 14:30:00: 82.12
• 2025-08-15 18:45:00: 9.87
📋 아웃라이어 요약:
• CPUUtilization: 5개 (1.7%)
• DatabaseConnections: 3개 (1.0%)
8단계: 회귀 분석
Q CLI에서 입력: "DatabaseConnections을 이용해서 CPUUtilization을 예측하는 회귀 모델을 만들어주세요"
예상 응답:
📈 회귀 분석 결과 (DatabaseConnections → CPUUtilization):
📊 모델 성능:
• Mean Squared Error: 12.3456
• R-squared Score: 0.7834
🔢 다항 회귀 모델 (2차):
y = 0.0023x² + 1.2345x + 5.6789
해석:
• 연결 수가 증가할수록 CPU 사용률이 비선형적으로 증가
• 모델 설명력: 78.34% (높은 예측 정확도)
📈 회귀 분석 그래프가 저장되었습니다: output/regression_analysis_DatabaseConnections_CPUUtilization_20250815_192251.png
고급 테스트 시나리오
전체 SQL 파일 일괄 검증
Q CLI에서 입력: "모든 SQL 파일을 rds-mysql-dev-secret으로 검증해주세요"
예상 응답:
📊 전체 SQL 파일 검증 결과:
✅ sample_create_table.sql - 통과
✅ test_good_table.sql - 통과
❌ test_bad_naming.sql - 실패 (2개 문제)
❌ test_syntax_error.sql - 실패 (1개 문제)
✅ sample_alter_table.sql - 통과
📋 요약:
• 총 파일: 5개
• 통과: 3개 (60%)
• 실패: 2개 (40%)
📄 종합 보고서가 저장되었습니다: output/all_validation_report_20250815_195320.html
외부 SQL 파일 복사 및 검증
Q CLI에서 입력: "외부 SQL 파일을 복사해서 검증하고 싶습니다"
1단계: 파일 복사
copy_sql_to_directory(source_path="/path/to/my_table.sql", target_name="my_test.sql")
2단계: 검증 실행
validate_sql_file(filename="my_test.sql", database_secret="rds-mysql-dev-secret")
검증 결과 예시
✅ 성공 사례
✅ 모든 검증을 통과했습니다.
📄 상세 보고서가 저장되었습니다: output/validation_report_sample_create_table.sql_20250815_192506.html
❌ 실패 사례
❌ 발견된 문제: 3개
📊 검증 결과:
• 세미콜론이 누락되었습니다.
• 스키마 검증: 컬럼 'invalid_column'이 존재하지 않습니다.
• 제약조건 검증: FOREIGN KEY 참조 테이블이 존재하지 않습니다.
📄 상세 보고서가 저장되었습니다: output/validation_report_test_bad_naming.sql_20250815_192540.html
생성되는 보고서
HTML 형식의 상세 보고서가 output/ 디렉토리에 생성됩니다:
- 검증 상태 및 요약
- 데이터베이스 연결 정보
- 스키마 검증 결과
- 제약조건 검증 결과
- 발견된 문제 목록
- 원본 DDL 코드
📁 파일 구조
핵심 서버 파일
├── db_assistant_mcp_server.py # 통합 DB Assistant MCP 서버
├── ddl_validation_qcli_mcp_server.py # DDL 검증 MCP 서버 (구버전)
├── analyze_db_mcp_server.py # DB 분석 MCP 서버 (구버전)
└── README.md # 이 파일
DDL 검증 관련 파일
├── sql/ # SQL 테스트 파일들
│ ├── sample_create_table.sql
│ ├── sample_alter_table.sql
│ ├── test_good_table.sql
│ ├── test_bad_naming.sql
│ ├── test_syntax_error.sql
│ └── ...
├── output/ # 검증 보고서 출력
│ ├── validation_report_*.html
│ └── validation_report_*.md
└── test_*.py # 테스트 스크립트들
├── test_db_connection.py
├── test_db_connection_ssh.py
├── test_schema_analysis.py
├── test_detailed_schema.py
├── test_html_report.py
└── test_mcp_connection.py
DB 분석 관련 파일
├── kimjunnMCPFunction/ # 원본 분석 함수들
│ ├── task1.py # 메트릭 수집
│ ├── task2_1.py # CPU 상관관계 분석
│ ├── task2_2.py # DBLoad 상관관계 분석
│ ├── task3_1.py # 아웃라이어 탐지 (1σ)
│ ├── task3_2.py # 아웃라이어 탐지 (2σ)
│ ├── reg.py # 회귀 분석
│ └── metric.txt # 메트릭 목록
├── data/ # 수집된 데이터
│ └── database_metrics*.csv
└── output/ # 분석 결과 그래프
├── correlation_analysis_*.png
└── regression_analysis_*.png
지원 파일
├── ssh_tunnel.sh # SSH 터널 스크립트
├── ddl_validation_agent.py # DDL 검증 에이전트
├── sql_validation_agent.py # SQL 검증 에이전트
└── backup files/ # 백업 파일들
├── ddl_validation_qcli_mcp_server backup_20250729_1.py
└── ddl_validation_qcli_mcp_server backup_20250729_2.py
🔧 문제 해결
일반적인 문제
1. MySQL 연결 오류
pip install mysql-connector-python
2. SSH 터널 설정 실패
- SSH 키 파일 경로 확인:
/Users/heungh/test.pem - SSH 서버 접근 권한 확인:
ec2-user@54.180.79.255
3. AWS 자격 증명 오류
aws configure
# 또는 환경 변수 설정
export AWS_ACCESS_KEY_ID=your_access_key
export AWS_SECRET_ACCESS_KEY=your_secret_key
export AWS_DEFAULT_REGION=us-east-1
4. 패키지 의존성 오류
pip install --upgrade boto3 pandas numpy matplotlib scikit-learn
로그 확인
서버 실행 시 로그를 확인하여 문제를 진단할 수 있습니다:
python db_assistant_mcp_server.py
디렉토리 권한
출력 디렉토리에 대한 쓰기 권한이 있는지 확인:
chmod 755 output/
chmod 755 data/
📞 지원
문제가 발생하거나 기능 요청이 있으시면 이슈를 생성해 주세요.
📄 라이선스
이 프로젝트는 MIT 라이선스 하에 배포됩니다.