MCP
문제
MCP 도구로 값을 읽어야 하는데 스크린샷을 찍고 좌표를 추정하는 쪽으로 흘러가거나, 세션 중 등록한 MCP 도구가 안 보이거나, 브라우저 자동화를 어떤 도구로 할지 매번 헷갈립니다.
추천
값을 읽을 때는 스크린샷보다 MCP 읽기 도구를 먼저 씁니다. MCP는 세션 도중 등록해도 재시작 전까지 로드되지 않습니다. 외부 서비스에 반복해서 접근해야 하면 MCP 대신 그 서비스의 CLI를 직접 부르는 편이 컨텍스트를 덜 쓸 때가 많습니다.
이유
스크린샷은 화면을 보는 용도입니다. 값을 추출하는 용도가 아닙니다. 디자인 도구든 대시보드든, 색상·좌표·수치 같은 값을 읽어야 할 때 스크린샷을 찍고 좌표를 눈대중으로 추정한 뒤 다시 찍어서 확인하는 루프에 빠지기 쉽습니다. 이 루프는 토큰을 빠르게 소모합니다. 해당 서비스의 MCP 서버가 구조화된 값을 텍스트로 돌려주는 읽기 전용 도구(디자인 변수 조회, 속성 조회 API 등)를 제공한다면 그것부터 씁니다. 구조 파악용 도구보다 값 조회용 도구를 먼저 쓰는 편이 호출 수를 줄입니다. 코드 주석에 근거를 남길 때도 “스크린샷으로 확인” 대신 실제 값과 변수명을 남기면 다음 사람이 재현할 수 있습니다.
세션 도중 등록한 MCP는 그 세션에 도구가 로드되지 않습니다. 재시작이 필요합니다. 급하면
.env를 소싱해(set -a; source .env; set +a) 해당 라이브러리를 직접 호출하는 스크립트로
우회합니다. 이때 그 라이브러리가 있는 디렉터리 안에서 실행해야 모듈이 해석됩니다.
반복 호출이 필요한 외부 서비스 작업은 CLI가 MCP보다 컨텍스트를 덜 씁니다. MCP 도구 호출을 여러 번 쌓는 것보다 그 서비스의 공식 CLI를 Bash로 한 번 부르는 쪽이 왕복 수와 컨텍스트 크기 모두에서 유리할 때가 많습니다.
프로젝트별 MCP 비활성 목록은 ~/.claude.json의 projects["<cwd>"].disabledMcpServers에
있습니다.
브라우저 자동화 도구 선택은 두 조건으로 갈립니다. 사용자의 로그인 세션·쿠키를 그대로 써야 하는 판독은 그 세션을 재사용하는 도구로 합니다. 영상 녹화·trace·디바이스 에뮬레이션·격리된 프로필이 필요하면 Playwright MCP로 합니다. 기본값을 정해 두고 예외 조건에 해당할 때만 다른 쪽으로 넘어가는 형태가 매번 판단하는 것보다 낫습니다.
Playwright MCP는 file://을 차단합니다(Access to "file:" protocol is blocked). 로컬
서버(python3 -m http.server 등)로 우회합니다. 스크린샷의 상대 filename은 도구의 기본
출력 디렉터리가 아니라 세션 작업 디렉터리에 떨어질 수 있습니다. 파일이 보이지 않으면
find로 찾습니다.
예시
값을 읽을 때는 스크린샷보다 구조화된 조회 도구를 먼저 씁니다.
1. MCP 읽기 도구로 값을 텍스트로 받는다2. 안 되면 속성 패널의 텍스트를 추출한다3. 그래도 안 되면 스크린샷을 찍는다 — "찍고 추정하고 다시 찍기"로 흘러가지 않도록 여기서 멈춘다세션 중 등록한 MCP를 재시작 없이 급히 쓸 때:
set -a; source .env; set +anode ./scripts/call-lib-directly.mjs # 해당 라이브러리 디렉터리 안에서 실행브라우저 자동화 판단:
로그인 세션·쿠키가 필요한가? → 세션을 재사용하는 도구녹화·trace·디바이스 에뮬레이션·격리 프로필이 필요한가? → Playwright MCP둘 다 아니면 → 물어본다하지 말 것
값을 읽으려고 스크린샷을 찍고 좌표를 추정하는 일을 반복하기. 토큰 소모가 늘어납니다. 구조화된 읽기 도구로 되는 일이면 스크린샷까지 갈 필요가 없습니다.
세션 중 MCP를 등록하고 바로 도구가 보이길 기대하기. 재시작 전까지 로드되지 않습니다.
반복 호출이 필요한 외부 서비스 작업을 MCP 호출만으로 밀어붙이기. CLI가 있다면 그쪽이 컨텍스트를 덜 씁니다.