Skip to main content
Glama
windboyk0

table-context-mcp

by windboyk0
README.md
# Table Context MCP Server

> Excel 기반 테이블 정의서를 LLM(Claude, Vibe 등)의 지식으로 변환하는 MCP 서버

이 프로젝트는 데이터베이스 테이블 정의서(Excel)를 업로드받아 구조화된 JSON으로 관리하고, 이를 Model Context Protocol(MCP)을 통해 LLM에게 제공합니다. AI가 복잡한 업무 DB 구조를 이해하고 정확한 SQL 쿼리 작성 및 데이터 모델링을 지원합니다.

---

## 주요 기능

- **Excel ↔ JSON 양방향 변환**: 엑셀 정의서 업로드 시 테이블별 고유 JSON 파일 생성, 역방향 엑셀 내보내기도 지원
- **프리미엄 웹 UI**: Glassmorphism 디자인 대시보드에서 테이블 목록 조회 및 상세 스키마 확인
- **MCP 기반 LLM 연동**: `list_tables`, `get_table_schema` 도구를 통해 Claude/Vibe 등이 실시간으로 DB 메타데이터 참조
- **데이터 동기화**: `tableStore/` 디렉토리를 중심으로 웹 서버와 MCP 서버가 데이터 공유

## 기술 스택

- **Backend**: Python, FastAPI, MCP SDK
- **Data Processing**: Pandas, OpenPyXL
- **Frontend**: HTML5, CSS3 (Glassmorphism UI), Vanilla JS

## 프로젝트 구조

```text
table-context-mcp/
├── web_server.py      # FastAPI 기반 웹 대시보드 및 API
├── mcp_server.py      # LLM 연동을 위한 MCP 서버 (stdio 방식)
├── parser.py          # Excel ↔ JSON 변환 핵심 로직 (Core)
├── tableStore/        # 변환된 JSON 데이터 저장소
├── templates/         # 웹 UI (index.html)
└── sampleFile/        # 기준 엑셀 양식 샘플 (TableDefinition_Sample.xlsx)
```

---

## 시작하기

### 1. 가상환경 설정 및 의존성 설치

```bash
# 가상환경 생성
python -m venv venv

# 가상환경 활성화 (Windows)
venv\Scripts\activate

# 가상환경 활성화 (macOS / Linux)
source venv/bin/activate

# 의존성 설치
pip install -r requirements.txt
```

### 2. 웹 서버 실행

```bash
# 개발 모드 (파일 변경 시 자동 재시작)
uvicorn web_server:app --host 0.0.0.0 --port 8090 --reload

# 운영 모드
uvicorn web_server:app --host 0.0.0.0 --port 8090
```

브라우저에서 `http://localhost:8090` 접속 후 테이블 정의서를 업로드하세요.

### 3. MCP 서버 (직접 실행 시)

```bash
python mcp_server.py
```

> `mcp_server.py`는 stdio 방식으로 실행됩니다. MCP 클라이언트(Claude Desktop, Vibe 등)가 직접 프로세스를 띄우므로 별도 서버 실행은 불필요합니다.

---

## MCP 클라이언트 연결 설정

### Claude Desktop

설정 파일: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "table-context": {
      "command": "C:/본인경로/table-context-mcp/venv/Scripts/python.exe",
      "args": ["C:/본인경로/table-context-mcp/mcp_server.py"]
    }
  }
}
```

> `command`에는 반드시 **venv 내부의 python 경로**를 지정해야 의존성이 정상 로드됩니다.

연결 확인 시 아래 Tool이 노출되면 정상입니다:
- `list_tables` — 저장된 테이블 목록 조회
- `get_table_schema` — 특정 테이블의 컬럼/타입 스키마 조회

---

## JSON 출력 예시

```json
{
  "table_name": "USER_INFO",
  "entity_name": "사용자 정보 테이블",
  "pk_columns": ["USER_ID"],
  "columns": [
    {
      "column_name": "USER_ID",
      "attribute_name": "사용자ID",
      "data_type": "VARCHAR2(20)",
      "is_pk": true,
      "nullable": false,
      "description": "사용자 고유 식별자"
    }
  ]
}
```

---

Author: Kim Jeong-Ung (2026-04-03)