velog-mcp
Provides tools for interacting with Velog, a Korean blogging platform, enabling AI agents to read, search, create, edit, and delete posts, manage series and profile, and search trending posts.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@velog-mcpShow this week's trending posts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
velog-mcp
Velog 블로그 플랫폼용 MCP(Model Context Protocol) 서버입니다.
AI 어시스턴트를 통해 Velog 글을 읽고, 검색하고, 작성할 수 있습니다.
참고: 이 프로젝트는 Velog의 비공식 GraphQL API를 사용합니다. Velog의 공식 프로젝트가 아닙니다. 이 프로젝트는 stoneHee99/velog-mcp의 아이디어를 바탕으로 개발되었습니다.
주요 기능
글 조회 — 사용자의 글 목록, 상세 내용 조회
글 검색 — 키워드 기반 글 검색
트렌딩 — 인기 글 조회 (일간/주간/월간)
글 작성/수정/삭제 — 마크다운 글 작성, 관리 및 썸네일 연동
시리즈/프로필 — 시리즈 목록, 사용자 프로필 조회 및 수정
간편 로그인 — Chrome 쿠키 자동 추출로 별도 설정 없이 인증
Related MCP server: @alog-world/mcp
빠른 시작
Google Antigravity 연동
Antigravity의 MCP 설정 파일(mcp_config.json)에 서버를 등록합니다.
방법 1: UI를 통한 편집
Antigravity 에디터의 Agent 사이드 패널을 엽니다.
우측 상단의
...(더보기) 아이콘을 클릭합니다.Manage MCP Servers를 선택한 후, View raw config를 클릭하여 설정 파일을 엽니다.
아래 설정을 추가합니다.
방법 2: 설정 파일 직접 편집
~/.gemini/antigravity/mcp_config.json (또는 ~/.gemini/antigravity-cli/mcp_config.json) 파일에 다음 설정을 추가합니다.
npm run build를 수행한 후, 생성된 dist/index.js 파일의 절대 경로를 지정해 줍니다.
{
"mcpServers": {
"velog": {
"command": "node",
"args": ["/absolute/path/to/velog-mcp/dist/index.js"]
}
}
}추가가 완료되면 Manage MCP Servers 메뉴에서 Refresh 버튼을 눌러 적용합니다.
읽기 전용으로 사용할 경우 추가 설정 없이 바로 사용 가능합니다.
도구 목록
인증 불필요
도구 | 설명 | 주요 파라미터 |
| 사용자의 글 목록 조회 |
|
| 글 상세 조회 (본문, 댓글 포함) |
|
| 트렌딩 글 조회 |
|
| 키워드로 글 검색 |
|
| 사용자 프로필 조회 |
|
| 사용자의 시리즈 목록 조회 |
|
인증 필요
도구 | 설명 | 주요 파라미터 |
| Chrome 쿠키에서 토큰 자동 추출 | — |
| 새 글 작성 |
|
| 기존 글 수정 |
|
| 글 삭제 |
|
| 사용자 프로필 수정 |
|
| 로컬 마크다운 파일 직접 발행 |
|
인증
방법 1: 자동 로그인 (권장)
login 도구를 호출하면:
Chrome에 이미 Velog 로그인이 되어 있으면 → 쿠키를 자동으로 읽어 즉시 완료
로그인이 안 되어 있으면 → 기존 Chrome에 새 탭으로 velog.io를 열어줌 → 로그인 후 자동 추출
추출된 토큰은 ~/.velog-mcp/tokens.json에 저장되어 다음 실행 시 자동으로 불러옵니다.
방법 2: 환경변수
{
"mcpServers": {
"velog": {
"command": "npx",
"args": ["-y", "velog-mcp"],
"env": {
"VELOG_ACCESS_TOKEN": "your_access_token",
"VELOG_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}토큰 확인: velog.io > 개발자 도구 (F12) > Application > Cookies > access_token / refresh_token
토큰 우선순위
환경변수 > 저장 파일 (~/.velog-mcp/tokens.json) > 미인증 (읽기 전용)
토큰 만료
토큰 | 유효 기간 |
| 1시간 |
| 30일 |
만료 시 login 도구를 다시 호출해주세요.
사용 예시
"이번 주 velog 트렌딩 글 보여줘"
"velopert의 최근 글 목록 알려줘"
"velog에 '오늘의 TIL'이라는 제목으로 글 쓰고 썸네일로 'https://example.com/thumb.png' 지정해줘"
"내 벨로그 프로필의 한 줄 소개를 '매일 성장하는 개발자'로 변경해줘"
"velog에서 TypeScript 관련 글 검색해줘"
"로컬 경로 '/Users/ddukddi/notes/my_post.md' 파일을 읽어서 Velog에 포스팅해줘"로컬 마크다운 파일 발행 (publish_local_markdown) 사용법
로컬에 작성한 마크다운 파일(.md)을 읽어와서 자동으로 제목과 태그를 파싱한 뒤 Velog에 바로 게시할 수 있습니다.
1. 마크다운 파일 형식 (YAML Frontmatter 지원)
게시글의 메타데이터(제목, 태그, 썸네일, 공개 여부)를 설정하기 위해 파일 상단에 YAML 형식의 Frontmatter를 추가하거나, 일반 마크다운 파일처럼 첫 번째 H1 헤더(# 제목)로 제목을 설정할 수 있습니다.
예시 1: YAML Frontmatter 적용 (권장)
---
title: "나의 첫 번째 MCP 블로그 글"
tags: [MCP, Velog, AI]
is_private: false
thumbnail: "https://example.com/thumbnail.png"
---
여기에 본문 내용을 작성합니다.예시 2: 일반 마크다운 형식
# 나의 첫 번째 MCP 블로그 글
여기에 본문 내용을 작성합니다.이 경우 제목은 나의 첫 번째 MCP 블로그 글로 설정되며 본문에서는 해당 제목 헤더가 자동으로 제외되어 깔끔하게 등록됩니다.
2. 에이전트 호출 명령 예시
Antigravity 에디터 대화창 또는 MCP 클라이언트에 다음과 같이 요청해 보세요.
"로컬 경로
/Users/ddukddi/notes/my_post.md파일을 읽어서 Velog에 포스팅해줘""내 마크다운 파일
/path/to/file.md내용을 블로그 형식으로 다듬은 다음에 Velog에 발행해줘"
플랫폼 지원
기능 | macOS | Windows | Linux |
읽기 (조회, 검색, 트렌딩) | O | O | O |
쓰기 (환경변수 인증) | O | O | O |
자동 로그인 ( | O | O | O |
자동 로그인은 Chrome 브라우저가 필요합니다. Windows에서는 sqlite3도 PATH에 설치되어 있어야 합니다.
개발
git clone https://github.com/stoneHee99/velog-mcp.git
cd velog-mcp
npm install
npm run build최근 변경 사항
프로필 수정 기능 추가 (
update_profile): 로그인된 사용자의 이름(display_name) 및 한 줄 소개(short_bio)를 수정할 수 있는 기능을 추가했습니다. 파라미터가 생략된 경우 현재의 프로필 값을 안전하게 유지하며 업데이트합니다.글 작성 및 수정 시 썸네일(Thumbnail) 파라미터 지원:
write_post및edit_post도구에thumbnail매개변수를 추가하여 글의 커버 이미지를 외부 URL로 바로 등록할 수 있도록 개선했습니다.로컬 마크다운 파일 직접 발행 기능 추가 (
publish_local_markdown): 로컬 경로에 있는.md파일을 읽어 Velog 글을 작성할 수 있는 기능을 추가했습니다. 마크다운 파일 상단의 YAML Frontmatter 정보(title, tags, thumbnail, is_private) 또는 첫 번째 H1 헤더(# 제목)를 자동으로 파싱하여 글 제목 및 태그로 연동합니다.
주의사항
Velog의 비공식 GraphQL API를 사용하며, API 변경 시 동작하지 않을 수 있습니다.
이 프로젝트는 Velog와 무관한 커뮤니티 프로젝트입니다.
과도한 API 호출은 자제해주세요.
라이선스
Available Tools
12 toolsdelete_postB
Delete a post on Velog (requires authentication)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Post ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions authentication but does not disclose that deletion is permanent, irreversible, or what effects it has (e.g., removing associated comments). For a destructive operation, this is a significant gap. It doesn't contradict annotations, but it under-discloses.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise sentence that states the verb, resource, and a key prerequisite. No filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should explain what happens after deletion (e.g., success response, no content). It doesn't. The tool is simple, but the absence of return-value info and behavioral caveats makes it incomplete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has full coverage for the single 'id' parameter ('Post ID to delete'). The description adds no parameter syntax or format details, but the baseline is 3 due to high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Delete' with the resource 'a post on Velog', clearly distinguishing it from sibling tools like edit_post and write_post. The authentication note adds context. It fully specifies the tool's action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no explicit when-to-use guidance or alternatives. The auth requirement provides some context, but it doesn't state when to prefer this over edit_post or other tools. Usage is only implied by the tool name and verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_postC
Edit an existing post on Velog (requires authentication)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Post ID to edit | |
| body | No | New body (markdown) | |
| tags | No | New tags | |
| title | No | New title | |
| url_slug | No | New URL slug | |
| series_id | No | Series ID | |
| thumbnail | No | New thumbnail image URL | |
| is_private | No | Whether the post is private |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only mentions authentication but does not disclose whether edits are partial or full replacements, how existing fields are handled, side effects, or response behavior. This is a significant gap 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that communicates the core action and a key prerequisite with zero wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite a complex 8-parameter schema and no output schema, the description omits critical contextual details such as return values, success/error behavior, and the effect on existing post fields. This leaves the tool under-specified for an agent to use confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters with meaningful descriptions, so baseline is 3. The description adds no extra parameter semantics, but the schema already documents each field clearly, so no compensation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Edit an existing post on Velog' clearly states the verb (edit) and resource (post), and 'existing' distinguishes it from write_post. It is specific and unambiguous, though it could explicitly contrast with write_post or delete_post for full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides only a prerequisite ('requires authentication') and no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like write_post or delete_post, leaving the agent to infer usage from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_series_listB
Get a user's series list on Velog
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Velog username |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read operation but does not mention pagination, ordering, authentication, or what the returned series list contains, leaving significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core purpose. It contains no redundant information and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one required parameter, no output schema), and the description covers the basic purpose. However, it lacks any detail on the return format or behavior beyond the schema, making it minimally viable but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with the username parameter already described as 'Velog username'. The description adds no extra parameter meaning, but the schema handles it adequately, warranting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get a user's series list on Velog' clearly states the action (get), the resource (series list), and the scope (a user's), distinguishing it from sibling tools like get_user_posts and get_user_profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_user_posts or get_user_profile. It simply states what it does without context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trending_postsC
Get trending posts from Velog
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of posts to fetch | |
| offset | No | Offset for pagination | |
| timeframe | No | Timeframe for trending | week |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does not disclose whether authentication is required, how pagination behaves (despite offset/limit), what 'trending' means algorithmically, or the return structure. It only states that it gets trending posts, which is a basic read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is extremely concise. However, it omits necessary details about return values, pagination, or usage context, making it under-specified rather than elegantly concise. It has minimal structure but no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has three parameters, no output schema, and no annotations. The description is a one-liner that fails to explain what the response contains, how trending is determined, or any constraints. For a list-fetching tool, it should at least mention the response shape or pagination behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides full documentation for all three parameters (limit, offset, timeframe) with descriptions and defaults. The description adds no parameter-level information beyond what the schema already states. Baseline 3 applies because schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('trending posts') and identifies the source ('Velog'). It distinguishes from sibling tools like get_user_posts and search_posts because 'trending' implies a global ranking, though it doesn't explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to use this tool over alternatives. There is no mention of exclusions, prerequisites, or recommended scenarios. The distinction from search_posts or get_user_posts is only implicit in the tool name, not in the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_postsA
Get a list of posts by a Velog user
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of posts to fetch | |
| cursor | No | Cursor for pagination (post ID) | |
| username | Yes | Velog username |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states what is retrieved, but fails to mention pagination behavior (cursor/limit), ordering, or any caveats like whether drafts are included. This lack of behavioral detail is a notable gap for a tool with pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is front-loaded with the verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple, but the description omits how pagination works, what the response structure looks like (no output schema), and any error conditions. Given the presence of cursor and limit parameters, the description is somewhat incomplete for an agent to use it fully without further investigation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters. The description adds no parameter-specific meaning beyond the schema, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('list of posts') with an explicit scope ('by a Velog user'), distinguishing it clearly from siblings like get_trending_posts, search_posts, and read_post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use this to retrieve a specific user's posts. However, it does not explicitly contrast with alternatives such as search_posts or get_trending_posts, nor mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_user_profileA
Get a Velog user's profile information
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Velog username |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It signals a read-only operation via 'Get', but does not disclose return value structure, error behavior, or whether authentication is required. This is a minimal disclosure that does not contradict any annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and resource, and contains no extraneous words. It is as concise as possible while conveying the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter retrieval tool, the description adequately conveys the purpose. However, given the absence of an output schema or annotations, it would be improved by hinting at what 'profile information' includes or error scenarios. Still, it is sufficiently complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides full coverage for the single 'username' parameter with the description 'Velog username'. The tool description adds no additional parameter context beyond that, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Get' and identifies the resource as 'Velog user's profile information', which clearly distinguishes this tool from sibling tools like get_user_posts and get_series_list that target different data types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives, but the name and description imply it is for retrieving profile information. The intended use is clear from context, yet no exclusions or alternative mentions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
loginB
Open a browser to log in to Velog and save authentication tokens
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description discloses the browser launch and token saving, but omits potential side effects: it may require interactive user input, may block, or may need to be done once. There's no mention of what happens if already authenticated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, direct sentence conveys the action and purpose without redundancy. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no annotations, no output schema, and no parameters; the description is the sole documentation. It fails to explain how the saved tokens are stored, how they are used by sibling tools, or any prerequisites (e.g., network, credentials). This is insufficient for an agent to know when and why to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so description needs no parameter details. Baseline 4 applies because the schema is fully clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Open a browser to log in') and identifies the resource (Velog) and outcome (save tokens). It clearly distinguishes from siblings, which are all content operations, not authentication.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus others. It doesn't state that login must precede authenticated operations like write_post or edit_post, nor does it mention any alternative authentication methods.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
publish_local_markdownC
Publish a local markdown file as a Velog post (requires authentication)
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Override tags. If not provided, parsed from frontmatter. | |
| title | No | Override title. If not provided, parsed from frontmatter or first H1 header. | |
| filePath | Yes | Absolute path to the local markdown file to publish | |
| thumbnail | No | Override thumbnail image URL. If not provided, parsed from frontmatter. | |
| is_private | No | Override privacy setting. If not provided, parsed from frontmatter (default: false). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It discloses that authentication is required, but it omits critical behavioral traits such as whether publishing creates a new post or updates an existing one, how existing posts are affected, side effects, or what the response contains. This is a significant gap for a publishing action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the core action and resource. Every word earns its place, and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no annotations, and no output schema, the description is too sparse. It doesn't explain the tool's role among siblings, whether it parses frontmatter, how overrides work, or what the result of publishing is. The schema covers parameters but not the operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter already documented (e.g., filePath is 'Absolute path to the local markdown file'). The description adds no additional parameter semantics beyond 'markdown file', so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Publish') and the resource ('a local markdown file as a Velog post'), making the purpose immediately understandable. However, it does not explicitly distinguish itself from sibling tools like write_post or edit_post, so it misses differentiation credit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as write_post. The only additional context, 'requires authentication', is a prerequisite rather than a usage guideline. The description does not mention exclusions, typical workflows, or decision criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_postA
Read a specific Velog post with full content, comments, and metadata
| Name | Required | Description | Default |
|---|---|---|---|
| url_slug | Yes | Post URL slug | |
| username | Yes | Velog username |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the operation is a read and describes the output content (full content, comments, metadata). It does not mention potential errors, auth requirements, or non-mutation explicitly, but the verb 'Read' implies safety and the output details are valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action ('Read a specific Velog post') and then lists the returned data. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is sufficient for a simple read tool with a clear schema and no output schema. It tells the user what they will get (full content, comments, metadata). It could mention edge cases like nonexistent posts, but for the given complexity, this is complete enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes both parameters (username, url_slug) with 100% coverage. The description adds no extra parameter semantics beyond what the schema provides, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a specific Velog post, specifying that it returns full content, comments, and metadata. This distinguishes it from sibling tools like get_user_posts or search_posts, which focus on listing or searching rather than retrieving a single post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the intended use case: when you need the complete details of one specific post (using username and url_slug). It clearly differentiates from listing/searching tools but does not explicitly mention alternatives or exclusions, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_postsA
Search for posts on Velog by keyword
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of results | |
| offset | No | Offset for pagination | |
| keyword | Yes | Search keyword | |
| username | No | Filter by username |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic action without mentioning pagination behavior, return format, authentication requirements, or any constraints beyond the schema fields. This is a minimal description that leaves key behavioral aspects unexplored.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It efficiently communicates the tool's core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple, and the schema provides all parameter details. However, with no annotations and no output schema, the description leaves uncertainty about return values and usage nuances in relation to sibling tools. It is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions 'by keyword', which reinforces the keyword parameter but adds no new meaning beyond the schema's own descriptions for limit, offset, and username.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Search'), a resource ('posts'), and a platform ('Velog') with the search scope ('by keyword'). It distinguishes itself from sibling tools like get_user_posts and read_post, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: when searching for posts by keyword. It does not explicitly mention alternatives or exclusions, but the context is clear enough for the agent to infer its primary use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_profileA
Update the current user's profile (requires authentication)
| Name | Required | Description | Default |
|---|---|---|---|
| short_bio | No | New short bio (uses current if omitted) | |
| display_name | No | New display name (uses current if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It only mentions authentication; it does not describe side effects, response behavior, or whether a partial update leaves unspecified fields unchanged (though schema hints at this). This is insufficient 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the action, and has no filler. It is appropriately concise for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, the schema fully documents both optional parameters, and the description adds the key authentication requirement. While no output schema exists, return values are not explicitly needed. The only minor gap is not elaborating on partial update semantics, but the schema's 'uses current if omitted' covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with clear descriptions, so the description does not need to repeat them. Baseline 3 is appropriate because the description adds no further semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'Update' and resource 'the current user's profile', making it distinct from sibling tools like get_user_profile. Purpose is immediately obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context by specifying 'current user' and the authentication requirement. It does not explicitly name alternatives or exclusions, but the sibling context makes the intended use unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_postB
Create a new post on Velog (requires authentication)
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Post body (markdown) | |
| tags | No | Tags for the post | |
| title | Yes | Post title | |
| url_slug | No | Custom URL slug | |
| series_id | No | Series ID to add the post to | |
| thumbnail | No | Thumbnail image URL | |
| is_private | No | Whether the post is private |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'requires authentication' but does not describe side effects, whether the post is published immediately, what the response looks like, or any irreversibility. This is a significant transparency gap 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no fluff. It front-loads the core purpose ('Create a new post on Velog') and immediately follows with the key prerequisite, making it highly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters) and the absence of an output schema and annotations, the description is too sparse. It does not explain return values, post-creation behavior, or any constraints beyond authentication. The schema covers parameter details, but the overall context of what happens when the tool is invoked remains incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptive text for each field, so the baseline is 3 per the rubric. The description itself adds no additional parameter meaning beyond what the schema already provides, such as relationships or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Create' with the resource 'a new post on Velog', making the action unmistakable. It clearly distinguishes this tool from siblings like edit_post and delete_post, which modify or remove posts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating new posts through the verb 'Create', and the authentication requirement is a helpful prerequisite. However, it does not explicitly identify alternatives such as edit_post for modifications or state when not to use this tool, leaving the guidance implicit rather than explicit.
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.
12 tool updates
v0.3.0- First observed
delete_post - First observed
edit_post - First observed
get_series_list - First observed
get_trending_posts - First observed
get_user_posts - First observed
get_user_profile - First observed
login - First observed
publish_local_markdown - First observed
read_post - First observed
search_posts - First observed
update_profile - First observed
write_post
TDQS
Scored across 12 tools
Each tool has a clearly distinct purpose: authentication, reading posts (list vs. individual vs. trending vs. search), user profile vs. series, and CRUD operations for posts and profile. Even write_post and publish_local_markdown differ in input method (manual vs. file-based).
Tool names generally follow a verb_noun pattern in snake_case, but there is a mix of 'get_' and direct verbs like 'read' and 'search'. 'login' lacks an object, and 'publish_local_markdown' is a compound phrase, yet the pattern is still predictable and readable.
With 12 tools, the set is well-scoped for a blogging platform. It covers authentication, public browsing (posts, profiles, series, search, trending), and authenticated content management (write, edit, delete, profile update, markdown publishing) without unnecessary bloat.
Core CRUD lifecycle for posts is fully covered, and user/profile/series retrieval is present. Minor gaps include no series management (create/update/delete), no comment interaction, and no explicit logout, but these are not essential for the main blogging workflow.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI agents to interact with Botmadang, a Korean social networking service designed specifically for AI agents. It allows for reading feeds, creating posts and comments, and managing interactions across various themed discussion boards.3-
- AlicenseAqualityDmaintenanceMCP server for Alog, an AI × Human blog platform. Enables AI agents to post logs, create and publish articles, search content, and interact socially on alog.world.19221MIT
- AlicenseAqualityDmaintenanceMCP server that enables AI assistants to automatically write and publish blog posts to CSDN with support for categories, tags, and drafts.41MIT
- FlicenseAqualityDmaintenanceAn MCP server that automatically generates technical blog posts using AI (Gemini and Claude), supporting various input types, styles, and collaborative workflow.10-