Skip to main content
Glama
README.md
# 🧠 LNA-Report MCP Server

AWS LNA(Learning Needs Analysis) CSV 데이터를 자동 분석하여 **역량강화 평가 분석 리포트(PPT)**를 생성하는 MCP(Model Context Protocol) 서버입니다.

> **MCP란?** AI 에이전트가 외부 도구를 호출할 수 있게 해주는 표준 프로토콜입니다.  
> 이 서버를 연결하면 AI가 LNA 데이터 분석과 리포트 생성을 자동으로 수행합니다.

---

## ✨ 주요 기능

| Tool | 기능 | 출력 |
|------|------|------|
| `analyze_lna` | LNA CSV 전체 분석 | JSON (팀별 점수, 자격증, 역할) |
| `generate_report` | PPT 리포트 자동 생성 | PPTX (레이더 차트 포함) |
| `get_team_scores` | 팀/전체 과정별 점수 조회 | JSON (과정별 점수) |
| `get_recommendations` | 교육 추천 과정 도출 | JSON (긴급/높음/보통) |
| `get_individual_assessments` | 개인별 역량 평가 | JSON (강점/약점/추천교육) |

---

## 📋 요구사항

- **Python 3.10** 이상
- **pip** 패키지 관리자
- Windows 10/11, macOS, 또는 Linux

---

## 🚀 설치 방법

### Step 1: 리포지토리 Clone

```bash
git clone https://github.com/twkim1122/LNA_Report_MCP.git
cd LNA_Report_MCP
```

### Step 2: 패키지 설치 (editable 모드)

```bash
pip install -e .
```

> **참고**: 의존성이 자동 설치됩니다 (`mcp[cli]`, `pandas`, `python-pptx`, `matplotlib`, `numpy`)

### Step 3: 설치 확인

```bash
python -m lna_mcp.server --help
```

오류 없이 실행되면 설치 완료!

---

## 🔌 MCP 클라이언트 연동 설정

### Option A: Amazon Quick 연동

1. Amazon Quick 열기
2. **Settings → Capabilities → Connectors** 이동
3. **"+ Add MCP server" → Local (stdio)** 선택
4. 아래 값 입력:

| 항목 | 값 |
|------|-----|
| Name | `lna-report` |
| Command | `python` |
| Args | `-m`, `lna_mcp.server` |
| Working Directory | `<clone한 경로>/LNA_Report_MCP/src` |

5. **Save** → 새 대화에서 "LNA 파일 분석해 줘" 입력하여 Tool 인식 확인

### Option B: Kiro CLI 연동

`~/.kiro/settings/mcp.json` 파일에 추가 (없으면 새로 생성):

```json
{
  "mcpServers": {
    "lna-report": {
      "command": "python",
      "args": ["-m", "lna_mcp.server"],
      "cwd": "<clone한 경로>/LNA_Report_MCP/src",
      "env": {}
    }
  }
}
```

> **Windows 예시**:  
> `"cwd": "C:\\Users\\<username>\\projects\\LNA_Report_MCP\\src"`
>
> **macOS/Linux 예시**:  
> `"cwd": "/home/<username>/projects/LNA_Report_MCP/src"`

Kiro CLI 재시작 후 Tool이 인식됩니다.

### Option C: Claude Desktop 연동

`claude_desktop_config.json`에 추가:

```json
{
  "mcpServers": {
    "lna-report": {
      "command": "python",
      "args": ["-m", "lna_mcp.server"],
      "cwd": "<clone한 경로>/LNA_Report_MCP/src"
    }
  }
}
```

---

## 📊 사용 방법

### 1. 전체 분석

AI에게 요청:
```
LNA CSV 파일을 분석해 주세요.
csv_path: "C:\경로\LNA_2026.csv"
```

### 2. PPT 리포트 생성

```
LNA 분석 리포트를 PPT로 만들어 주세요.
csv_path: "C:\경로\LNA_2026.csv"
output_path: "C:\출력\리포트.pptx"
company_name: "ACME Corp"

LNA 분석 리포트를 HTML로 만들어 주세요.
```

### 3. 특정 팀 교육 추천

```
클라우드 AX팀에 필요한 교육 과정을 추천해 주세요.
```

### 4. 개인별 평가

```
각 개인별 강점, 약점, 추천 교육을 알려 주세요.
```

---

## 🗂️ CSV 입력 형식

### 필수 사항
- **Qualtrics LNA Excel**에서 **'Raw Data' 시트**를 CSV로 변환
- ⚠️ 'Student Heatmap' 시트가 아닌 **'Raw Data' 시트** 사용
- `Progress` 컬럼이 반드시 포함되어야 함 (100% 완료 응답만 분석)
- 인코딩: **UTF-8 BOM** 권장

### CSV 변환 방법

1. Qualtrics LNA Excel 열기
2. **'Raw Data'** 시트 선택
3. `다른 이름으로 저장` → `CSV UTF-8 (쉼표로 분리)(*.csv)` 선택
4. 저장

---

## 🏢 팀 설정 (team_config)

LNA CSV의 팀 컬럼은 Qualtrics 임베디드 변수(`${e://Field/Team1}` 등)로 되어 있어, 실제 팀명과 매핑이 필요합니다.

### team_config JSON 형식

```json
{
  "${e://Field/Team1}": {
    "name": "엔터프라이즈 구축/운영팀",
    "leader": "K",
    "mission": "클라우드 구축/운영"
  },
  "${e://Field/Team2}": {
    "name": "AX팀",
    "leader": "T",
    "mission": "클라우드 전환 컨설팅"
  }
}
```

> **팁**: team_config 없이도 분석은 가능합니다. 이 경우 팀명이 원시값으로 표시됩니다.

---

## 📑 리포트 포함 내용 (PPT)

생성되는 PPT 리포트에는 다음이 포함됩니다:

1. **표지** + 기밀 고지
2. **LNA 추진 배경 및 목적**
3. **Executive Summary** (강점/약점 영역)
4. **Score 정의 기준** (1~5점 해석)
5. **전사 역량 현황** + 레이더 차트
6. **팀별 상세 분석** (프로필, 점수, 개별 레이더 차트)
7. **팀별 비교 레이더 차트** (오버레이)
8. **팀별 교육 추천** (긴급/높음/보통)
9. **결론 및 Next Steps**

---

## 📁 프로젝트 구조

```
LNA_Report_MCP/
├── pyproject.toml              # 패키지 설정 및 의존성
├── README.md                   # 본 문서
├── .gitignore
└── src/lna_mcp/
    ├── __init__.py
    ├── server.py               # MCP 서버 (Tool 정의)
    ├── analyzer.py             # LNA 분석 엔진
    └── report_generator.py     # PPT 리포트 생성기
```

---

## 🔄 업데이트 방법

서버가 업데이트되면:

```bash
cd LNA_Report_MCP
git pull
pip install -e .  # 의존성 변경 시
```

Amazon Quick / Kiro CLI 재시작 또는 MCP 서버 Reconnect

---

## ❓ FAQ

### Q: Python 버전이 3.9인데 사용 가능한가요?
A: 3.10 이상이 필요합니다. `python --version`으로 확인 후, 필요시 업그레이드하세요.

### Q: pip install -e . 에서 오류가 발생합니다
A: pip를 최신으로 업그레이드한 후 재시도:
```bash
pip install --upgrade pip
pip install -e .
```

### Q: Tool이 인식되지 않습니다
A: `cwd` 경로가 `src` 폴더를 가리키는지 확인하세요. `LNA_Report_MCP/src`가 정확한 경로입니다.

### Q: CSV 분석 시 "Progress 컬럼 없음" 오류
A: Qualtrics Excel에서 **'Raw Data'** 시트를 CSV로 변환했는지 확인하세요. 'Student Heatmap' 시트는 Progress 컬럼이 없습니다.

### Q: 한글이 깨집니다
A: CSV 저장 시 **UTF-8 BOM** 인코딩을 사용하세요. Excel에서 `CSV UTF-8 (쉼표로 분리)` 형식으로 저장합니다.

### Q: 레이더 차트가 생성되지 않습니다
A: `matplotlib` 한글 폰트 이슈일 수 있습니다. Windows는 'Malgun Gothic', macOS는 'AppleGothic'이 필요합니다. macOS 사용자는 `src/lna_mcp/report_generator.py`에서 폰트 설정을 변경하세요:
```python
plt.rcParams["font.family"] = "AppleGothic"  # macOS
```

---

## 🏷️ Score 정의

| Score | 수준 | 의미 |
|:-----:|------|------|
| 1 | None | 기본적인 관련 지식이 없는 상태 |
| 2 | Basic | 기본적인 이해력을 갖추고 있으나 업무 수행 불가 |
| 3 | Functional | 스킬 활용 업무 수행 가능, 필요시 AWS 지원 필요 |
| 4 | Proficient | 다양한 수준의 업무를 수행 및 적용 가능 |
| 5 | Expert | 전문가 역할 수행 및 컨설팅 수행 가능 |

---

## 📜 License

Internal use only — AWS T&C Korea

---

## 👤 Author

**AWS T&C Korea Team**  
Contact: ktaewoo@amazon.com

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation4/5

Tools have distinct purposes: analysis, report generation, individual assessments, recommendations, and team scores. Minor potential overlap between 'analyze_lna' (team capability status) and 'get_team_scores' (course-specific scores) but descriptions clarify differences.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (analyze_lna, generate_report, get_individual_assessments, get_recommendations, get_team_scores). No deviations.

Tool Count5/5

Server has 5 tools, well-scoped for its purpose of analyzing LNA data and generating reports and recommendations. Not too few or too many.

Completeness4/5

Covers main operations: analysis, report generation, individual assessments, recommendations, and team scores. Missing a tool to manage team configurations or validate inputs, but not essential for core functionality.

Maintenance

ActivityMaintained
ResponsivenessSyncing