MCP 스택
모든 서버가 동일한 실제 작업(리소 하우스 스타일의 1080x1350 소셜 포스트, 독립적인 쿼리로 검증된 실제 공간 질문)에 대해 실행된 bake-off에서 나온 현장 가이드입니다. 무료 계층만 해당합니다.
규칙: 무료 전용. 소유자의 명시적인 허락 없이 업그레이드하거나, 평가판을 시작하거나, 카드를 등록하지 마세요. 유료화 장벽은 구매가 아니라 발견 사항입니다.
규칙: 아무것도 게시하지 않습니다. Orshot에는 소셜에 게시하는 publish 파라미터가 있고, Canva와 Figma는 공유할 수 있습니다. 요청 없이 절대 전달하지 마세요. 출력물은 사람이 검토하는 로컬 파일입니다.
디자인 / 아트 / 브랜드 — 작업별 선택
| 작업 | 사용 | 이유 / 비용 |
|---|---|---|
| 브리프에 따른 완성된 마케팅 자료, 최고의 외관 | canva create-design -> resize-design -> export-design | 세트 중 최고의 출력물. 월 약 6개 AI 디자인 무료 (디자인 1개 = 할당량의 약 15%, 월 초기화). 재생성보다 edit-design으로 편집하세요. |
| 리소 포스트 / 카드 / 포스터, 무제한, 정확한 숫자 | inkscape MCP inkscape_vector construct_svg (params.header + params.body) -> inkscape_render export_preview | 실제 하프톤 패턴, feTurbulence 그레인, 곱셈 오버프린트, 레지스트레이션 오차를 렌더링합니다. 약 5초, 헤드리스, 무제한. 반복 가능한 작업의 기본값; SVG 본문을 템플릿 파일로 유지하세요. |
| 디자인 파일 내 정밀한 벡터 레이아웃 | penpot execute_code -> export_shape | 무료, 무제한. 파일이 열려 있는 Penpot 탭이 있어야 합니다 (헤드리스 가능). 그렇지 않으면 모든 호출이 실패합니다. |
| 누군가가 이어받을 수 있도록 Figma에서 동일 작업 | figma create_new_file + use_figma | 무료 스타터 = 월 약 20회 호출, 3개 파일. 예산을 할당하세요. createImageAsync/setPluginData는 사용 불가. |
| 변수가 포함된 재사용 가능한 템플릿 (OG 카드, IG 포스트 시리즈) | orshot | 월 약 100회 렌더링 무료. 도형 색상은 style.fill에 지정합니다 (backgroundColor는 검은색으로 칠함). 출력 URL은 공개적이지만 추측 불가능합니다. |
| AI 일러스트레이션 초안, 무료 | huggingface dynamic_space -> mcp-tools/Qwen-Image, aspect_ratio:"3:4" | 무료 모델 중 리소에 가장 가깝습니다. 일 약 6개 이미지 (ZeroGPU 할당량). 1.6MP; 모서리에 가짜 서명 낙서를 그립니다 — 자르세요. 최종본은 유료 엔진(make-art)으로 보내세요. |
| 투명 PNG 컷아웃 | huggingface space_name: Upsampler/birefnet-background-removal, {"image":"<공개 URL>"} | 약 5초. Spaces는 공개 URL만 받으며 로컬 경로는 허용하지 않습니다. |
| 컬러 래스터 -> SVG (로고, 마크) | shapesoda vectorize {image_base64, image_type:"artwork", colors:8, format:["svg"]} | 일 약 10회 무료. 다운로드 링크는 24시간 후 만료 — 즉시 가져오세요. 컷아웃 가장자리의 불필요한 #ff00ff 경로를 제거하세요. SVG를 4배로 렌더링 = 플랫 아트에 대한 무료 업스케일입니다. |
| 단색 잉크 SVG (스탬프, 스텐실, 키라인 플레이트) | svg-tracer trace_bitmap_to_svg (절대 경로) | 로컬 potrace, 무제한, 0.1초. |
| 실제 숫자로 만든 차트 | antv-chart | 손으로 그린 질감 옵션. 데이터를 타사 렌더링 서비스로 보내고 공개 URL을 반환합니다 — 공개 숫자만 사용하세요. 빈 x축 제목은 "category"를 출력합니다. |
| 3D 타이포그래피 / 제품 목업 | Blender MCP (앱 실행 필요) | 애드온과 함께 Blender를 실행한 다음, DISABLE_TELEMETRY=true와 함께 임시로 서버를 추가합니다(uvx mcp-for-blender@<고정>). 텔레메트리는 기본적으로 켜져 있습니다 — 항상 비활성화하세요. |
| 래스터 마무리 (신문지 하프톤, 사진 편집) | GIMP MCP (gimp-console 실행 필요) | GIMP 3.2 헤드리스의 경우: gimp-console -i --batch-interpreter=python-fu-eval -b "p=Gimp.get_pdb().lookup_procedure('plug-in-mcp-server'); c=p.create_config(); c.set_property('run-mode', Gimp.RunMode.NONINTERACTIVE); p.run(c)" &. 뉴스프린트 기본값은 선(lines) — circle로 설정하세요. 16진수 색상만 사용하세요. 사용 후 gimp-console을 종료하세요. |
| HTML -> PNG 카드, 머신 외부로 나가지 않음 | Satori MCP, 패치됨 | 기본 버전은 모든 이미지를 공용 blob 스토리지에 업로드합니다. 로컬에 저장하도록 패치하세요. 잠긴 lockfile로 설치하세요. |
조각의 모든 숫자는 라이브 소스(curl)에서 가져오며, 직접 입력하지 않습니다. 밝은 배경에서 악센트 색상의 대비를 확인하세요 (크림색 배경의 중간 빨간색은 약 3.8:1로 작은 텍스트에 실패할 수 있음; 약 24px 미만에서는 더 어둡게 만드세요).
제외됨 (재테스트 불필요): Pollinations (워터마크, 저해상도), Stability (일회성 평가판), fal/Replicate/Together (카드 없는 무료 계층 없음), Krita MCP (텍스트 없음), tldraw 및 Excalidraw MCP 앱 (채팅 UI 내에서만 그리기), Bannerbear/Placid (평가판), Postiz (무료 클라우드 없음, Docker 필요), Remotion MCP (문서 전용), Buffer (가입 CAPTCHA).
데이터 / 공간
| 작업 | 사용 | 함정 |
|---|---|---|
| parquet/csv/geojson/.duckdb에 대한 SQL + 공간 | duckdb MCP (인메모리, spatial 로드됨) | ST_Transform(ST_Point(lon,lat),'EPSG:4326','EPSG:26915')가 자동으로 POINT(inf inf)를 반환하여 거리 필터가 0으로 집계됩니다. always_xy := true를 전달하세요. 감정인 열은 종종 VARCHAR입니다 (max는 텍스트로 정렬됨); 판매 가격에는 999,999,999 플레이스홀더가 포함될 수 있습니다. 서버가 읽기-쓰기로 실행되면 어디든 COPY TO할 수 있습니다: 실제 파일을 READ_ONLY로 연결하세요. |
| 실시간 ArcGIS FeatureServer 레이어 | duckdb ST_Read('<FeatureServer>/0/query?where=...&outFields=...&orderByFields=OBJECTID&f=geojson&resultOffset=N') | 경고 없이 서버의 maxRecordCount(종종 2,000)에서 자동으로 잘립니다. 먼저 returnCountOnly=true를 확인하고, resultOffset + orderByFields로 페이지를 나누고, UNION ALL에서 열 이름을 지정하세요 (빈 마지막 페이지에는 열이 없음). |
| OSM / Overpass (동네 레스토랑 등) | osm openstreetmap_search_places -> 관계 id -> openstreetmap_query_bbox{within:"R..."} | 이름별 영역 누수: 동네 이름이 다른 주에 있는 같은 이름의 장소에서 행을 가져올 수 있습니다. 항상 관계 id 내부를 검색하세요. Overpass 미러 500 오류가 자주 발생합니다. 재시도하세요. |
| 주소/트랙별 Census ACS | census census_resolve_geography{name:"<주소>"} -> census_query_data{dataset:"acs/acs5", ...} | MOE (...M 변수)를 반환합니다 — 보고하세요. 무료 CENSUS_API_KEY가 필요합니다. |
| 만든 것을 보기 위해 지도 PNG 렌더링 | maplibre render_style | 헤드리스 Chrome, OpenFreeMap 베이스맵, 키 없음. |
제외됨: gis-mcp (88개 도구, DuckDB가 대체), 공식 Census MCP (Docker+Postgres 필요), 페이지 나누기가 없는 크롤러 스타일 ArcGIS MCP, PostGIS (DuckDB가 대체).
웹 리서치 / 추출
| 작업 | 사용 | 함정 |
|---|---|---|
| "X에서 운영 담당자는 누구인가", 인물/회사 리서치 | exa web_search_exa | 키 불필요. 일반 웹 검색이 찾지 못하는 회사 자체 팀 페이지를 종종 찾습니다. |
| 알려진 페이지 빠르게 읽기 | exa web_fetch_exa {urls:[...]} | 인덱스에서 1초 미만 — 캐시되었고 JS 없음; 오래된 정보 가능성 있음. |
| 정확한 구문 검색, 렌더링된 스크레이핑 | firecrawl | 월 약 1,000크레딧 무료 (스크레이핑 1, 검색 2, JSON 5). JSON 추출은 필드를 조작합니다 — 반환된 markdown에만 나타나는 것만 신뢰하세요. |
| 렌더링된 크롤링, 무제한, Cloudflare에 숨겨진 이메일 | Crawl4AI CLI crwl <url> -o markdown | curl이 놓치는 data-cfemail을 디코딩합니다. 배치: AsyncWebCrawler(...).arun_many. |
| 설치된 것이 없는 JS 페이지 | curl https://r.jina.ai/<url> | 분당 약 20회 요청, 키 불필요, 2-18초. |
- 일부 도시 포털은 헤드리스가 통과할 수 없는 Cloudflare 뒤에 있습니다. 해당 포털의 ArcGIS REST 레이어는 일반적으로 동일한 데이터를 가지고 있습니다.
- 이메일: 비즈니스가 자체 사이트에 게시한 주소를 사용한 다음 해당 정확한 도메인의 MX를 확인하세요. 디렉토리는 도메인을 망가뜨립니다 (빠지거나 추가된 문자가 일반적임). 메일박스 수준의 확인은 일반적으로 홈 연결에서는 불가능합니다. 포트 25가 차단되어 있습니다.
- 제외됨: Reddit MCP (403 익명 —
reddit-mining사용), browser-use (유료 LLM 키 필요), Browserbase (전화 확인). Tavily/Apify/Hunter/Brave는 모두 가입 시 CAPTCHA에서 멈춥니다 — 원한다면 각각 한 번의 사람 클릭이 필요합니다.
금융 / 정부 데이터
| 작업 | 사용 | 함정 |
|---|---|---|
| 보고된 재무제표, 최신 분기 | sec-edgar get_xbrl_concepts (파일링별) | EDGAR companyfacts (많은 도구의 get_key_metrics가 읽는 것)는 한 분기 뒤쳐질 수 있습니다 — 조용히 이전 분기에서 멈춥니다. 파일링별 XBRL은 최신 정보를 정확히 가져옵니다. sec-financials를 참조하세요. |
| 가격, 애널리스트 업/다운그레이드, 예상치 | yfinance | 불안정한 것으로 간주하세요. 숫자를 사용하기 전에 거래소 자체 페이지에서 종가를 확인하세요. |
| SAM.gov 기회, grants.gov, data.gov | 키가 없는 gov 데이터 MCP | 무료 SAM 경로 (SAM의 자체 API는 login.gov MFA 필요). 검색 결과는 NAICS/set-aside를 생략합니다 — 각 공지를 가져오세요. |
| USAspending 수상 내역 | usaspending | 수혜자 위치가 아닌 성과 장소로 필터링합니다 — "주 X의 수혜자"를 찾으려면 recipient_locations와 함께 spending_by_award를 호출하세요. "수상 금액"은 평생 금액이며 회계 연도가 아닙니다. |
| 10년 만기 국채 등 | 키 없음 curl "https://fred.stlouisfed.org/graph/fredgraph.csv?id=DGS10&cosd=<YYYY-MM-DD>" | FRED는 재무부 자체 곡선보다 약 1일 늦습니다. |
프레임워크
- Claude Agent SDK: 예약된 헤드리스 에이전트(예: sec-edgar MCP를 호출하고 JSON을 쓰는 uv 스크립트)에 사용합니다. macOS launchd에서는
~/Desktop또는~/Documents를 읽을 수 없습니다 — 파일을 다른 곳에 배치하세요. - promptfoo: 채팅 제품 평가: 실제 시스템 프롬프트를
claude -p로 실행하여 결정론적 어설션(금지어, 단어 제한)을 확인하세요.PROMPTFOO_DISABLE_TELEMETRY=1을 설정하세요. 프롬프트를 stdin으로 전달하세요 (--tools ""는 위치 인수 프롬프트를 삼킴). - Observable Framework: 데이터 -> 정적 사이트 (Python 로더는
uv run사용). 리터럴 분석<script>태그는 빌드를 깨뜨립니다. 런타임에 주입하세요. - uv 스크립트: 모든 소규모 파이프라인에 (PEP 723 인라인 의존성) 사용합니다.
- 제외됨: Evidence.dev (현재 로그인 게이트 스튜디오), 소규모 작업용 Pydantic AI/DSPy (SDK가 대체), 세션당 수천 개의 컨텍스트 토큰을 소비하는 무거운 벤더 플러그인.
운영
| 필요 | 사용 | 참고 |
|---|---|---|
| 일회성 제품 분석 질문 ("어떤 이벤트가 존재하나요", 퍼널) | posthog (단일 exec 도구) | HogQL과 동일한 숫자. 개인 API 키는 플래그/코호트를 쓸 수 있습니다 — 읽기 전용으로 유지하세요. |
| Mac에서 문자 메시지 읽기 | imessage MCP | 원시 chat.db SQL보다 우수: attributedBody 디코딩, 탭백 제거, 연락처 확인. 보내기 도구 없음. 고정하세요 — 단일 관리자. |
| 최신 라이브러리 문서 | context7 | 쿼리에 벤더 이름을 지정하세요. 그렇지 않으면 잘못된 라이브러리를 확인합니다. |
MCP가 아닌 스킬을 유지하세요. 같은 답변에 대해 MCP가 더 느리고 무거운 경우: Vercel (MCP는 buy_domain을 포함한 약 240개 도구; vercel-api 참조), Stripe (MCP가 고객 이름을 수정함; stripe-dashboard 참조), GitHub (gh), Notion (curl; 호스팅된 MCP는 통합 토큰을 거부함), Apple Notes (apple-notes; MCP는 삭제 도구를 제공함). 사용자의 규칙이 사람이 보내기 버튼을 누르는 것이라면 보내기 도구가 있는 이메일 제공업체의 MCP를 절대 추가하지 마세요.
인증 상태
- OAuth 서버 (canva, figma, orshot):
claude mcp list에서 "인증 필요"라고 표시되면 대화형 세션에서/mcp를 한 번 실행하세요. 비밀번호와 토큰은 Keychain에 보관하고 절대 리포지토리에 저장하지 마세요. - 해당 사이트의 설정 -> 연결된 앱에서 OAuth 권한을 취소하세요.
새 MCP 추가
등록 전에 테스트: npx -y @modelcontextprotocol/inspector --cli <cmd> --method tools/list (서버를 셸 스크립트로 감싸세요 — inspector는 -e와 서버 플래그를 삼킴). 그런 다음: 버전 고정 ([email protected]; 참조 서버는 번호를 다시 매김), 보내기/삭제/게시 도구에 대한 도구 목록 읽기, 텔레메트리 기본값 확인, 함정과 함께 위에 한 행을 추가하세요. 더 이상 가치를 제공하지 않으면 제거하세요.