wholesale-mcp
AI 코딩 어시스턴트(Claude Code, Cursor 등)에서 도매 사이트를 직접 탐색/분석/주문할 수 있는 MCP 서버.
기능
브라우저 탐색 (Playwright)
| 도구 | 설명 |
|---|---|
open_site(url) | 브라우저에서 URL 열기 + 네트워크 로그 초기화 |
snapshot_page() | 현재 페이지의 모든 버튼/링크/입력/폼/iframe 목록 추출 |
snapshot_iframe(selector) | iframe 내부 요소 목록 추출 |
click_element(selector) | CSS 셀렉터로 요소 클릭 |
fill_input(selector, value) | 입력 필드에 값 채우기 |
submit_form(selector) | 폼 제출 + 네트워크 요청 캡처 |
get_network_log(filter) | 캡처된 HTTP 요청/응답 목록 |
get_page_html(selector) | 페이지 HTML (전체 또는 특정 영역) |
screenshot() | 현재 화면 캡처 |
execute_js(code) | JavaScript 실행 |
레시피 기반 HTTP 실행 (SiteExecutor)
| 도구 | 설명 |
|---|---|
list_sites() | 등록된 도매사이트 목록 |
get_recipe(site_id) | 레시피 JSON 조회 |
recipe_login(site_id, user, pass) | HTTP 로그인 |
recipe_search(site_id, keyword) | HTTP 검색 |
recipe_add_to_cart(site_id, code, qty) | HTTP 장바구니 추가 |
세션 관리
| 도구 | 설명 |
|---|---|
get_cookies() | 브라우저 쿠키 목록 |
set_cookies(json) | 쿠키 주입 |
get_session_info(site_id) | HTTP 세션 상태 |
close_browser() | 브라우저 종료 |
설치
pip install -r requirements.txt
playwright install chromium
설정
프로젝트 루트에 .mcp.json 생성:
{
"mcpServers": {
"wholesale-tools": {
"command": "python",
"args": ["path/to/wholesale-mcp/server.py"],
"cwd": "path/to/wholesale-mcp"
}
}
}
레시피 추가
recipes/ 폴더에 사이트별 JSON 파일을 추가합니다:
{
"recipe_version": 1,
"site_id": "example_com",
"site_name": "예시 도매",
"site_url": "https://example.com",
"encoding": "utf-8",
"login": {
"method": "POST",
"url": "https://example.com/login",
"payload": {
"user_id": "{USERNAME}",
"user_pw": "{PASSWORD}"
},
"success_indicator": {
"type": "cookie",
"key": "session_id"
}
},
"search": {
"method": "GET",
"url": "https://example.com/search",
"params": { "keyword": "{KEYWORD}" },
"response_type": "html",
"parsing": {
"selector": "tr.product-row",
"fields": {
"product_name": { "selector": "td.name", "attribute": "text" },
"product_code": { "selector": "input[name='code']", "attribute": "value" },
"unit_price": { "selector": "td.price", "attribute": "text" }
}
}
},
"cart_add": {
"method": "POST",
"url": "https://example.com/cart/add",
"payload": {
"product_code": "{PRODUCT_CODE}",
"quantity": "{QUANTITY}"
}
}
}
사용 예시
새 사이트 분석
AI: open_site("https://새도매사이트.com")
AI: snapshot_page() → 로그인 폼, 버튼, 링크 발견
AI: fill_input("#id", "사용자")
AI: fill_input("#pw", "비번")
AI: submit_form("#loginForm")
AI: get_network_log() → POST /login 요청 캡처 → 레시피 작성
AI: snapshot_page() → 메뉴 구조 파악
AI: click_element("약품주문 링크")
AI: get_network_log() → 검색 API 엔드포인트 발견
레시피 검증
AI: recipe_login("example_com", "user", "pass") → 성공/실패
AI: recipe_search("example_com", "타이레놀") → 검색 결과
AI: recipe_add_to_cart("example_com", "P001", 1) → 장바구니 추가
워크플로우
1. 분석: 브라우저로 사이트 열기 → 모든 버튼/폼/API 발견
2. 작성: 캡처된 네트워크 로그 기반 → 레시피 JSON 작성
3. 검증: recipe_login/search/add_to_cart로 즉시 실행
4. 반복: 안 되면 브라우저로 다시 분석 → 레시피 수정
라이선스
MIT