Skip to main content
Glama
mrpumpkin98
by mrpumpkin98

velog-mcp

에이전트에게 "이 문서 벨로그에 올려줘" 라고 말하면 되는 MCP 서버

로컬 마크다운 파일을 벨로그에 발행합니다. 발행하면 파일에 글 id가 적히고, 같은 파일을 다시 올리면 새 글이 생기는 대신 그 글이 수정됩니다. Cursor·Claude Desktop 등 MCP 클라이언트에 그대로 붙습니다.

⚠️ 벨로그와 무관한 개인 프로젝트입니다. 공식 API가 아니라 웹 클라이언트가 쓰는 GraphQL을 그대로 호출하므로, 벨로그가 스키마를 바꾸면 깨질 수 있습니다.

An MCP server for publishing local Markdown files to velog with idempotent updates. Docs are in Korean since velog is a Korean platform.


시작하기

내려받거나 가상환경을 만들 일이 없습니다. 설정에 세 줄 넣고 로그인 한 번이면 끝입니다.

1. uv 설치 (한 번만)

패키지를 받아 실행해주는 도구입니다. Node의 npx에 해당하고, 다른 파이썬 MCP에도 그대로 씁니다.

curl -LsSf https://astral.sh/uv/install.sh | sh   # 또는: brew install uv

2. 클라이언트에 등록

{
  "mcpServers": {
    "velog": {
      "command": "uvx",
      "args": ["--from", "velog-mcp[login]", "velog-mcp"]
    }
  }
}

클라이언트

설정 파일

Cursor

~/.cursor/mcp.json

Claude Desktop (macOS)

~/Library/Application Support/Claude/claude_desktop_config.json

경로도, 토큰도, 계정명도 적지 않습니다. 어느 컴퓨터에서든 이 세 줄이 같습니다.

[login]은 브라우저 로그인에 필요합니다. 토큰을 직접 넣어 쓸 거라면 빼도 됩니다 — 토큰을 직접 넣기

3. 재시작하고 로그인

클라이언트를 완전히 종료한 뒤 다시 켭니다. MCP 서버는 시작할 때만 읽습니다. 그다음 대화에서

벨로그 로그인해줘

브라우저 창이 열리면 평소처럼 로그인하세요. 창이 저절로 닫히고 토큰이 저장됩니다. 벨로그는 비밀번호 로그인이 없어서(이메일 링크·소셜 OAuth뿐) 이 한 번만 사람이 해야 하고, 이후 만료는 서버가 알아서 갱신합니다.

확인은 이렇게 합니다. 계정명을 말할 필요가 없습니다.

내 벨로그 글 목록 보여줘

Cursor 설정 화면의 MCP 목록에서 Connect 버튼을 눌러 로그인하고 싶다면 HTTP 모드로 띄웁니다. Cursor는 OAuth를 지원하는 서버에만 그 버튼을 그리고, OAuth는 stdio가 아니라 HTTP 트랜스포트에서만 동작합니다.

uvx --from "velog-mcp[login]" velog-mcp --http      # 127.0.0.1:8790

설정에는 command 대신 url을 적습니다.

{
  "mcpServers": {
    "velog": { "url": "http://127.0.0.1:8790/mcp" }
  }
}

이제 Connect를 누르면 브라우저가 열려 벨로그 로그인이 진행되고, 끝나면 버튼이 Logout으로 바뀝니다. 한 번 로그인해두면 서버를 재시작해도 연결이 유지되고, 두 번째부터는 창이 뜨지 않고 즉시 연결됩니다.

대신 이걸 감수해야 합니다. stdio 모드는 Cursor가 서버를 알아서 띄워주지만, HTTP 모드는 프로세스를 직접 켜둬야 합니다. 꺼져 있으면 도구가 보이지 않습니다.

macOS라면 이 부담을 없앨 수 있습니다. 다만 자동 시작 스크립트는 저장소에 있어서, 아래 직접 내려받아 쓰기로 설치한 경우에만 쓸 수 있습니다.

./.venv/bin/python scripts/install_launch_agent.py

로그인할 때 자동으로 뜨고, 어떤 이유로 죽어도 launchd가 다시 띄웁니다. 상태는 --status, 해제는 --uninstall로 봅니다. 로그는 ~/.velog-mcp/http.log에 쌓입니다.

여기서 발급되는 OAuth 토큰은 벨로그 토큰이 아니라 이 서버에 접근할 권한을 뜻하는 자체 토큰입니다. 벨로그 쿠키는 예전과 같이 ~/.velog-mcp/에만 남습니다. 서버는 루프백(127.0.0.1)에만 바인딩되니 외부에 노출하지 마세요. 남의 계정 쿠키를 대신 들고 있는 서버가 됩니다.

4. 글 올리기

문서 맨 위에 프런트매터를 답니다. draft: true가 안전장치입니다.

---
title: 트랜잭션 경계를 다시 그은 이유
tags: [postgresql, transaction]
slug: transaction-boundary
draft: true
---

## 문제
...

그리고 절대 경로로 파일을 지정해 말합니다.

이 문서 벨로그에 임시저장으로 올려줘: /Users/me/docs/transaction-boundary.md

발행이 끝나면 도구가 원본 파일에 두 줄을 적어 넣습니다.

velog_post_id: 00000000-0000-0000-0000-000000000000
velog_url: https://velog.io/@your-id/transaction-boundary

벨로그 웹에서 렌더링을 확인하고, 고칠 게 있으면 파일을 수정한 뒤 같은 말을 다시 하면 그 글이 수정됩니다. 중복 글이 쌓이지 않습니다. 만족스러우면

이 글 공개로 바꿔줘


Related MCP server: velog_mcp

도구

도구

하는 일

velog_publish_markdown_file

로컬 .md 발행/수정 (주로 쓰는 것)

velog_login

로그인 창을 열어 토큰 저장

velog_whoami

지금 어떤 계정으로 붙는지 확인

velog_list_posts

글 목록 (drafts_only로 임시저장만)

velog_get_post

글 하나를 본문까지 조회

velog_list_series

시리즈 목록·UUID

velog_publish_post

제목·본문을 직접 넘겨 발행

velog_update_post

post_id로 수정

velog_create_series

시리즈 생성

velog_delete_post

삭제 (confirm 필수)

명령어 문법은 없습니다. 하고 싶은 일을 말하면 에이전트가 알맞은 도구를 고릅니다.


알아둘 것

  • 파일 경로는 절대 경로로. 클라이언트가 서버를 어디서 띄웠는지 알 수 없어 상대 경로는 거부합니다.

  • 부분 수정은 안 됩니다. 본문을 넘길 때는 전체를 보내야 합니다. 파일로 올리면 해당 없습니다.

  • 이미지는 업로드하지 않습니다. 본문 이미지는 이미 접근 가능한 URL이어야 합니다.

  • 삭제는 되돌릴 수 없습니다. confirm 없이는 실행되지 않게 막아뒀습니다.

  • 첫 발행은 임시저장으로. 코드블록·표가 의도대로 나오는지 보고 공개하세요.

  • 자기 계정, 자기 글에만 쓰세요. 대량 발행이나 자동 생성 글 양산에 쓰지 마세요. 벨로그는 개인이 운영비를 대는 서비스입니다. 호출도 사람이 글을 쓰는 속도를 넘지 않게 해주세요.

문제가 생기면 문제 해결을 보세요.


직접 내려받아 쓰기

코드를 고치거나 기여할 때, 또는 uvx 없이 쓰고 싶을 때입니다.

git clone https://github.com/mrpumpkin98/velog-mcp.git
cd velog-mcp

python3 -m venv .venv
./.venv/bin/python -m pip install -e ".[login]"
./.venv/bin/python -m playwright install chromium   # 로그인 창용, 1회

./.venv/bin/python scripts/doctor.py                # 점검 + 등록용 JSON 출력

doctor.py가 무엇이 빠졌는지와 다음에 할 일을 알려주고, 본인 경로로 채운 설정 JSON까지 출력합니다. 막히면 이걸 먼저 실행하세요.

이 방식으로 등록할 때는 command가상환경 파이썬의 절대 경로를 적습니다. 시스템 파이썬(/usr/bin/python3)을 적으면 패키지가 없어 서버가 뜨지 않습니다.

{
  "mcpServers": {
    "velog": {
      "command": "/absolute/path/to/velog-mcp/.venv/bin/python",
      "args": ["-m", "velog_mcp"]
    }
  }
}

검증 스크립트 목록은 레퍼런스에 있습니다.


더 보기

  • 레퍼런스 — 프런트매터·환경변수 전체 목록, 검증 스크립트, 문제 해결

  • 동작 방식 — 인증을 이렇게 만든 이유, 토큰 자동 갱신, 스키마를 알아낸 방법, 코드 구조

라이선스와 고지

이 프로젝트는 MIT 라이선스입니다 — LICENSE.

벨로그와 아무 관계가 없습니다. 벨로그 운영사의 제휴·후원·승인·지원을 받지 않은 개인 프로젝트이며, 문제가 생겨도 벨로그에 문의하지 마세요. velog·벨로그는 각 권리자의 상표이고, 이 프로젝트는 어떤 도구인지 가리키기 위해 이름을 쓸 뿐입니다. 권리자가 요청하면 이름을 바꾸겠습니다.

벨로그 본체도 MIT 오픈소스입니다(velog-io/velog). 이 서버가 호출하는 쓰기 스키마도 그 저장소에 공개돼 있습니다 — 스키마를 어떻게 알아냈나

Available Tools

10 tools
velog_create_series벨로그 시리즈 생성A

새 시리즈를 만들고 UUID를 돌려줍니다. 발행 시 series_id 로 사용하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes시리즈 이름
url_slugYes시리즈 URL 슬러그

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate this is a mutation (readOnlyHint=false). The description confirms creation and return value but adds no additional behavioral details such as idempotency, error conditions, or permission requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the action and output, with no extraneous text. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description covers the core purpose and usage context adequately for a simple creation tool. It could mention uniqueness constraints or failure cases but is still fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema coverage is 100% with descriptions for both parameters. The tool description adds no extra meaning beyond what the schema already provides, meeting the baseline but not exceeding it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates a new series and returns a UUID, specifying the action and result. It differentiates from sibling tools like 'velog_list_series' which lists series, and explicitly ties the output to publishing use.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes guidance to use the returned UUID as 'series_id' when publishing, indicating a typical workflow context. However, it does not explicitly contrast with alternatives or specify when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

velog_delete_post벨로그 글 삭제A
Destructive

글을 삭제합니다. 복구할 수 없으므로 confirm=True 를 명시해야 실행됩니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmNo삭제를 확인. True 여야 실행된다
post_idYes삭제할 글 UUID

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds valuable context that the action is irreversible and requires explicit confirmation, which goes beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: one sentence for the action and one for the warning. No redundant words, every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple destructive tool with output schema present, the description covers the core action, irreversibility, and required confirmation. It lacks mention of error cases or side effects, but these are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters. The description adds emphasis on the confirm=True requirement, but does not provide new semantics beyond what the schema offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states '글을 삭제합니다' (deletes a post), clearly identifying the verb and resource. Among sibling tools which include create, update, list, get, etc., this uniquely identifies the delete action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states when to use (to delete) and a critical prerequisite ('confirm=True') due to irreversibility. It does not explicitly list when not to use or alternatives, but the context is clear enough for most agents.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

velog_get_post벨로그 글 조회A
Read-only

url_slug 로 글 하나를 가져옵니다. 마크다운 본문(body)까지 포함합니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
url_slugYes글 URL 의 마지막 조각
usernameNo벨로그 계정명(@ 제외)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the description only adds that the markdown body is included. This provides some extra context but does not disclose other behaviors like response size or pagination. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very short and to the point, with no wasted words. It could benefit from slightly more structure (e.g., mentioning return type), but it is not overly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema available, the description does not need to explain return values. However, it does not mention the optional username parameter's default behavior or the exact format of url_slug, but these are covered in the schema. Mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; both parameters have descriptions. The tool description does not add new semantic meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (fetches) and resource (post by url_slug), and mentions it includes markdown body, distinguishing it from sibling tools like velog_list_posts which lists posts without body.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives. It implies usage when a single post by url_slug is needed, but does not contrast with velog_list_posts or mention exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

velog_list_posts벨로그 글 목록A
Read-only

벨로그 글 목록을 최신순으로 가져옵니다. username 을 생략하면 VELOG_USERNAME 을 씁니다. drafts_only=True 로 내 임시저장 글만 볼 수 있습니다(인증 필요).

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNo특정 태그로 필터
limitNo가져올 개수
cursorNo이어서 가져올 기준이 되는 글 UUID
usernameNo벨로그 계정명(@ 제외)
drafts_onlyNo임시저장 글만 조회

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint and openWorldHint annotations, the description adds that results are in newest-first order, username defaulting behavior, and authentication requirement for drafts_only. This is valuable behavioral context that the annotations alone do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The first sentence states the primary action and ordering; the second adds key usage details. Information is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with 5 parameters, an output schema, and good annotations, the description covers essential points: purpose, ordering, default username, drafts authentication. No critical gaps identified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all 5 parameters with descriptions (100% coverage). The description adds extra meaning: username default uses an environment variable, and drafts_only requires authentication. These details enhance understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it fetches a list of Velog posts in newest order. It distinguishes itself from sibling tools (e.g., velog_get_post for single post, velog_list_series for series) by focusing on '글 목록' and using the verb '가져옵니다'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides specific usage context: username defaults to VELOG_USERNAME if omitted, and drafts_only requires authentication. It does not explicitly mention when not to use or compare with alternatives, but the distinct purpose makes it clear when to select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

velog_list_series벨로그 시리즈 목록A
Read-only

시리즈 목록과 각 시리즈의 UUID를 가져옵니다. 발행 시 series_id 에 넣을 값입니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
usernameNo벨로그 계정명(@ 제외)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true and openWorldHint=true, so the tool is safe and non-destructive. The description adds value by clarifying the output (UUIDs) and their practical use (series_id in publishing). It does not contradict annotations and provides meaningful behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two short, direct sentences. Every sentence adds value: the first states what the tool does, the second explains its use case. There is no redundancy or unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema (not shown) which presumably describes the return structure, so the description does not need to detail output format. However, it could be more complete by clarifying behavior when username is omitted (e.g., defaults to authenticated user) or if authentication is required. The optional parameter and read-only annotation suggest public access, but this is not confirmed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for the single optional parameter 'username', which is fully described as '벨로그 계정명(@ 제외)' (account name without @). The description does not add additional parameter-level details, but the schema already provides sufficient information. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that it retrieves a list of series and their UUIDs, and explains that the UUID is used as series_id when publishing. This distinguishes it from sibling tools like velog_create_series (creates series) or velog_publish_post (publishes posts). The verb '가져옵니다' (gets) and the resource '시리즈 목록' (series list) are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use this tool: to get series UUIDs for use as series_id when publishing. It implies it should be used before publishing or updating posts that belong to a series. However, it does not explicitly state when not to use it or mention alternatives like velog_create_series, though the context makes it clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

velog_login벨로그 로그인A

벨로그 로그인 창을 열어 토큰을 발급받아 저장합니다. 토큰이 만료돼 쓰기 도구가 인증 오류를 낼 때 이 도구를 호출하면 됩니다. 벨로그에는 비밀번호 로그인이 없어 브라우저에서 사용자가 직접 인증해야 하며, 한 번 로그인하면 프로필이 저장돼 다음부터는 headless=True 로 창 없이 갱신할 수 있습니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNo이미 로그인돼 있어도 다시 로그인
headlessNo창을 띄우지 않고 저장된 프로필로 갱신만 시도. 처음 로그인할 때는 False 여야 한다
timeout_secNo로그인 완료를 기다릴 시간(초)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool requires user interaction in the browser, that it saves a profile for future use, and that headless=True enables windowless renewal. This adds significant behavioral context beyond the annotations (readOnlyHint=false, openWorldHint=true).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each serving a clear purpose: purpose statement, usage trigger, and login flow explanation. No unnecessary words, well-front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a login tool, the description covers purpose, usage trigger, and behavioral details. It does not mention error handling for login failures, but the timeout parameter addresses waiting. Overall, it is fairly complete given the output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter is already described. The description adds value by integrating the parameters into a workflow: explaining when headless should be false (first login) and when it can be true (renewal). This provides semantic context beyond individual parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool opens a Velog login window to obtain and save a token. It distinguishes its purpose from sibling tools by specifying it handles authentication for write tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to call this tool when write tools give authentication errors. It also distinguishes between first login (headless=False) and subsequent renewals (headless=True), providing clear usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

velog_publish_markdown_file마크다운 파일 발행A

로컬 마크다운 파일을 벨로그에 올립니다. 프런트매터(title·tags·slug·series_id 등)를 읽고, 발행 후 파일에 velog_post_id 를 기록합니다. 같은 파일을 다시 호출하면 새 글을 만들지 않고 기존 글을 수정하므로, 문서를 고칠 때마다 그대로 재실행하면 됩니다.

ParametersJSON Schema
NameRequiredDescriptionDefault
draftNo임시저장 여부. 지정하면 프런트매터 draft 값을 덮어쓴다
privateNo비공개 여부. 지정하면 프런트매터 값을 덮어쓴다
file_pathYes마크다운 파일의 절대 경로
series_idNo시리즈 UUID. 지정하면 프런트매터 값을 덮어쓴다
update_frontmatterNo발행 후 파일에 velog_post_id·velog_url 기록

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that it writes 'velog_post_id' to the file after publishing (side effect) and that repeated calls update rather than create. These behavioral traits go beyond the annotations (readOnlyHint: false, openWorldHint: true). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. The first sentence delivers the core action; the second explains idempotent behavior on repeated calls.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers core workflow, idempotent behavior, and file recording. Missing details like error handling or prerequisites, but includes output schema (not shown) to handle return values. Adequate for the complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions that already explain parameter override behavior. The description adds overall context about reading frontmatter (title, tags, slug, series_id) and how parameters interact, providing value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'publishes local markdown file to Velog' and specifies the resource (markdown file). It differentiates from siblings like velog_publish_post by mentioning file I/O and frontmatter handling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states that calling the same file again updates the existing post, providing clear guidance for repeated use. However, it does not explicitly contrast with sibling tools for when to use this vs. alternative publish methods.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

velog_publish_post벨로그 글 발행A

새 글을 발행합니다. body 는 마크다운입니다. draft=True 면 임시저장으로만 올라가고 공개되지 않으니, 확인이 필요할 때 사용하세요.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes마크다운 본문
tagsNo태그 목록
draftNo임시저장(초안)으로 저장
titleYes글 제목
privateNo비공개 발행
url_slugNoURL 슬러그. 생략하면 벨로그가 제목으로 만든다
series_idNo시리즈 UUID
thumbnailNo썸네일 이미지 URL

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint=false, openWorldHint=true) already indicate mutation. The description adds that body is markdown and draft behavior, but does not disclose other side effects or prerequisites (e.g., authentication).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loading the core action. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists, so return values are covered. However, the description omits mention of the required 'title' parameter, which is fundamental. With 8 parameters, more overview would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (baseline 3). The description adds value by specifying that body is markdown and explaining the semantic consequence of draft=True, which goes beyond the schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states '새 글을 발행합니다' (publish a new post), with a specific verb and resource. It distinguishes from sibling tools like velog_update_post (update) and velog_delete_post (delete).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear context for using the draft mode ('draft=True 면 임시저장으로만 올라가고 공개되지 않으니, 확인이 필요할 때 사용하세요'). However, no explicit comparison to alternatives like velog_publish_markdown_file.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

velog_update_post벨로그 글 수정A

기존 글을 수정합니다. post_id 는 필수이고, 나머지는 넘긴 항목만 바뀝니다. 본문 일부만 고칠 때도 body 는 전체를 보내야 합니다(부분 수정 불가).

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo새 마크다운 본문(전체)
tagsNo새 태그 목록(전체 교체)
draftNo임시저장 여부
titleNo새 제목
post_idYes글 UUID
privateNo비공개 여부
url_slugNo새 URL 슬러그
series_idNo시리즈 UUID
thumbnailNo새 썸네일 URL

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains the critical behavioral nuance that body must be sent in full even for partial edits, which is beyond the annotations (readOnlyHint=false, openWorldHint=true). This adds significant transparency for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with purpose, and every word earns its place. No redundant or missing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the 9 parameters, write operation, and presence of an output schema, the description covers all necessary behavioral aspects: required field, partial update semantics, and the body caveat. It is complete for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions for each parameter. The description summarizes the partial update pattern but does not add new per-parameter details. The warning about body being full is already implicit in the schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates an existing post, specifies the required parameter (post_id), and explains partial update behavior. This distinguishes it from sibling tools like velog_publish_post (create) and velog_delete_post (delete).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description tells the agent that only passed fields change and body must be sent in full. It implicitly guides when to use this tool (when an existing post ID is available), but could explicitly mention alternatives like velog_publish_post for new posts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

velog_whoami벨로그 계정 확인A
Read-only

현재 설정된 토큰으로 로그인되는 벨로그 계정을 확인합니다. 발행 전 인증 점검용입니다.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, indicating a safe, non-destructive operation. The description adds that it uses the current token to check the account, which aligns with annotations but doesn't provide significant new behavioral context beyond what annotations convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that efficiently conveys purpose and usage. Every word serves a purpose; there is no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has an output schema (not shown but noted) and zero parameters, the description fully explains the tool's purpose and context. It is complete for a straightforward authentication check tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, so the schema provides all necessary information trivially. The description adds meaning by explaining what the tool does (checking account with token), which compensates for the lack of parameter details. With zero parameters, the baseline is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool checks the Velog account associated with the current token. It uses a specific verb (확인합니다) and resource (벨로그 계정), and the sibling tools (e.g., velog_login, velog_list_posts) indicate this is distinct for authentication verification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description specifies it is for '인증 점검용' (authentication check) before publishing, providing a clear use case. It does not explicitly state when not to use it or list alternatives, but for a simple auth check tool this is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 10 tool updatesv0.1.0
    • First observedvelog_create_series
    • First observedvelog_delete_post
    • First observedvelog_get_post
    • First observedvelog_list_posts
    • First observedvelog_list_series
    • First observedvelog_login
    • First observedvelog_publish_markdown_file
    • First observedvelog_publish_post
    • First observedvelog_update_post
    • First observedvelog_whoami

TDQS

A4.2/5.0

Scored across 10 tools

Disambiguation5/5

Each tool has a clear, distinct purpose: authentication (whoami, login), post CRUD (list, get, publish, update, delete), series management (list, create), and file import (publish_markdown_file). No overlapping functionality.

Naming Consistency5/5

All tools follow the consistent pattern velog_<verb_snake_case> (e.g., velog_list_posts, velog_create_series). Naming is uniform and predictable.

Tool Count5/5

10 tools cover the core functionality of a blogging platform without being excessive or insufficient. Each tool serves a necessary role.

Completeness4/5

The set covers authentication, full CRUD for posts, series listing and creation, and file import. Missing update/deletion for series and perhaps a tool to upload images, but these are minor omissions for common workflows.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers