# Velog (npm · @milcho0604/velog-mcp)

Claude 나 Codex 에서 벨로그(velog.io) 글을 읽고 쓰고 백업한다. 다이어그램과 시퀀스도 그린다. 공개 발행은 사람이 켤 때만 열린다.

- Trust score: 92/100 (high trust)
- Change this week: +14
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-21

## Components

- npm · `@milcho0604/velog-mcp`: 92/100 (this document), [markdown](https://verifymcp.io/servers/milcho0604-velog/milcho0604-velog-mcp.md), [page](https://verifymcp.io/servers/milcho0604-velog/milcho0604-velog-mcp)

## Channel facts

- Registry: `npm`
- Package: `@milcho0604/velog-mcp`
- Version: `0.9.5`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-21.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 31 of 95 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 100/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to milcho0604/velog-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 3 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 63/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 5171 tokens (~224/item across 23 items; 23 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 97/100
  - Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 91/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 72% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 24 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Velog MCP server?

Velog runs locally as an npm package, launched with npx -y @milcho0604/velog-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add milcho0604-velog -- npx -y @milcho0604/velog-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "milcho0604-velog": {
      "command": "npx",
      "args": [
        "-y",
        "@milcho0604/velog-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "milcho0604-velog": {
      "command": "npx",
      "args": [
        "-y",
        "@milcho0604/velog-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add milcho0604-velog -- npx -y @milcho0604/velog-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "milcho0604-velog": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@milcho0604/velog-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add milcho0604-velog --command npx --arg -y --arg @milcho0604/velog-mcp
```

### Hermes

```yaml
mcp_servers:
  milcho0604-velog:
    command: "npx"
    args: ["-y", "@milcho0604/velog-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "milcho0604-velog": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@milcho0604/velog-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add milcho0604-velog -t stdio -c npx -a -y @milcho0604/velog-mcp
```

### Other

```json
{
  "mcpServers": {
    "milcho0604-velog": {
      "command": "npx",
      "args": [
        "-y",
        "@milcho0604/velog-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-21 (score 92, +1)

No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-19 (score 91, +1)

No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-18 (score 90, +6)

- [security regression] Stability: 0.83 → unverified
- [security regression] Tool safety: pass → unverified
- [security improvement] Source repository: fail → pass
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified
- [functional] Package version: 0.9.3 → 0.9.5

### 2026-09-17 (score 84, +20)

- [security regression] Known CVEs: pass → unverified
- [security regression] Stability: 0.80 → unverified
- [security regression] Tool safety: pass → unverified
- [security regression] Source repository: pass → fail
- [security improvement] Malware scan: unverified → pass
- [security improvement] Provenance: fail → pass
- [security] The attested source repository moved: milcho0604/velog-mcp
- [functional regression] Dependency health: 0.85 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified
- [functional] Package version: 0.9.0 → 0.9.3
- [functional] Package version: 0.9.0 → 0.9.2
- [functional] Package version: 0.9.0 → 0.9.1

### 2026-09-16 (score 64, −14)

- [security regression] Malware scan: pass → unverified
- [functional] Schema quality: good → excellent
- [functional] Package version: 0.8.10 → 0.9.0

### 2026-09-14 (score 78, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-12 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-09-10 (score 76, +1)

No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (23)

### `velog_get_post` (~113 tokens)

벨로그 글 읽기

벨로그 글 하나를 본문까지 읽어온다. username + url_slug 조합이나 글 id 로 지정한다. 예: https://velog.io/@velopert/react-context-tutorial → username="velopert", url_slug="react-context-tutorial"

Input parameters:

- `id` (string): 글 UUID. 이걸 주면 username/url_slug 는 불필요
- `url_slug` (string): URL 마지막 조각
- `username` (string): @ 없이. 예: "velopert"

### `velog_list_posts` (~95 tokens)

벨로그 글 목록

특정 사용자의 글 목록을 최신순으로 가져온다. tag 로 좁힐 수 있다. cursor 에 직전 응답의 마지막 글 id 를 주면 다음 페이지를 읽는다.

Input parameters:

- `cursor` (string): 이전 페이지 마지막 글의 id
- `limit` (integer)
- `tag` (string): 이 태그가 달린 글만
- `username` (string, required): @ 없이

### `velog_search_posts` (~97 tokens)

벨로그 글 검색

키워드로 벨로그 전체를 검색한다. username 을 주면 그 사람 글 안에서만 찾는다 — "내가 예전에 쓴 그 글" 을 찾을 때 이 조합을 쓴다.

Input parameters:

- `keyword` (string, required): 검색어
- `limit` (integer)
- `offset` (integer): 페이지네이션
- `username` (string): 이 사용자의 글로 한정

### `velog_trending_posts` (~350 tokens)

벨로그 트렌딩

벨로그 전체에서 지금 많이 읽히는 글. 기간(day/week/month/year)을 골라 본다. 내 글이 아니라 벨로그 전체 순위다. 무엇이 반응을 얻는지, 어떤 주제가 도는지 볼 때 쓴다. 특정 사용자의 글은 velog_list_posts, 검색은 velog_search_posts 를 쓴다. year 기간은 벨로그가 limit>20 이면 빈 결과를 주므로 20 으로 낮추고, offset 도 1000 까지만 받는다. 조정하면 응답 notes 에 적어 준다. 인증 불필요.

Input parameters:

- `limit` (integer): 가져올 글 수 (1~50, 기본 20). year 기간은 20 을 넘기면 벨로그가 빈 결과를 주어 20 으로 낮춘다
- `offset` (integer): 건너뛸 글 수. 다음 페이지는 **실제로 적용된 limit** 만큼 더한다 — day·week·month 는 준 값 그대로, year 는 `min(limit, 20)` 이다. year 에서 20 을 넘겨 주면 20 으로 낮춰지므로 그때는 20씩 더해야 사이가 안 빈다. year 의 offset 상한은 1000 이고, 넘기면 1000 으로 낮춰져 같은 페이…
- `timeframe` (string): 집계 기간. day=오늘, week=이번 주(기본), month=이번 달, year=올해

### `velog_recent_posts` (~50 tokens)

벨로그 최신 글

벨로그 전체 최신 글. 지금 무슨 글이 올라오는지 훑을 때.

Input parameters:

- `cursor` (string): 이전 페이지 마지막 글의 id
- `limit` (integer)

### `velog_create_draft` (~431 tokens)

벨로그 초안 작성

벨로그에 임시저장 글(초안)을 만든다. 발행되지 않으며 작성자 본인만 볼 수 있다. 이 도구는 어떤 설정에서도 발행하지 않는다 — 발행하려면 velog_publish_draft 를 따로 부를 것. body 는 마크다운으로 쓴다.

Input parameters:

- `body` (string, required): 본문 (마크다운). 문체: 사람이 쓴 글처럼 자연스럽게. 긴 줄표(—)와 가운뎃점(·)을 쓰지 말고 쉼표나 마침표로 끊을 것. "**하나.** ... **둘.**" 식 볼드 번호 나열 금지(산문이나 평범한 불릿으로). 문단은 2~3문장으로 짧게, 200자가 넘으면 쪼갠다. "이 글의 한계" 같은 부록 절을 만들지 말고 해당 문단 자리에 한 문장으로 녹일…
- `series_id` (string): 소속시킬 시리즈 id. 벨로그가 임시저장 생성 단계에서 이걸 버리므로 이 도구가 저장 직후 한 번 더 붙이고, 붙었는지 확인해 결과에 적는다. 생략하면 결과에 내 시리즈 목록을 함께 돌려준다
- `series_name` (string): 시리즈 **이름**(id 대신). 저장 전에 내 시리즈에서 찾는다. 못 찾으면 저장하지 않고 목록을 알려준다
- `tags` (array): 태그 목록
- `thumbnail`: 썸네일 이미지 URL (http/https). 생략하면 본문 첫 이미지로 자동 설정한다. 자동 설정을 원하지 않으면 null 을 준다
- `title` (string, required): 글 제목. 긴 줄표(—) 금지. 부제는 콜론이나 괄호, 짧은 하이픈으로.
- `url_slug` (string): 생략하면 제목에서 생성

### `velog_update_draft` (~446 tokens)

벨로그 초안 수정

기존 초안을 **통째로 교체**한다. 부분 수정이 아니다. 생략한 필드는 유지되지 않고 초기화된다 — tags 를 안 주면 기존 태그가 전부 지워지고, url_slug 를 안 주면 제목에서 새로 만들어 주소가 바뀌며, series_id 를 안 주면 기존 시리즈 연결이 끊긴다. 그래서 수정 전에 velog_get_post 로 현재 값을 읽어 바꾸지 않을 필드도 그대로 다시 넘기는 것을 권한다. 발행된 글의 id 는 거부한다(비공개로 내려가는 사고 방지).

Input parameters:

- `body` (string, required): 본문 전체 (마크다운). 부분 수정이 아니라 교체다. 문체: 사람이 쓴 글처럼 자연스럽게. 긴 줄표(—)와 가운뎃점(·)을 쓰지 말고 쉼표나 마침표로 끊을 것. "**하나.** ... **둘.**" 식 볼드 번호 나열 금지(산문이나 평범한 불릿으로). 문단은 2~3문장으로 짧게, 200자가 넘으면 쪼갠다. "이 글의 한계" 같은 부록 절을 만들지 말고 해…
- `id` (string, required): 초안의 id (velog_list_drafts 로 확인)
- `series_id` (string)
- `series_name` (string): 시리즈 **이름**(id 대신). 저장 전에 내 시리즈에서 찾는다. 못 찾으면 저장하지 않고 목록을 알려준다
- `tags` (array)
- `thumbnail`: 썸네일 이미지 URL (http/https). 생략하면 본문 첫 이미지로 자동 설정한다. 자동 설정을 원하지 않으면 null 을 준다
- `title` (string, required): 글 제목. 긴 줄표(—) 금지. 부제는 콜론이나 괄호, 짧은 하이픈으로.
- `url_slug` (string)

### `velog_list_drafts` (~71 tokens)

내 초안 목록

내 임시저장 글 목록. 초안을 이어 쓰거나 수정하기 전에 id 를 여기서 확인한다.

Input parameters:

- `limit` (integer)
- `username` (string): 생략하면 토큰의 계정을 쓴다. 남의 초안은 어차피 안 보인다

### `velog_blog_stats` (~141 tokens)

블로그 통계

한 사용자의 글 전체를 긁어 조회수·좋아요·댓글을 집계한다. 연도별·태그별 분포와 상위 글 순위를 함께 낸다. 벨로그에 없는 화면이라 직접 계산한다. 글이 많으면 여러 번 요청하므로 몇 초 걸릴 수 있다.

Input parameters:

- `max_pages` (integer): 최대 페이지 수 (1페이지=50편). 과도한 요청 방지용 상한
- `top` (integer): 상위 몇 편까지 보여줄지
- `username` (string): @ 없이. 생략하면 인증된 내 계정을 쓴다

### `velog_export_posts` (~281 tokens)

글 마크다운 백업

한 사용자의 벨로그 글을 프론트매터가 붙은 마크다운 파일로 로컬에 저장한다. 벨로그에 공식 내보내기가 없어서 만든 기능이다. 파일 이름은 `슬러그--글id.md` 다 — 글마다 한 곳으로 정해지므로 같은 글을 다시 받으면 그 파일만 덮어쓴다. 글 본문을 한 편씩 받아오므로 글이 많으면 시간이 걸린다.

Input parameters:

- `limit` (integer): 내보낼 최대 글 수
- `out_dir` (string, required): 저장할 디렉터리 (절대경로 권장). 없으면 만든다
- `skip_existing` (boolean): out_dir 에 **이미 내보낸 글**은 건너뛴다. 파일 이름에 글 id 가 들어 있어 그 이름의 파일이 읽을 수 있는 일반 파일이고 비어 있지 않으면 «받았다» 로 본다 (내용은 읽지 않는다). 예산·취소로 멈췄을 때 같은 인자에 이것만 켜서 다시 부르면 남은 글부터 이어간다. 이름 규칙이 다른 옛 백업은 다시 받는다
- `username` (string): @ 없이. 생략하면 인증된 내 계정을 쓴다

### `velog_whoami` (~57 tokens)

내 계정 확인

현재 토큰으로 인증된 계정을 확인한다. 토큰이 살아있는지 점검하는 용도로도 쓴다. 다른 도구에서 username 을 생략하면 여기서 얻는 계정을 쓴다.

### `velog_get_user` (~35 tokens)

벨로그 사용자 정보

벨로그 사용자의 프로필과 팔로워 수를 조회한다.

Input parameters:

- `username` (string, required): @ 없이

### `velog_list_series` (~68 tokens)

시리즈 목록

사용자의 연재 시리즈 목록. 각 시리즈에 글이 몇 편인지 함께 준다. 초안을 특정 시리즈에 넣으려면 여기서 얻은 id 를 velog_create_draft 의 series_id 에 준다.

Input parameters:

- `username` (string, required): @ 없이

### `velog_user_tags` (~61 tokens)

사용자 태그 목록

사용자가 쓴 태그와 각 태그의 글 수. "이 사람이 뭘 주로 쓰나"를 가장 싸게 파악하는 방법이다.

Input parameters:

- `top` (integer)
- `username` (string, required): @ 없이

### `velog_publish_post` (~378 tokens)

벨로그 글 발행

새 글을 바로 발행한다. 초안을 거치지 않는다. 현재 설정에서는 **비공개로만** 발행된다 (공개 발행은 VELOG_ALLOW_PUBLIC=1 이 필요하다). 되돌리려면 velog_unpublish_post 로 초안으로 내릴 수 있다.

Input parameters:

- `body` (string, required): 본문 (마크다운). 문체: 사람이 쓴 글처럼 자연스럽게. 긴 줄표(—)와 가운뎃점(·)을 쓰지 말고 쉼표나 마침표로 끊을 것. "**하나.** ... **둘.**" 식 볼드 번호 나열 금지(산문이나 평범한 불릿으로). 문단은 2~3문장으로 짧게, 200자가 넘으면 쪼갠다. "이 글의 한계" 같은 부록 절을 만들지 말고 해당 문단 자리에 한 문장으로 녹일…
- `series_id` (string)
- `series_name` (string): 시리즈 **이름**(id 대신). 저장 전에 내 시리즈에서 찾아 같은 요청에 실어 보낸다 — 한 번의 호출로 시리즈까지 붙는다. 못 찾으면 저장하지 않고 목록을 알려준다
- `tags` (array)
- `thumbnail`: 썸네일 이미지 URL (http/https). 생략하면 본문 첫 이미지로 자동 설정한다. 자동 설정을 원하지 않으면 null 을 준다
- `title` (string, required): 글 제목. 긴 줄표(—) 금지. 부제는 콜론이나 괄호, 짧은 하이픈으로.
- `url_slug` (string): 생략하면 제목에서 생성

### `velog_publish_draft` (~87 tokens)

초안 발행

기존 임시저장 글을 발행한다. 본문은 저장된 내용을 그대로 쓴다 — 다시 넘길 필요가 없다. 현재 설정에서는 **비공개로만** 발행된다 (공개 발행은 VELOG_ALLOW_PUBLIC=1 이 필요하다).

Input parameters:

- `id` (string, required): 초안 id (velog_list_drafts 로 확인)

### `velog_unpublish_post` (~80 tokens)

발행 취소 (초안으로 되돌리기)

발행된 글을 임시저장으로 되돌린다. 글은 사라지지 않고 초안 목록으로 간다. ★ 이미 나간 RSS·구독 메일은 회수되지 않는다 — 검색엔진 캐시도 한동안 남는다.

Input parameters:

- `id` (string, required): 발행된 글의 id

### `velog_update_post` (~443 tokens)

발행글 수정

이미 발행된 글을 수정한다. 발행 상태(is_temp:false)는 유지된다. 생략한 필드는 **기존 값을 그대로 유지**한다 — 초안 도구와 달리 전체 교체가 아니다. 초안 id 는 거부한다(초안 수정은 velog_update_draft). 현재 설정에서는 공개 범위를 바꿀 수단이 없다 — 공개 글은 공개로, 비공개 글은 비공개로 그대로 남는다. 범위를 바꾸려면 VELOG_ALLOW_PUBLIC=1 이 필요하다.

Input parameters:

- `body` (string): 생략하면 기존 본문 유지. 문체: 사람이 쓴 글처럼 자연스럽게. 긴 줄표(—)와 가운뎃점(·)을 쓰지 말고 쉼표나 마침표로 끊을 것. "**하나.** ... **둘.**" 식 볼드 번호 나열 금지(산문이나 평범한 불릿으로). 문단은 2~3문장으로 짧게, 200자가 넘으면 쪼갠다. "이 글의 한계" 같은 부록 절을 만들지 말고 해당 문단 자리에 한 문장으로…
- `id` (string, required)
- `series_id` (string)
- `series_name` (string): 시리즈 **이름**(id 대신). 저장 전에 내 시리즈에서 찾아 같은 요청에 실어 보낸다 — 한 번의 호출로 시리즈까지 붙는다. 못 찾으면 저장하지 않고 목록을 알려준다
- `tags` (array): 생략하면 기존 태그 유지
- `thumbnail`: 썸네일 이미지 URL (http/https). 생략하면 본문 첫 이미지로 자동 설정한다. 자동 설정을 원하지 않으면 null 을 준다
- `title` (string): 글 제목. 긴 줄표(—) 금지. 부제는 콜론이나 괄호, 짧은 하이픈으로.
- `url_slug` (string): 생략하면 기존 주소 유지

### `velog_render_diagram` (~560 tokens)

다이어그램 그리기

구성도·흐름도를 그려 PNG 로 만들고 벨로그에 올린다. 본문에 붙일 마크다운을 돌려준다.
좌표만 주면 나머지는 렌더러가 맞춘다 — 노드 폭·캔버스 크기·선 꺾임·라벨 위치는 브라우저 실측으로 정해지고, 글자 삐져나옴/선 관통/선끼리 교차와 겹침/살짝 어긋난 줄은 자가감사가 잡는다.
감사에 걸리면 **올리지 않고** 무엇이 문제인지 알려준다. 이 판단은 끌 수 없고, 감사에 걸린 산출물은 velog_upload_image 로도 받지 않는다. 고쳐서 다시 그릴 것.
\**밋밋하게 나오면 입력이 밋밋한 것이다.** 사람 손 그림처럼 보이게 하는 셋: 노드마다 icon 과 tag(포트·버전·역할), 관련 노드는 groups 로 묶기, 흐름 종류가 둘 이상이면 planes 로 색 가르기. 나란한 노드는 y 를 맞추면 선이 곧게 나간다.
\**배치를 먼저 설계한다.** 카드는 격자(행 간격 200 안팎)에 두고, 옆으로 나란하면 y 를 같게, 어긋낼 거면 카드 높이 이상 어긋낸다. 한 면에는 나가는 선만 또는 들어오는 선만 둔다. 감사를 피하려고 points·label_at 을 쓰지 않는다(끝이 허공에 뜨거나 라벨이 선에서 떨어지면 감사가 잡는다). 걸리면 카드 자리를 고친다.
아이콘: alert arrow bell bolt branch browser cache chart check clock cloud code cross database file gear key layers lock mail mobile network package retry search server terminal user
톤: slate gray blue green amber yellow purple teal rose indigo

Input parameters:

- `alt` (string): 이미지 대체 텍스트
- `edges` (array)
- `groups` (array)
- `legend` (boolean)
- `nodes` (array, required)
- `planes` (array): 흐름 종류. 생략하면 요청/외부 호출/데이터/관측 4종
- `post_id` (string): 붙일 글 id. 주면 벨로그가 내 글인지 확인한 뒤 받는다
- `subtitle` (string): 한 줄 설명·근거
- `title` (string, required): 그림 제목 (좌상단)
- `upload` (boolean)

### `velog_render_sequence` (~691 tokens)

시퀀스 다이어그램 그리기

참가자와 순서 있는 메시지로 시퀀스 다이어그램을 그려 PNG 로 만들고 벨로그에 올린다.
\**좌표를 받지 않는다** — 열 간격, 행 높이, 활성 막대, 묶음 상자를 전부 렌더러가 실측으로 정한다. 라벨이 안 들어가면 글자를 줄이는 게 아니라 그 구간을 넓히고, 길면 접고, 접힌 만큼 행을 높인다.
메시지는 배열 순서가 곧 시간 순서다. 중간에 하나를 끼워 넣어도 아래가 알아서 밀린다.
구성도나 흐름도(시간 축이 없는 그림)는 velog_render_diagram 을 쓸 것.
\**깔끔하게 나오는 건 레이아웃이 아니라 입력이 정한다.** 세로 길이를 지배하는 셋:
\- `call` 에는 짝이 되는 `return` 을 붙인다. 안 닫힌 활성 막대는 계단처럼 겹쳐 쌓인다.
\- `note` 는 한 줄로 쓴다. 접힌 줄 수만큼 그 행이 통째로 높아진다.
\- 구분 기호(& ? = / , ; |)가 있는 긴 라벨은 렌더러가 그 뒤에서 끊는다. 그런 기호가 없는 긴 한글 토큰만 직접 끊어주면 된다.
⚠️ **자가감사 통과는 「보기 좋다」가 아니다.** 감사는 기하만 본다 — 삐져나옴, 겹침, 관통, 상자 범위. 쌓인 막대도 어색한 줄바꿈도 통과시킨다.
감사에 걸리면 **올리지 않고** 무엇이 문제인지 알려준다. 이 판단은 끌 수 없고, 감사에 걸린 산출물은 velog_upload_image 로도 받지 않는다.
종류: call async return note
아이콘: alert arrow bell bolt branch browser cache chart check clock cloud code cross database file gear key layers lock mail mobile network package retry search server terminal user
톤: slate gray blue green amber yellow purple teal rose indigo

Input parameters:

- `activations` (boolean): call/return 짝에서 활성 막대를 뽑아 그린다
- `alt` (string): 이미지 대체 텍스트
- `fragments` (array): alt·opt·loop 묶음 상자. 서로 완전히 포개거나 완전히 떨어져야 한다
- `legend` (boolean)
- `messages` (array, required): 배열 순서가 시간 순서다. call 마다 짝이 되는 return 을 넣어야 활성 막대가 닫힌다
- `numbers` (boolean): 메시지 앞에 1. 2. 3. 을 붙인다
- `participants` (array, required): 왼쪽부터 순서대로 세로 열이 된다
- `post_id` (string): 붙일 글 id. 주면 벨로그가 내 글인지 확인한 뒤 받는다
- `subtitle` (string): 한 줄 설명·근거
- `title` (string, required): 그림 제목 (좌상단)
- `upload` (boolean)

### `velog_render_cover` (~168 tokens)

글 표지 만들기

글 목록·SNS 미리보기에 쓸 표지 이미지(1200×630)를 만든다.
제목이 길면 줄바꿈하고, 그래도 안 들어가면 글자 크기를 줄인다 — 전부 실측 기준이다.
만든 뒤 velog_update_post 의 thumbnail 에 돌려받은 주소를 넣으면 표지가 된다.

Input parameters:

- `footer` (string): 우상단 서명 (예: '@milcho0604')
- `kicker` (string): 상단 작은 라벨 (예: '디버깅 기록')
- `post_id` (string)
- `subtitle` (string)
- `tags` (array)
- `title` (string, required)
- `tone` (string)
- `upload` (boolean)

### `velog_upload_image` (~169 tokens)

이미지 올리기

로컬 이미지 파일을 벨로그에 올리고 본문용 마크다운을 돌려준다.
PNG·JPEG·GIF·WebP 만 받으며, 확장자가 아니라 **파일 내용**으로 판정한다.
⚠️ 올라간 주소는 공개다 — 주소를 아는 사람은 누구나 볼 수 있고, 벨로그에는 이미지 삭제 API 가 없다. 올리기 전에 무슨 파일인지 확인하라.

Input parameters:

- `alt` (string)
- `path` (string, required): 로컬 파일 경로
- `post_id` (string): 붙일 글 id (서버가 소유권을 확인한다)
- `type` (string): profile 은 프로필 사진용 분류일 뿐 — 사진 교체는 velog_update_profile_image

### `velog_diagnose` (~89 tokens)

벨로그 스키마 점검

지금 벨로그 GraphQL 스키마가 이 서버가 만들어질 때의 기준선과 같은지 대조한다. 도구가 이유 없이 실패하거나 응답 모양이 이상할 때 원인을 가르는 1차 진단이다. 벨로그는 비공식 API 라 예고 없이 바뀐다. 읽기 전용이고 인증이 필요 없다.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/milcho0604-velog/milcho0604-velog-mcp#diagnostics

## Score history

- 2026-09-21: 92
- 2026-09-20: 91
- 2026-09-19: 91
- 2026-09-18: 90
- 2026-09-17: 84
- 2026-09-16: 64
- 2026-09-15: 78
- 2026-09-14: 78
- 2026-09-13: 77
- 2026-09-12: 77
- 2026-09-11: 76
- 2026-09-10: 76
- 2026-09-09: 75
- 2026-09-08: 75
- 2026-09-07: 59
- 2026-09-06: 74
- 2026-09-05: 73
- 2026-09-04: 73
- 2026-09-03: 73
- 2026-09-02: 72
- 2026-09-01: 72
- 2026-08-31: 56
- 2026-08-30: 71
- 2026-08-29: 71
- 2026-08-28: 70
- 2026-08-27: 44
- 2026-08-26: 70
- 2026-08-25: 67
- 2026-08-24: 56
- 2026-08-23: 67

## Common questions

### What is the Velog MCP server?

Velog is an MCP server listed in the public MCP registry as io.github.milcho0604/velog. Claude 나 Codex 에서 벨로그(velog.io) 글을 읽고 쓰고 백업한다. 다이어그램과 시퀀스도 그린다. 공개 발행은 사람이 켤 때만 열린다. This page covers its npm package (@milcho0604/velog-mcp).

### Is the Velog MCP server safe to use?

Velog scores 92 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Velog MCP server expose?

Velog exposes 23 tools: velog_get_post, velog_list_posts, velog_search_posts, velog_trending_posts, velog_recent_posts, and 18 more. Their descriptions and schemas cost roughly 4,961 tokens of context every time the server is loaded.

### Is the Velog MCP server still maintained?

Velog is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the Velog MCP server under?

Velog declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/@milcho0604/velog-mcp
- Socket report: https://socket.dev/npm/package/@milcho0604/velog-mcp
- Repository: https://github.com/milcho0604/velog-mcp
- Changelog RSS feed: https://verifymcp.io/servers/milcho0604-velog/milcho0604-velog-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/milcho0604-velog/milcho0604-velog-mcp.json
- HTML version of this page: https://verifymcp.io/servers/milcho0604-velog/milcho0604-velog-mcp
