Skip to main content
Glama
elon-jang

Product Info Extractor MCP Server

by elon-jang
README.md
# Product Info Extractor MCP Server

> πŸ‡°πŸ‡· ν•œκ΅­μ–΄ | πŸ‡ΊπŸ‡Έ **[English](README.en.md)**

이컀머슀 μ›Ήμ‚¬μ΄νŠΈμ—μ„œ μƒν’ˆ 정보(가격, 재고, 이미지, 색상별 μ‚¬μ΄μ¦ˆ λ“±)λ₯Ό μžλ™μœΌλ‘œ μΆ”μΆœν•˜λŠ” MCP μ„œλ²„μž…λ‹ˆλ‹€.

> **⚠️ μ€‘μš”:** DataDome 같은 κ³ κΈ‰ 봇 차단 μ‹œμŠ€ν…œμ€ μžλ™ 접근을 차단할 수 μžˆμŠ΅λ‹ˆλ‹€. 성곡λ₯ μ€ λŒ€μƒ μ‚¬μ΄νŠΈμ™€ λ„€νŠΈμ›Œν¬ ν™˜κ²½μ— 따라 λ‹€λ¦…λ‹ˆλ‹€.

## πŸš€ λΉ λ₯Έ μ‹œμž‘ (30초)

### Docker둜 μ‹€ν–‰ (ꢌμž₯)

```bash
# μ €μž₯μ†Œ 클둠
git clone https://github.com/elon-jang/product-info-extractor-mcp.git
cd product-info-extractor-mcp

# μ„œλ²„ μ‹œμž‘
docker compose up -d

# ν…ŒμŠ€νŠΈ
npm install
node test-mcp-http.js "https://www.ugg.com/women-slippers/cozy-slipper/1117659.html"
```

### 둜컬 개발 λͺ¨λ“œ

```bash
npm install
npx playwright install chromium
npm run start:http
```

---

## πŸ“‹ μ£Όμš” κΈ°λŠ₯

- **⚑ μ΄ˆκ³ μ†:** 8-10초 응닡 (DataDome 우회 둜직 제거둜 6λ°° μ„±λŠ₯ ν–₯상)
- **πŸš€ κ³ μ„±λŠ₯:** λΈŒλΌμš°μ € μΈμŠ€ν„΄μŠ€ μž¬μ‚¬μš©μœΌλ‘œ 후속 μš”μ²­ μ¦‰μ‹œ 처리
- **πŸ₯· μŠ€ν…”μŠ€ λͺ¨λ“œ:** `playwright-extra` + `puppeteer-extra-plugin-stealth`둜 κΈ°λ³Έ 봇 탐지 우회
- **πŸ”Œ MCP ν”„λ‘œν† μ½œ:** Claude Desktopκ³Ό λ°”λ‘œ 연동 κ°€λŠ₯
- **πŸ“¦ λ©€ν‹° ν”Œλž«νΌ:** AMD64 + ARM64 (Apple Silicon & ν΄λΌμš°λ“œ VM) 지원

---

## 🐳 Docker 배포 κ°€μ΄λ“œ

### 1. Docker μ„€μΉ˜

```bash
# Ubuntu/Debian
sudo apt-get update
sudo apt-get install -y docker.io docker-compose-plugin

# RHEL/CentOS/Rocky Linux
sudo dnf install -y yum-utils
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl start docker && sudo systemctl enable docker
```

### 2. μ„œλ²„ μ‹€ν–‰

```bash
# Docker Compose둜 μ‹€ν–‰ (ꢌμž₯)
docker compose up -d

# λ˜λŠ” docker run으둜 μ‹€ν–‰
docker run -d -p 8080:3000 \
  -e PORT=3000 -e HOST=0.0.0.0 \
  --name product-info-extractor \
  joomanba/product-info-extractor-mcp:latest
```

### 3. μƒνƒœ 확인

```bash
# μ»¨ν…Œμ΄λ„ˆ 둜그 확인
docker logs -f product-info-extractor

# Health check
curl http://localhost:8080/health
```

---

## πŸ§ͺ ν…ŒμŠ€νŠΈ

### Node.js ν…ŒμŠ€νŠΈ ν΄λΌμ΄μ–ΈνŠΈ

```bash
npm install
node test-mcp-http.js "https://www.ugg.com/women-slippers/cozy-slipper/1117659.html"
```

### Shell 슀크립트 (κ°„λ‹¨ν•œ μ—°κ²° ν…ŒμŠ€νŠΈ)

```bash
./test-server.sh http://localhost:8080
```

---

## πŸ”§ Claude Desktop 연동

`claude_desktop_config.json`에 μΆ”κ°€:

```json
{
  "mcpServers": {
    "product-info-extractor": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "http://localhost:8080/sse"]
    }
  }
}
```

---

## ⚠️ μ œν•œ 사항

### 봇 차단 μ‹œμŠ€ν…œ

λ‹€μŒ μ‹œμŠ€ν…œλ“€μ€ μžλ™ 접근을 차단할 수 μžˆμŠ΅λ‹ˆλ‹€:

- **DataDome** (UGG.com μ‚¬μš©): 성곡λ₯ μ΄ ν™˜κ²½μ— 따라 변동
- **Cloudflare Advanced**: μΆ”κ°€ 우회 기법 ν•„μš”
- **PerimeterX**: 우회 맀우 어렀움

### ꢌμž₯ 사항

βœ… ν”„λ‘œλ•μ…˜ μ „ μΆ©λΆ„ν•œ ν…ŒμŠ€νŠΈ
βœ… κ°€λŠ₯ν•˜λ©΄ 곡식 API μ‚¬μš©
βœ… μž¬μ‹œλ„ 둜직 및 μ—λŸ¬ 처리 κ΅¬ν˜„
βœ… 성곡λ₯  λͺ¨λ‹ˆν„°λ§

---

## πŸ“š κ³ κΈ‰ κ°€μ΄λ“œ

### Podman ν™˜κ²½ (RHEL/CentOS)

```bash
# Podman μ„€μΉ˜
sudo dnf install -y podman

# μ‹€ν–‰
podman run -d -p 8080:3000 \
  -e PORT=3000 -e HOST=0.0.0.0 \
  --name product-info-extractor \
  docker.io/joomanba/product-info-extractor-mcp:latest
```

### μˆ˜λ™ μ„€μΉ˜ (Docker 없이)

```bash
# Node.js v18+ μ„€μΉ˜
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
sudo dnf install -y nodejs

# Playwright μ˜μ‘΄μ„±
sudo npx playwright install-deps

# ν”„λ‘œμ νŠΈ μ„€μ •
npm install
npx playwright install chromium

# μ„œλ²„ μ‹œμž‘
npm run start:http
```

### 이미지 λΉŒλ“œ (개발자용)

```bash
docker buildx build --platform linux/amd64,linux/arm64 \
  -t joomanba/product-info-extractor-mcp:latest --push .
```

---

## πŸ“„ λΌμ΄μ„ μŠ€

MIT License

TDQS

A4.1/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap. The tool's purpose is clearly defined and distinct.

Naming Consistency5/5

The single tool name 'extract_product_info' follows a clear verb_noun convention. Though there is only one tool, the naming is consistent with standard practices.

Tool Count3/5

The server has only one tool, which falls into the borderline range. While the tool is broad and covers the stated purpose well, the count feels thin for a typical MCP server.

Completeness5/5

The tool description covers all major aspects of product information extraction: images, stock, variants, price, dimensions, and specifications. No obvious gaps exist for the stated domain.

Maintenance

ActivityInactive
ResponsivenessNo issues