Skip to main content
Glama
MUSE-CODE-SPACE

content-genie-mcp

content-genie-mcp

Korean-content-creator MCP that gives Claude live Naver/Daum/Google/YouTube/Zum trends, a 100+ Korean-holiday DB, and a viral-score predictor — so you stop tab-hopping between 5 trend dashboards before every post.

CI npm License: MIT Maintained

English · 한국어


Why content-genie?

Most "trend" MCPs are thin wrappers around Google Trends. If you're publishing for a Korean audience (Naver Blog, YouTube Korea, Instagram KR, TikTok), Google alone misses the signal — Naver Datalab, Daum search, Zum realtime, and KR-region YouTube each surface different keywords at different hours. content-genie consolidates all five sources into one MCP, layers a 100+ Korean-holiday + 14일-day-series + 절기 event database so Claude can plan around 빼빼로데이 and 수능 without being told, and finishes the loop with a viral-score predictor trained on the structural patterns (numbers, brackets, emotional triggers, urgency words) that move CTR in Korean content.

The Phase 4 refactor (v2.12.0, May 2026) made the whole thing safe to depend on: every scraper sits behind a per-source circuit breaker (3 fails → open 5 min) with a stale-cache fallback, so a Naver HTML change no longer takes the whole MCP down — it just degrades that one source and tells the LLM about it via resource://content-genie/sources.

Related MCP server: Hot-News

What's new in v2.12.0

  • 17 tools, one registry, six small files. The old 4,712-line index.ts is gone — tools live in src/tools/{trends,seo,contentIdeas,viralScoring,competitorAnalysis,koreanEvents}.ts. Adding a tool is a one-liner.

  • Scrapers can't take the server down anymore. Per-source circuit breaker + LRU/TTL cache (15 min, 100 entries) + stale fallback. When Naver is degraded, Claude sees source_status: 'stale' and adapts.

  • Two new MCP Resources for @-mention. resource://content-genie/korean-events/{year} returns the full event DB rebased to any year; resource://content-genie/sources exposes live breaker + cache state.

  • Two MCP Prompts as guided workflows. viral-title chains optimize_title_hashtagspredict_viral_scoregenerate_ab_test_variants. competitor-analysis does URL analysis + gap-filling ideation.

  • 38 tests across 8 suites. Circuit breaker transitions, cache eviction, scraper fallback paths, SSRF guard, every tool group — runs on Node 20 + 22 in CI.

5-minute Quickstart

# 1. Install via Claude Code (recommended)
claude mcp add content-genie -- npx -y content-genie-mcp

# 2. Or add to Claude Desktop's claude_desktop_config.json:
{
  "mcpServers": {
    "content-genie": {
      "command": "npx",
      "args": ["-y", "content-genie-mcp"]
    }
  }
}
  1. Restart Claude Desktop (or claude will pick it up on the next run).

  2. Try this in Claude:

오늘 한국에서 뜨는 키워드 5개로 유튜브 쇼츠 제목 후보 3개씩 만들고, 각각 바이럴 점수 등급 매겨줘.
  1. Expected: Claude calls get_korean_trends (naver+daum+google+youtube+zum merged) → optimize_title_hashtags per keyword → predict_viral_score → returns a ranked S/A/B/C/D grade table with the structural reason ("제목에 숫자 + 호기심 트리거 포함").

Real use cases

1. "I need a Korean blog post topic that won't be obsolete by tomorrow"

Problem: Naver Blog rewards quick takes on the keywords trending right now, but those keywords change every 4 hours. With this MCP: Claude calls get_korean_trends({ platform: 'naver', limit: 20 }) and then generate_content_ideas against the freshest 5 keywords with seasonal: true. The seasonal layer adds upcoming Korean events from the 100+ DB — so the suggestion isn't just "AI 추천 도구" but "AI 추천 도구 + 수능 D-30 콘텐츠 기획" because get_seasonal_content_guide saw 수능 is 4 weeks out. Why it's better than the Naver Datalab UI: Datalab gives you a chart. This MCP gives you 5 titled, hashtag-optimized post drafts grounded in those same trends, in one conversational round-trip.

2. "Will this YouTube Shorts title actually pop?"

Problem: Title CTR is the single biggest lever on Shorts, but you only know after you publish. With this MCP: Paste your draft into Claude, say "use the viral-title prompt". The prompt chains optimize_title_hashtagspredict_viral_scoregenerate_ab_test_variants and returns an S~D grade plus 5 A/B variants with the structural deltas (added number, added urgency word, shortened to 25 chars). Why it's better than vibes: the scorer reads the same 6 signal classes a Korean copywriter would — emotional triggers (충격|실화|숨겨진), structural elements (numbers/brackets/?/!), urgency, social proof, utility framings (방법|꿀팁|노하우), and length window — and tells you which ones are missing.

3. "I run a small Korean brand, I need a content calendar that respects local holidays"

Problem: Generic calendar tools don't know about 빼빼로데이, 김장철, 수능, or 한가위 연휴, so you end up posting a promo on 현충일. With this MCP: Claude calls create_content_calendar({ months: 3, niche: 'beauty' }), which joins your 3-month window against the 100+ event DB (공휴일 18 + 데이 시리즈 12 + 절기 15 + 상업 이벤트 15 + 시즌/날씨 12 + 입시 10 + 쇼핑 10 + 크리에이터 특화 8) and produces a date-by-date plan with content themes per event. Why it's better than a Notion template: the DB is rebased to any year (resource://content-genie/korean-events/2027 is a single @-mention away), so the calendar stays accurate next year without you maintaining it.

Tools / Resources / Prompts

Name

Type

What it does

get_korean_trends

tool

Real-time trends across Naver / Daum / Google / YouTube / Zum, merged + de-duped

analyze_news_trends

tool

Korean news headline trends with category buckets

analyze_seo_keywords

tool

Naver + Google autocomplete + long-tail expansion

optimize_title_hashtags

tool

CTR-optimized title rewrites + per-platform hashtag set

generate_hashtag_strategy

tool

Per-platform (IG/YT/TikTok/Naver) hashtag mix with breadth/depth split

generate_content_ideas

tool

Idea generation seeded by trend + season + niche

generate_script_outline

tool

Long-form script / short-form scene-by-scene outline

repurpose_content

tool

One post → cross-platform variants (Blog → Shorts → Reel → Thread)

predict_viral_score

tool

S~D grade with structural / emotional / urgency reasons

generate_ab_test_variants

tool

N A/B title variants with the lever changed in each

predict_content_performance

tool

Heuristic CTR / share / save estimate

analyze_thumbnail

tool

Thumbnail concept analysis + CTR-optimization checklist

analyze_competitor_content

tool

URL-fetch competitor post (SSRF-guarded) + gap analysis

benchmark_content_performance

tool

Industry benchmarks by niche / platform

analyze_influencer_collab

tool

Influencer fit / audience-overlap / brief generator

create_content_calendar

tool

Multi-month calendar joined against Korean event DB

get_seasonal_content_guide

tool

"What should I post in the next 2 weeks?" — event-aware

resource://content-genie/korean-events/{year}

resource

Full 100+ event DB rebased to any year (JSON)

resource://content-genie/sources

resource

Live scraper breaker + cache state for graceful degradation

prompt://content-genie/viral-title

prompt

optimize → predict → A/B-vary, one slash command

prompt://content-genie/competitor-analysis

prompt

URL fetch → gap-fill ideation workflow

How it works

                    Claude (or any MCP client)
                              │
                              ▼
                        McpServer (SDK 1.25)
                              │
                  ┌───────────┼───────────┐
                  ▼           ▼           ▼
              17 tools    Resources    Prompts
                  │
                  ▼
            runScraper()  ◄── core/cache.ts (LRU + 15min TTL)
                  │       ◄── core/circuitBreaker.ts (3-fail → open 5min)
                  ▼
         scrapers/{naver,daum,google,youtube,zum}.ts
                  │
                  ▼
            core/security.ts (SSRF + 30s timeout + 5MiB cap)

Three design choices that matter:

  1. Per-source circuit breaker. A bad day at Naver doesn't take down 16 other tools — only the trend tools that need Naver, and even those return a stale-cache status: 'stale' envelope so the LLM can adapt.

  2. Scrapers never throw. They return a ScrapeResult envelope (ok | stale | unavailable). All error handling is in one place (runScraper), so adding a new source is "write a scraper, return ScrapeResult, done".

  3. Event DB rebased on read. The 100+ Korean holiday/event database is stored as month-day rules and rebased to any year on demand — so …/korean-events/2027 works today.

Configuration

Env var

Default

Purpose

MCP_HTTP_MODE

false

true to run as Streamable HTTP server instead of stdio

HOST

0.0.0.0

HTTP bind host

PORT

3000

HTTP bind port

CONTENT_GENIE_ALLOWED_HOSTS

KR search/social/commerce allowlist

Comma-separated host allowlist for analyze_competitor_content SSRF guard. Override to add your own competitor domains.

HTTP endpoints (when MCP_HTTP_MODE=true):

Method

Path

Purpose

GET

/

Server info

GET

/health

Health probe (Railway/Docker)

POST

/mcp

MCP JSON-RPC requests (2025-03-26 spec)

GET

/mcp

SSE stream for server-initiated messages

Known limitations

  • Scrapers are HTML-driven. Naver / Daum / Zum don't expose public trend APIs; the scrapers parse HTML. When they change their markup, the affected source returns status: 'unavailable' until we ship a parser fix. The circuit breaker keeps the rest of the MCP working in the meantime.

  • Viral score is structural, not semantic. predict_viral_score is a heuristic over Korean copy patterns. It can't read the meaning of your post — only the structural / emotional / urgency signals in the title + description.

  • No thumbnail image analysis. analyze_thumbnail works on a thumbnail concept description, not on an uploaded image. Image-in is on the roadmap.

  • Korean-first. Hashtag templates, urgency words, and the event DB are Korean. English/JP modes are not in scope for v2.x.

When NOT to use this

  • If you need a global trend dashboard, use Google Trends directly — content-genie is opinionated toward the Korean creator stack.

  • If you need paid keyword data with search volume (네이버 검색광고 API, Ahrefs, SEMrush), use those — content-genie's SEO tools rely on free autocomplete + heuristic long-tail expansion.

  • If you need deterministic LLM-free copy generation for compliance reasons, this MCP feeds an LLM — the LLM is what writes the actual titles.

Comparison

content-genie-mcp

Raw scraping yourself

Naver Datalab UI

SmartEditor / 네이버 검색광고 API

Multi-source merge (5 KR sources)

yes

DIY

Naver only

Naver only

Korean event DB built-in

100+ events

no

no

no

Circuit breaker + cache

yes

DIY

n/a

n/a

Viral score heuristic

yes

no

no

no

MCP-native (Claude @-mention events)

yes

no

no

no

Cost

free (npm)

dev time

free

paid above quota

Roadmap

  • More sources. Tistory realtime, Brunch picks, Kakao View — currently 5 sources, want 8.

  • Image-in thumbnail analysis. Accept uploaded thumbnails and run vision-based CTR scoring.

  • Cached-trend Resource. Expose resource://content-genie/trends/{platform}/latest so the LLM can @-mention last-scrape results without spending a tool call.

  • Video script → captions/subtitles. Pair generate_script_outline with a captions formatter for Shorts upload.

  • Naver 검색광고 API integration (opt-in). When the user supplies an API key, switch SEO tools from autocomplete heuristics to real search volume.

Contributing

PRs welcome. The Phase 4 refactor made the codebase contributor-friendly — adding a tool is a single-file change. See the Contributing section below or open an issue first if you want to discuss a larger change. CI runs typecheck + test + build on Node 20 + 22 against every PR.

Quick contributor loop:

git clone https://github.com/MUSE-CODE-SPACE/content-genie-mcp
cd content-genie-mcp
npm install
npm run typecheck && npm test && npm run build

Security

This MCP fetches third-party URLs and takes LLM-driven input. The threat model, SSRF host allowlist, 30-second fetch timeout + 5 MiB body cap, and CONTENT_GENIE_ALLOWED_HOSTS override are documented in SECURITY.md. Report vulnerabilities privately via a GitHub Security Advisory at https://github.com/MUSE-CODE-SPACE/content-genie-mcp/security/advisories/new.

License

MIT — SPDX identifier declared in package.json (a top-level LICENSE file will be added in the next release).

Maintainer

@yoon-k (MUSE-CODE-SPACE). For support, open an issue: https://github.com/MUSE-CODE-SPACE/content-genie-mcp/issues.


한국어 요약

content-genie-mcp는 한국 콘텐츠 크리에이터를 위한 MCP 서버입니다. 네이버 / 다음 / 구글 / 유튜브 / 줌 5개 소스의 실시간 트렌드를 한 번에 합쳐 보여주고, 100+ 한국 기념일/이벤트 DB(공휴일 18, 데이 시리즈 12, 절기 15, 상업 이벤트 15, 시즌/날씨 12, 입시 10, 쇼핑 10, 크리에이터 특화 8)와 바이럴 점수 예측기(S~D 등급, 한국어 카피 패턴 기반)를 함께 제공합니다.

v2.12.0(2026-05-20)에서 17개 도구가 도메인별로 모듈화되었고, 스크래퍼별 회로 차단기 + LRU 캐시 + stale fallback 으로 한 소스가 망가져도 나머지가 정상 동작합니다. @-mention 가능한 MCP Resources 2개와 슬래시 명령용 Prompts 2개도 추가되었습니다.

설치 (Claude Code):

claude mcp add content-genie -- npx -y content-genie-mcp

첫 호출 예시:

오늘 한국에서 뜨는 키워드 5개로 유튜브 쇼츠 제목 후보 3개씩 만들고, 각각 바이럴 점수 등급 매겨줘.

자세한 내용은 영문 섹션, 변경 이력은 CHANGELOG.md, 위협 모델은 SECURITY.md를 참고하세요.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
10Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MUSE-CODE-SPACE/content-genie-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server