Skip to main content
Glama
velog-mcp
by pockta11

velog-mcp

Claude Code(또는 다른 MCP 클라이언트)에서 벨로그(velog.io)에 직접 글을 발행할 수 있게 해주는 개인용 MCP 서버입니다.

중요: 벨로그는 공식 글쓰기 API를 제공하지 않습니다. 이 프로젝트는 velog.io 프론트엔드가 내부적으로 쓰는 비공식 GraphQL 엔드포인트(v3.velog.io/graphql)를 사용합니다. 벨로그 측이 이 스키마를 언제든 바꾸거나 접근을 막을 수 있으므로, 실패 시 Playwright로 실제 브라우저를 띄워 에디터를 조작하는 방식으로 자동 폴백하도록 만들었습니다.

동작 방식

  1. velog_login 도구로 최초 1회 브라우저 로그인 (이후 세션은 프로필에 저장되어 재사용됨)

  2. velog_create_post 호출 시 저장된 프로필에서 현재 세션 쿠키를 읽어와 GraphQL writePost 뮤테이션으로 시도 (페이지를 한 번 로드해서 velog 자체 토큰 갱신 로직이 동작할 기회를 줌)

  3. 그래도 실패하면(스키마 변경, 세션 만료 등) Playwright로 velog.io/write 페이지를 직접 조작해 발행 (같은 로그인 프로필 재사용)

Related MCP server: viruagent-mcp

설치

```bash npm install npx playwright install chromium npm run build ```

계정/세션 설정 (가장 중요한 단계)

토큰을 수동으로 복사할 필요 없습니다. Claude Code에서 velog_login 도구를 호출하면:

  1. 브라우저 창이 뜸

  2. 평소처럼 velog에 로그인 (아이디/비번, 소셜 로그인 다 가능)

  3. 로그인 인식되면 창이 자동으로 닫히고 세션이 저장됨

오늘 벨로그 main 계정으로 로그인해줘

세션은 프로젝트 폴더가 아니라 홈 디렉토리에 저장됩니다:

  • ~/.velog-mcp/accounts.json — 별칭 ↔ username 매핑 (파일 권한 600)

  • ~/.velog-mcp/profiles/<별칭>/ — 실제 로그인 쿠키가 담긴 Chromium 프로필

여러 벨로그 계정을 쓴다면 velog_login을 다른 account 별칭으로 여러 번 실행하면 됩니다. 도구 호출 시 account 파라미터로 별칭을 지정합니다.

⚠️ 보안 주의

  • ~/.velog-mcp/profiles/<별칭>/은 로그인 쿠키를 담고 있어 사실상 비밀번호와 동일합니다. 절대 git에 커밋하거나 다른 사람과 공유/백업하지 마세요.

  • ~/.velog-mcp/ 는 .gitignore에도 걸려있지만, 애초에 프로젝트 폴더 밖에 두는 것이 안전합니다.

  • 세션이 이상하면 벨로그에서 로그아웃 후 velog_login을 다시 실행해서 프로필을 새로 만드세요.

  • 세션 완전히 폐기하려면 해당 ~/.velog-mcp/profiles/<별칭>/ 폴더를 직접 삭제하면 됩니다.

Claude Code에 등록하기

Claude Code의 MCP 설정 파일(~/.claude/mcp_servers.json 또는 프로젝트별 설정)에 추가:

```json { "mcpServers": { "velog": { "command": "node", "args": ["/절대/경로/velog-mcp/dist/index.js"] } } } ```

등록 후 Claude Code에서 예:

오늘 작업한 내용 정리해서 velog 계정 main으로 "이번 주 SM 작업 정리"라는 제목으로 발행해줘

제공 도구

도구

설명

velog_login

브라우저로 로그인, 세션 저장/갱신

velog_list_accounts

등록된 계정 별칭 조회

velog_create_post

새 글 작성 (GraphQL → 실패 시 Playwright 폴백)

velog_edit_post

기존 글 수정 (GraphQL 전용)

velog_list_posts

최근 글 목록 조회

알려진 한계

  • 세션 쿠키를 읽어올 때마다 헤드리스 브라우저로 velog.io를 한 번 로드합니다(약 1~3초 오버헤드). 글 하나 쓸 때 크게 문제되는 수준은 아닙니다.

  • Playwright 폴백의 CSS 셀렉터(textarea[placeholder*="제목"] 등)는 velog 에디터 UI가 바뀌면 깨질 수 있습니다. 문제가 생기면 playwrightFallback.ts의 chromium.launchPersistentContext(..., { headless: false })로 바꿔서 직접 화면을 보며 셀렉터를 갱신하세요.

  • 로그인 세션(~/.velog-mcp/profiles/<별칭>/)이 완전히 만료되면 velog_login을 다시 실행해야 합니다. velog 쪽 세션 유효 기간에 따라 달라져 정확한 주기는 알 수 없습니다.

  • 이 방식은 velog의 이용약관 범위를 벗어나지 않는 "본인 계정으로 본인 글 발행 자동화"에 한정해서 쓰는 것을 전제로 합니다.

Available Tools

5 tools
velog_create_postB

벨로그에 새 글을 작성합니다. GraphQL로 먼저 시도하고, 인증 오류나 API 실패 시 Playwright 브라우저 자동화로 자동 폴백합니다.

[글쓰기 스타일 가이드 - 벨로그 인기글 공통 패턴]

  • 제목: 대조형/질문형 훅 ("~인 줄 알았는데", "~해야 할까?", "~에 반대한다")

  • 도입부: > 인용구로 문제/질문 던지며 시작하거나 "안녕하세요 ~하고 있는 ~입니다" 식 개인 소개

  • 본문 상단에 "한 줄 요약" 또는 "들어가며" 섹션으로 전체 요지 먼저 제시

  • 소제목으로 섹션 구분, 섹션 사이 --- 구분선

  • 짧은 문단 위주, 핵심 문장은 굵게 강조, 나열은 리스트로

  • 1인칭 서술체 ("나는 ~라고 생각한다", "~해봤다") - 설명문보다 경험담 톤

  • 마무리는 요약 반복 대신 회고/전망 한 줄로 끝맺기

  • 개념 설명/구조 설명 구간엔 텍스트 대신 아이콘형 인포그래픽이나 박스+화살표 다이어그램 이미지를 직접 만들어 넣는다 (mermaid 코드블럭 아님 - 실제 PNG). HTML/SVG를 짜서 브라우저로 스크린샷 찍고, velog 에디터의 이미지 업로드로 velcdn에 올린 뒤 그 URL을 로 삽입한다.

Inputs: body (required), title (required), account (required), tags, +1 more.

velog_edit_postC

기존 벨로그 글을 수정합니다 (GraphQL 전용, 폴백 없음).

[글쓰기 스타일 가이드 - 벨로그 인기글 공통 패턴]

  • 제목: 대조형/질문형 훅 ("~인 줄 알았는데", "~해야 할까?", "~에 반대한다")

  • 도입부: > 인용구로 문제/질문 던지며 시작하거나 "안녕하세요 ~하고 있는 ~입니다" 식 개인 소개

  • 본문 상단에 "한 줄 요약" 또는 "들어가며" 섹션으로 전체 요지 먼저 제시

  • 소제목으로 섹션 구분, 섹션 사이 --- 구분선

  • 짧은 문단 위주, 핵심 문장은 굵게 강조, 나열은 리스트로

  • 1인칭 서술체 ("나는 ~라고 생각한다", "~해봤다") - 설명문보다 경험담 톤

  • 마무리는 요약 반복 대신 회고/전망 한 줄로 끝맺기

  • 개념 설명/구조 설명 구간엔 텍스트 대신 아이콘형 인포그래픽이나 박스+화살표 다이어그램 이미지를 직접 만들어 넣는다 (mermaid 코드블럭 아님 - 실제 PNG). HTML/SVG를 짜서 브라우저로 스크린샷 찍고, velog 에디터의 이미지 업로드로 velcdn에 올린 뒤 그 URL을 로 삽입한다.

Inputs: id (required), account (required), body, tags, +1 more.

velog_list_accountsA

등록된 벨로그 계정 별칭 목록을 반환합니다.

Inputs: no named parameters.

velog_list_postsB

해당 계정이 쓴 최근 글 목록을 조회합니다.

Inputs: account (required), limit.

velog_loginA

브라우저 창을 띄워 velog 로그인을 진행합니다. 최초 1회 또는 세션 만료 시 실행하세요. 로그인 완료되면 세션이 프로필로 저장되어 이후 토큰을 수동으로 넣을 필요가 없습니다.

Inputs: account (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.4/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool targets a distinct action: listing accounts, logging in, creating posts, editing posts, and listing posts. There is no meaningful overlap or ambiguity between the tools.

    Naming Consistency4/5

    All tools share the velog_ prefix and follow lower_snake_case naming with clear verb-first patterns. 'velog_login' is a minor deviation since it is a single verb with no noun object, but it remains predictable and natural.

    Tool Count5/5

    Five tools is a well-scoped set for a Velog-focused MCP server. Each tool supports a necessary step in the account and post management workflow without unnecessary bloat.

    Completeness4/5

    The core publishing workflow is covered: login, create, edit, and list posts. Missing operations like deleting a post or fetching an individual post are minor gaps that agents can work around for typical publishing use cases.

    Maintenance

    ActivityStale
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers