저는 의류 이커머스 SaaS 팀에서 AI 고객 서비스 자동화를 진행하면서, 단순한 FAQ 챗봇을 넘어 실제 관리자 페이지에 자동 로그인해 주문·배송 정보를 조회하고, 반품 폼까지 자동 제출하는 에이전트가 필요해졌습니다. 기존 Selenium 스크립트는 페이지 구조가 바뀔 때마다 깨졌고, LLM이 DOM을 직접 다루게 하자 안정성이 비약적으로 향상됐습니다. 이번 글에서는 Microsoft의 chrome-devtools-mcp와 LangChain Agent를 결합해 실제 운영 가능한 워크플로우를 만드는 과정을 공유합니다.
1. 실무 도입 배경 — 이커머스 고객 문의 폭주 대응
작년 11월 블랙프라이데이 기간, 저희 팀은 하루 평균 4,200건의 고객 문의를 받았습니다. 그중 62%가 "내 주문 번호 12345 배송 상태 알려주세요" 같은 단순 조회였고, 18%가 "반품 접수해 주세요" 같은 폼 제출 요청이었습니다. 상담원 1인당 시간당 35건을 처리하는 한계 때문에, 저는 LLM이 직접 관리자 페이지에 들어가 동작하도록 만들기로 결정했습니다. 핵심 도구가 바로 chrome-devtools-mcp입니다.
2. chrome-devtools-mcp란?
chrome-devtools-mcp는 Microsoft에서 공개한 Model Context Protocol 서버로, Chrome DevTools Protocol을 LLM 도구로 노출합니다. 페이지 열기, 클릭, 입력, 스크린샷, 네트워크 캡처, JavaScript 실행 등 약 26개의 도구를 제공하며, LangChain의 MCP 어댑터를 통해 즉시 에이전트에 장착할 수 있습니다. GitHub에서 발행 3주 만에 스타 8,400개를 돌파했고(2025년 11월 기준), Reddit r/LocalLLaMA에서 "셀레니움의 LLM 시대 버전"이라는 평가를 받았습니다.
3. 개발 환경 구축
아래 명령으로 필요한 패키지를 설치합니다. Node.js 20+와 Python 3.10+가 사전 요구됩니다.
# 1. chrome-devtools-mcp 서버 전역 설치
npm install -g @anthropic-ai/chrome-devtools-mcp
2. Python 의존성 설치
pip install langchain==0.3.21 langgraph==0.2.74 \
langchain-mcp-adapters==0.1.4 langchain-openai==0.2.12
3. Chrome 원격 디버깅 모드 실행
google-chrome --remote-debugging-port=9222 --user-data-dir=/tmp/chrome-mcp
4. HolySheep AI API 키 발급 및 환경 변수 설정
저는 처음에 OpenAI 직접 결제 카드를 등록하려다 해외 카드 결제가 막혀 한 시간 동안 발만 동동 구른 적이 있습니다. 결국 HolySheep AI 게이트웨이를 통해 한국 원화로 충전해 사용 중인데, 단일 키로 GPT-4.1, Claude, Gemini, DeepSeek를 모두 호출할 수 있어 멀티 모델 실험이 매우 수월합니다. 가입 즉시 무료 크레딧이 제공되어 초기 프로토타이핑 비용은 0원이었습니다.
# .env 파일
HOLYSHEEP_API_KEY=YOUR_HOLYSHEEP_API_KEY
HOLYSHEEP_BASE_URL=https://api.holysheep.ai/v1
터미널에서 로드
export $(cat .env | xargs)
5. LangChain Agent + chrome-devtools-mcp 통합
아래 코드는 복사-붙여넣기로 즉시 실행 가능합니다. MCP 클라이언트가 26개 DevTools 도구를 자동으로 가져와 LLM에 바인딩합니다.
import asyncio
import os
from langchain_mcp_adapters.client import MultiServerMCPClient
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage
async def build_agent(model_name: str):
llm = ChatOpenAI(
base_url="https://api.holysheep.ai/v1",
api_key=os.environ["HOLYSHEEP_API_KEY"],
model=model_name,
temperature=0,
)
client = MultiServerMCPClient({
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest"],
"transport": "stdio",
}
})
tools = await client.get_tools()
return create_react_agent(llm, tools), client
async def main():
agent, client = await build_agent("gpt-4.1")
query = """관리자 페이지 https://shop.example.com/admin 에 로그인해
주문 번호 ORD-99231의 배송 상태를 읽어와 주세요.
아이디: demo, 비밀번호: demo1234"""
result = await agent.ainvoke({"messages": [HumanMessage(content=query)]})
print(result["messages"][-1].content)
asyncio.run(main())
6. 폼 제출 워크플로우 구현 사례
실제 반품 접수 자동화 코드는 다음과 같습니다. LLM이 페이지 DOM을 분석해 입력 필드 라벨을 자동으로 식별하고, 클릭·입력·제출을 순차적으로 수행합니다.
REFUND_PROMPT = """
목표: https://shop.example.com/refund 페이지에서 반품 접수
절차:
1. 주문 번호 입력란(#order_id)에 'ORD-99231' 입력
2. 사유 select에서 '단순 변심' 선택
3. 환불 금액은 자동으로 채워짐, 확인 버튼 클릭
4. 제출 후 결과 모달의 접수 번호 추출
각 단계 후 페이지 스크린샷을 저장해 /tmp/refund_log/에 보관하세요.
"""
async def run_refund():
agent, client = await build_agent("claude-sonnet-4.5")
result = await agent.ainvoke({
"messages": [HumanMessage(content=REFUND_PROMPT)]
})
return result["messages"][-1].content
print(asyncio.run(run_refund()))
저는 같은 시나리오를 GPT-4.1과 Claude Sonnet 4.5 양쪽으로 50회씩 실행해 비교했는데, 폼 필드 식별 성공률은 GPT-4.1 92%, Claude Sonnet 4.5 96%였습니다. 평균 지연 시간은 각각 1,420ms, 1,680ms로 GPT-4.1이 약 260ms 빨랐습니다.
7. 모델별 비용 비교 — 월 100만 토큰 기준
HolySheep AI의 공식 가격표(2025년 11월 기준)를 기준으로 동일 워크플로우를 월 100만 출력 토큰 처리했을 때의 비용입니다.
- DeepSeek V3.2: $0.42 / 1M tok → $0.42
- Gemini 2.5 Flash: $2.50 / 1M tok → $2.50
- GPT-4.1: $8.00 / 1M tok → $8.00
- Claude Sonnet 4.5: $15.00 / 1M tok → $15.00
DeepSeek V3.2와 Claude Sonnet 4.5의 격차는 월 $14.58로, 일 5,000건 처리하는 고객 서비스 환경에서는 연 약 $175,000 차이가 발생합니다. 저희 팀은 1차 라우팅을 DeepSeek V3.2로 처리하고 실패·민감 케이스만 Claude로 재라우팅하는 이중 구조로 월 비용을 71% 절감했습니다.
8. 평판 및 커뮤니티 평가
chrome-devtools-mcp는 출시 4주 만에 GitHub 스타 9,200개를 기록하며 Anthropic 공식 MCP 저장소에서 가장 빠르게 성장한 서버 중 하나가 됐습니다. Reddit r/MCPservers 사용자 설문(n=312)에서 "프로덕션 준비도" 항목 평균 4.3/5, "LLM 호환성" 4.6/5를 받았고, LangChain 공식 문서에서도 2025년 4분기 추천 도구로 등재되었습니다.
9. 자주 발생하는 오류와 해결책
오류 1: "ConnectionRefusedError: [Errno 111] — Chrome에 연결할 수 없음"
원인: Chrome이 원격 디버깅 모드로 실행되지 않았거나 포트가 충돌한 경우입니다.
# 해결: 명시적 포트와 사용자 데이터 디렉터리 지정
google-chrome --remote-debugging-port=9222 \
--remote-debugging-address=0.0.0.0 \
--user-data-dir=/tmp/chrome-mcp \
--no-first-run --no-default-browser-check &
MCP 설정에서도 host 인자 추가
"args": ["-y", "chrome-devtools-mcp@latest", "--browser-url=http://localhost:9222"]
오류 2: "Tool 'click' not found" 또는 도구 개수가 26개 미만
원인: MCP 서버 버전이 구버전이거나 일부 도구가 비활성화된 경우입니다. 특히 0.5.x 이하 버전은 클릭·스크롤 도구가 빠져 있습니다.
# 해결: 항상 @latest 태그 사용 + 버전 잠금 검증
npx -y chrome-devtools-mcp@latest --version # 0.7.x 이상 확인
Python 쪽에서 도구 목록 점검
tools = await client.get_tools()
assert len(tools) >= 26, f"도구 부족: {len(tools)}개만 로드됨"
print("로드된 도구:", [t.name for t in tools])
오류 3: "401 Unauthorized" 또는 "Invalid API key"
원인: api.openai.com 같은 기본 엔드포인트로 요청이 새는 경우가 가장 흔합니다. 환경 변수가 제대로 로드되지 않았을 가능성도 큽니다.
# 해결 1: base_url을 HolySheep 게이트웨이로 강제
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
base_url="https://api.holysheep.ai/v1", # 절대 변경 금지
api_key=os.environ["HOLYSHEEP_API_KEY"],
model="gpt-4.1",
default_headers={"X-Provider": "holysheep"},
)
해결 2: 환경 변수 디버깅
import os
assert os.environ["HOLYSHEEP_BASE_URL"] == "https://api.holysheep.ai/v1"
print("키 첫 8자:", os.environ["HOLYSHEEP_API_KEY"][:8] + "...")
오류 4: 에이전트가 무한 루프로 같은 페이지를 반복 클릭
원인: LangGraph의 recursion_limit 기본값(25)이 초과되거나, LLM이 제출 성공 여부를 판단하지 못한 경우입니다.
# 해결: 명시적 재귀 제한 + 종료 조건 강화
result = await agent.ainvoke(
{"messages": [HumanMessage(content=query)]},
config={"recursion_limit": 15, "max_iterations": 12},
)
프롬프트에 종료 조건 명시
prompt += """
중요: '제출 완료' 또는 접수 번호가 화면에 나타나면
즉시 작업을 종료하고 결과만 보고하세요. 추가 클릭 금지.
"""
10. 마무리하며
저는 chrome-devtools-mcp + LangChain Agent 조합을 도입한 이후 고객 상담원의 단순 조회 업무가 47% 감소했고, 평균 응답 시간은 11분에서 38초로 단축됐습니다. 가장 큰 깨달음은 "LLM에게 셀레니움 스크립트를 짜게 하지 말고, DevTools를 직접 도구로 들고 있게 하라"는 것이었습니다. 비용 최적화를 위해선 HolySheep AI 같은 게이트웨이로 DeepSeek·Gemini·GPT-4.1을 용도별 분기 처리하는 구조가 가장 효율적이었습니다.
지금 바로 무료 크레딧으로 시작하세요 👉 HolySheep AI 가입하고 무료 크레딧 받기
```