Community코딩 & 개발github.com

2016judea/mcp-stack

어떤 무료 MCP 서버나 프레임워크를 사용해야 하는지, 그리고 그 함정에 대한 안내서 — 금융/정부 데이터(SEC EDGAR, Yahoo, SAM.gov, USAspending), 웹 리서치(Exa, Firecrawl, Crawl4AI, Jina reader), 디자인/아트/브랜드(Canva, Inkscape, Penpot, Figma, Orshot, Hugging Face 이미지 생성, 벡터화, 차트), 데이터/공간(DuckDB spatial, 실시간 ArcGIS 레이어, OpenStreetMap/Overpass, Census, MapLibre), 운영(PostHog, iMessage, context7 문서)을 다룹니다. 소셜 포스트, OG 카드, 포스터, 로고/벡터, 차트, 지도 또는 브랜드 에셋을 만들 때; parquet/geojson/duckdb나 도시의 공개 데이터 레이어를 쿼리할 때; MCP가 "인증 필요" 오류를 내거나 실패할 때; 또는 "우리가 가진 도구는?", "X에 대한 MCP가 있나요?", "X를 추가해야 하나요?"라는 질문을 받을 때 사용하세요.

mcp-stack란 무엇인가요?

이 스킬은 다양한 실제 작업에 대해 **무료 계층**의 MCP 서버와 프레임워크를 체계적으로 비교 평가한 결과를 제공하는 실용적인 안내서입니다. 소셜 미디어 포스터, 차트, 지도, 로고 등 디자인/아트 작업에 가장 적합한 도구를 작업 유형별로 제시하며, 각 도구의 무료 사용 한도와 주의해야 할 함정(예: Canva의 월간 크레딧 제한, DuckDB의 좌표 변환 오류, Firecrawl의 JSON 필드 조작)을 상세히 설명합니다. 또한 금융 및 정부 데이터(SEC EDGAR, Yahoo Finance, USAspending), 웹 리서치(Exa, Firecrawl, Crawl4AI), 공간 데이터(DuckDB spatial, ArcGIS, OpenStreetMap), 운영 도구(PostHog, iMessage) 등 다양한 영역을 아우르며, 각각의 사용법과 함정을 구체적인 예시와 함께 명시합니다. 단순한 도구 목록을 넘어, 특정 작업이나 상황(예: "인증 필요" 오류 발생 시, 새 MCP 추가 방법)에서 어떻게 대응해야 할지에 대한 실용적인 조언과 워크플로우를 제공하여, 개발자나 AI 에이전트 사용자가 불필요한 시행착오 없이 효율적으로 작업할 수 있도록 돕습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/2016judea/brick-mortar-skills/tree/HEAD/skills/mcp-stack

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

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 ACScensus 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 markdowncurl이 놓치는 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]; 참조 서버는 번호를 다시 매김), 보내기/삭제/게시 도구에 대한 도구 목록 읽기, 텔레메트리 기본값 확인, 함정과 함께 위에 한 행을 추가하세요. 더 이상 가치를 제공하지 않으면 제거하세요.

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

2016judea/ascii-charts

Build charts as plain Unicode-block text — bar, range, bullet, gap-bracket, star-histogram, heatmap, line, Venn, pie, donut and scatter — with a dependency-free Python script, for anywhere only monospace text survives (newsletter code blocks, Markdown, terminals, plain-text email, chat). Use when a chart has to embed as literal text instead of an image or a third-party chart service, or when you want a hand-made terminal look with no branding footer.

2016judea/buffett-checklist

Apply Warren Buffett's investment framework as a discipline lens when weighing a buy, hold, or sell decision — circle of competence, economic moat, owner earnings & intrinsic value, margin of safety, management/capital-allocation quality, and market psychology (Mr. Market, fear vs greed, temperament). Use when asked to "run this through Buffett", "what would Buffett say", "does this pass the moat test", "is this cheap enough", or for a second, more skeptical read on a name being evaluated or already held. This is a discipline overlay, not a replacement for a strategy — it applies the Buffett lens to how someone actually invests, rather than issuing generic advice.

2016judea/image-riff

Turn one or more reference images into original art in that reference's own visual language, then cut it to whatever surface it's for. Use when you paste or point at art and say "use this as the base image", "generate art from this", "riff on this", "some creative ideation with these images", "make me a channel banner / avatar / cover / plate", "wilder version of this", or want a spread of options off one piece of reference. This is the TASK skill; the engine is the `make-art` tool skill.

2016judea/leonardo

Draw the way Leonardo da Vinci drew — a study sheet, a notebook folio, a red-chalk or silverpoint study, a machine cutaway, a storm of vortices — in his real materials and page-logic, generated with the make-art engine and anchored on fifteen of his actual (public-domain) sheets. Use when you say "Leonardo", "da Vinci", "like his notebooks", "a codex page of X", "draw this as one of his study sheets", "sanguine", "silverpoint", or wants a design, diagram, or illustration in that hand. Also a reading guide to his notebooks (Richter's 1883 public-domain translation) for "what did Leonardo say about shadow / trees / water". This is a TASK skill; the engine is `make-art`.

2016judea/records-request

Get a specific record out of a US government office by public-records request — "request the assessor's model", "file a data practices request", "FOIA this", "open records request", "can we just ask the county for it", "who do I write to at <county>", "chase that request", "did they ever answer". Covers checking the website first, finding the right office and statute, the carve-out paragraph that makes a request answerable instead of refused, web-form traps (hidden character caps, WAFs that reject apostrophes), chasing (there is usually no deadline), whether what comes back may be republished, and parsing multi-year tables without silent errors.

2016judea/sms-native-product

Build a product whose interface is text messages rather than an app or a website — "no app, no website", "they just text a number", "chat with our agent natively in Text Messages", "can we do this over text", "an SMS bot", "a Telegram bot", "make it a group chat", "minimum viable friction". Fires equally when it has already gone wrong — "my campaign got rejected", "our number is blocked", "the texts aren't arriving", "why do I need to register". Covers the gate that decides whether such a product can send at all (US A2P 10DLC registration, SHAFT content rules, permanent rejection codes), group MMS from code, what each channel can't do, an architecture that survives losing the channel, and guarding model-rewritten user content.

2016judea/vertical-market-agent

Build a chat agent that knows one industry in one metro better than any general model because it carries a precomputed digest of real public records (or a mined review corpus) and can pull live records mid-conversation — finding the moat, building a byte-stable substrate, enumerating what the records can't, the data traps that produce plausible wrong numbers, deterministic math in tools, measured prompt cost and cache TTL, shipping as an ad destination, an off-sector ending, and a precomputed spatial "what is this next to" layer. Use when building a vertical AI agent grounded in records rather than general knowledge.

관련 스킬