db_assistant_mcp_server

heungh/db_assistant_mcp_server

3.1

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.

Tools
3
Resources
0
Prompts
0

Database Assistant MCP Server

이 프로젝트는 통합된 MCP (Model Context Protocol) 서버를 제공합니다: DB Assistant MCP Server - DDL 검증, 데이터베이스 스키마 분석, CloudWatch 메트릭 수집 및 고급 분석을 하나의 서버에서 통합 제공

📋 목차

🎯 개요

🔄 2025-08-15 통합 완료

기존의 ddl_validation_qcli_mcp_server.pyanalyze_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 라이선스 하에 배포됩니다.