Skip to main content
Glama

blogger-mcp

基于 Google Blogger API v3 的自定义 MCP 服务器。它为 Claude Code / Claude Desktop 等 MCP 主机提供了查询/编写/修改/删除 Blogger 博客文章的工具。

主要功能 (MCP Tools)

工具

说明

list_blogs

已认证用户的博客列表

get_blog_by_url

博客 URL → 查询 Blog ID

list_posts

博客文章列表(支持 status 过滤)

get_post

查询特定文章

create_post

编写新文章(通过 isDraft=true 暂存)

update_post

修改文章(标题/内容/标签)

delete_post

永久删除文章

publish_post

发布暂存的文章

revert_post

将已发布的文章撤回为暂存状态

Related MCP server: MCP-Google-Doc

架构

Claude Code ──stdio──► blogger-mcp (Node)
                          │
                          ├─ src/index.ts     : MCP server (tools 등록/디스패치)
                          ├─ src/auth.ts      : OAuth 2.0 토큰 로드/저장/갱신
                          └─ src/auth-cli.ts  : 최초 1회 대화형 인증용 CLI
                          │
                          ▼
                  Google Blogger API v3
  • 认证: OAuth 2.0 (桌面应用)。首次通过 npm run auth 启动本地回调服务器获取令牌,并保存至 ~/.config/blogger-mcp/token.json。后续通过 refresh token 自动更新。

  • Scopes: https://www.googleapis.com/auth/blogger

  • 传输: stdio (由 MCP 主机作为子进程启动)

快速开始

1. 安装与构建

git clone https://github.com/mech12/blogger-mcp.git
cd blogger-mcp
npm install
npm run build

2. 准备 OAuth 客户端

Google Cloud Console 中启用 Blogger API v3,创建桌面应用类型的 OAuth 客户端,并下载 client_secret.json

mkdir -p ~/.config/blogger-mcp
cp /path/to/client_secret.json ~/.config/blogger-mcp/client_secret.json

详细的 Google Cloud 设置请参考下方的 Blogger API v3 认证发放

3. 首次认证

npm run auth

在浏览器中打开显示的 URL 并授权后,将生成 ~/.config/blogger-mcp/token.json

4. 注册到 Claude Code

claude mcp add blogger --scope user -- node /absolute/path/to/blogger-mcp/dist/index.js

或者直接在 ~/.claude.json 中配置:

{
  "mcpServers": {
    "blogger": {
      "command": "node",
      "args": ["/absolute/path/to/blogger-mcp/dist/index.js"]
    }
  }
}

环境变量

变量

默认值

说明

BLOGGER_MCP_CRED_DIR

~/.config/blogger-mcp

凭据目录

BLOGGER_MCP_CLIENT_SECRET

$CRED_DIR/client_secret.json

OAuth 客户端 JSON 路径

Blogger API v3 认证发放 (摘要)

  1. 创建 Google Cloud 项目https://console.cloud.google.com/

  2. API 库中启用 Blogger API v3

  3. 配置 OAuth 同意屏幕

    • 用户类型: 外部 (External)

    • 添加范围: https://www.googleapis.com/auth/blogger

    • 将您的 Google 账号添加为测试用户

  4. 凭据 → OAuth 客户端 ID

    • 应用类型: 桌面应用

    • 创建后下载 JSON → ~/.config/blogger-mcp/client_secret.json

  5. 确认 Blog ID

    • 通过 Blogger 管理后台 URL 中的 blogID=... 数字或使用 get_blog_by_url 工具查询

项目特定的详细指南由宿主项目的 docs/vibe/mcp/blogger-mcp.md 管理。

实现计划 (Design Notes)

  • 技术栈: TypeScript + Node 18+, @modelcontextprotocol/sdk, googleapis, google-auth-library

  • 令牌存储位置: ~/.config/blogger-mcp/。受 .gitignore 保护。

  • 错误策略: 工具调用失败由 MCP 自动包装错误。缺少认证时提示 No stored token. Run npm run auth first.

  • 扩展路线图:

    • Markdown → HTML 转换工具 (基于 marked)

    • 图片上传 (Blogger 需要绕过 Picasa/Google Photos → 后续选项)

    • 文章定时发布 (设置 published 字段)

开发

npm run dev       # tsc --watch
npm run build     # dist/ 생성
npm start         # dist/index.js 실행 (MCP stdio 서버)
npm run auth      # OAuth 최초 인증

许可证

MIT

Available Tools

9 tools
create_postC

Create a new blog post. Content is HTML; labels is a list of tags. isDraft=true saves as draft.

ParametersJSON Schema
NameRequiredDescriptionDefault
blogIdYes
titleYes
contentYesHTML body
labelsNoTags/labels
isDraftNo

TDQS

C2.9/5.0
Behavior2/5

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 that 'isDraft=true saves as draft', which implies a mutation with a draft state, but fails to cover critical aspects like required permissions, whether creation is irreversible, rate limits, or what happens on success/failure. This leaves significant gaps 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 extremely concise with two sentences that directly convey the tool's purpose and key parameter details. Every word serves a purpose, with no redundant information, making it front-loaded and efficient.

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

Completeness2/5

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

Given the complexity of a mutation tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It lacks information on behavioral traits, error handling, return values, and usage context, which are essential for safe and effective tool invocation in this scenario.

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 40%, and the description adds some value by clarifying that 'Content is HTML' and 'labels is a list of tags', which helps interpret parameters beyond the schema. However, it doesn't fully compensate for the low coverage, as parameters like 'blogId' and 'title' remain without additional context, and no details on formats or constraints are provided.

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

Purpose4/5

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

The description clearly states the action ('Create a new blog post') and specifies the resource ('blog post'), which provides a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'update_post' or 'publish_post' beyond mentioning the draft functionality, which slightly limits its distinctiveness.

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?

The description provides no guidance on when to use this tool versus alternatives like 'update_post' or 'publish_post', nor does it mention prerequisites such as needing an existing blog or permissions. It only hints at usage by noting the draft option, but lacks explicit when/when-not instructions or named alternatives.

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

delete_postC

Delete a post permanently

ParametersJSON Schema
NameRequiredDescriptionDefault
blogIdYes
postIdYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It discloses permanence ('permanently'), which is a key behavioral trait beyond basic deletion. However, it lacks details on permissions needed, side effects (e.g., comments deletion), error handling, or confirmation steps. For a destructive tool, this is a significant gap in safety and operational context.

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 with zero waste. It directly states the tool's purpose without unnecessary words. Every part ('Delete a post permanently') earns its place by conveying essential information efficiently.

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

Completeness2/5

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

Given the tool's destructive nature, complexity is moderate, but with no annotations and no output schema, the description is incomplete. It doesn't cover return values, error cases, or important behavioral nuances. For a permanent deletion tool among siblings like revert_post, more context on implications and usage is needed.

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 0%, so the description must compensate. It doesn't add any meaning beyond the schema—no explanation of what blogId/postId represent, their format, or how to obtain them. The baseline is 3 because the schema defines two required parameters clearly, but the description fails to enhance understanding.

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

Purpose4/5

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

The description clearly states the action ('Delete') and resource ('a post'), specifying it's permanent. It distinguishes from siblings like revert_post (which might undo) and update_post (which modifies), but doesn't explicitly name alternatives. The purpose is specific but could better differentiate from other destructive operations.

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 guidance on when to use this tool versus alternatives is provided. The description doesn't mention prerequisites (e.g., needing postId/blogId), exclusions (e.g., not for drafts vs. published posts), or when to choose delete over revert_post. Usage is implied by the name but not explicitly stated.

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

get_blog_by_urlC

Resolve a Blog ID from a blog URL (e.g. https://xxx.blogspot.com)

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

TDQS

C2.9/5.0
Behavior2/5

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 states the tool resolves a Blog ID from a URL, implying a read-only lookup operation, but doesn't describe error handling (e.g., for invalid URLs), performance characteristics, authentication needs, or what happens if the blog doesn't exist. For a tool with zero annotation coverage, this is a significant gap.

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, efficient sentence that front-loads the core purpose ('Resolve a Blog ID from a blog URL') and includes a helpful example. There is zero waste—every word earns its place.

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

Completeness2/5

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

Given the tool's simplicity (1 parameter, no output schema) and lack of annotations, the description is incomplete. It doesn't explain what the resolved Blog ID is used for, how it's returned, or potential errors. For a lookup tool in a blog management context, more context about the ID's purpose or integration with other tools would be helpful.

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 schema has 1 parameter with 0% description coverage, so the description must compensate. It adds meaning by specifying that the 'url' parameter should be a blog URL (e.g., 'https://xxx.blogspot.com'), which clarifies the expected format beyond the schema's generic string type. However, it doesn't detail constraints like URL validation rules or supported domains.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Resolve a Blog ID from a blog URL'. It specifies the verb ('resolve') and resource ('Blog ID'), and provides an example URL format. However, it doesn't explicitly differentiate from sibling tools like 'list_blogs' or 'get_post', which could also involve blog identification.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when-not-to-use scenarios, or compare it to siblings like 'list_blogs' (which might list blogs without URL resolution) or 'get_post' (which might retrieve posts rather than blog metadata).

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

get_postC

Fetch a single post

ParametersJSON Schema
NameRequiredDescriptionDefault
blogIdYes
postIdYes

TDQS

C2.8/5.0
Behavior2/5

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. 'Fetch' implies a read-only operation, but it doesn't specify whether authentication is required, if there are rate limits, what happens on invalid IDs, or the return format. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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 at three words, with zero wasted language. It's front-loaded with the core action ('Fetch a single post'), making it easy to scan. Every word earns its place by conveying essential information without redundancy.

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

Completeness2/5

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

Given the complexity (a read operation with two required parameters), lack of annotations, 0% schema coverage, and no output schema, the description is incomplete. It doesn't explain parameter meanings, behavioral traits like error handling, or what the tool returns. For a tool in this context, more detail is needed to be fully actionable.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the two required parameters (blogId, postId) are undocumented in the schema. The description adds no information about these parameters—it doesn't explain what they represent, their format, or how to obtain them. This fails to compensate for the lack of schema documentation, leaving parameters semantically unclear.

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

Purpose4/5

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

The description 'Fetch a single post' clearly states the verb ('fetch') and resource ('post'), making the purpose immediately understandable. It distinguishes this from siblings like 'list_posts' (multiple posts) and 'create_post' (write operation). However, it doesn't specify what 'fetch' entails (e.g., retrieving by ID), which prevents a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a blogId and postId), differentiate from 'list_posts' for multiple posts, or explain when to use 'get_blog_by_url' instead. Without such context, the agent must infer usage from the tool name alone.

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

list_blogsB

List blogs owned by the authenticated user

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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 states the tool lists blogs, implying a read-only operation, but doesn't cover critical aspects like pagination, sorting, error handling, or authentication requirements beyond the user context. This leaves significant gaps for a tool that likely returns multiple items.

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, efficient sentence that directly states the tool's function without any wasted words. It's appropriately sized for a simple list operation and front-loads the key information, making it easy for an agent to parse quickly.

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

Completeness2/5

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

Given the tool's simplicity (0 parameters, no output schema), the description is minimal but adequate for basic understanding. However, it lacks completeness for practical use: no output format details, no error handling, and no differentiation from siblings. With no annotations to fill these gaps, the description should provide more context for reliable agent invocation.

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 has 0 parameters with 100% description coverage, so the schema fully documents the absence of parameters. The description doesn't need to add parameter details, but it implicitly clarifies that no filtering parameters are available (e.g., it lists all blogs for the user). This slight added context justifies a score above the baseline of 3.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('blogs owned by the authenticated user'), making the purpose unambiguous. However, it doesn't explicitly distinguish this tool from sibling tools like 'list_posts' or 'get_blog_by_url', which prevents a perfect score.

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?

The description provides no guidance on when to use this tool versus alternatives like 'list_posts' or 'get_blog_by_url'. It mentions the scope ('owned by the authenticated user'), but lacks explicit when-to-use or when-not-to-use instructions, leaving the agent to infer context.

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

list_postsC

List posts of a blog

ParametersJSON Schema
NameRequiredDescriptionDefault
blogIdYes
maxResultsNo
statusNoFilter by status (optional)

TDQS

C2.9/5.0
Behavior2/5

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. 'List posts of a blog' implies a read operation but does not specify whether it requires authentication, has rate limits, returns paginated results, or handles errors. For a tool with three parameters and no annotation coverage, this is a significant gap in transparency.

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, efficient sentence with no wasted words. It is front-loaded and directly states the tool's purpose without unnecessary elaboration, making it easy to parse quickly. This meets the criteria for high conciseness.

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

Completeness2/5

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

Given the tool's complexity (three parameters, no annotations, no output schema), the description is incomplete. It lacks details on behavioral traits, parameter usage, and output expectations. For a list operation that likely returns multiple items, more context is needed to guide effective use, making this inadequate for the tool's requirements.

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 description does not mention any parameters, leaving all semantic details to the input schema. With schema description coverage at 33% (only 'status' has a description), the parameters 'blogId' and 'maxResults' are undocumented. The description adds no value beyond the schema, but since the schema provides some coverage, a baseline score of 3 is appropriate.

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

Purpose4/5

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

The description 'List posts of a blog' clearly states the verb ('list') and resource ('posts of a blog'), making the tool's purpose understandable. However, it does not distinguish this tool from potential siblings like 'list_blogs' or 'get_post', which could cause confusion in selection. The specificity is adequate but lacks sibling differentiation.

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?

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'list_blogs', 'get_post', and 'get_blog_by_url', there is no indication of context, prerequisites, or exclusions. This absence of usage instructions may lead to incorrect tool selection by an AI agent.

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

publish_postC

Publish a draft post

ParametersJSON Schema
NameRequiredDescriptionDefault
blogIdYes
postIdYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. 'Publish a draft post' implies a mutation operation (changing post status from draft to published) but doesn't specify whether this is reversible, what permissions are required, whether it triggers notifications, or what happens on failure. For a mutation tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

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 maximally concise at just three words, front-loading the essential action and resource. Every word earns its place: 'Publish' specifies the action, 'draft post' specifies the target resource and its required state. There is zero wasted verbiage or unnecessary elaboration.

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

Completeness2/5

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

For a mutation tool with 2 required parameters, 0% schema description coverage, no annotations, and no output schema, the description is inadequate. It doesn't explain what happens after publishing (success/failure states), what the parameters mean, or any behavioral implications. The agent would need to guess about parameter semantics and post-publishing effects.

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

Parameters1/5

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

Schema description coverage is 0%, meaning neither blogId nor postId parameters have descriptions in the schema. The tool description provides absolutely no information about these parameters - not what they represent, where to find them, what format they should be in, or how they relate to each other. The description fails to compensate for the complete lack of schema documentation.

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

Purpose4/5

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

The description 'Publish a draft post' clearly states the action (publish) and the resource (draft post), making the tool's purpose immediately understandable. It distinguishes from siblings like create_post, update_post, and delete_post by focusing specifically on transitioning a draft to published state. However, it doesn't explicitly differentiate from revert_post which might also involve post status changes.

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., that a draft post must exist), when not to use it (e.g., for already published posts), or how it differs from similar tools like update_post which might also affect post status. The agent must infer usage context from the tool name and sibling relationships alone.

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

revert_postC

Revert a published post back to draft

ParametersJSON Schema
NameRequiredDescriptionDefault
blogIdYes
postIdYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action without behavioral details. It lacks information on permissions required, whether the revert is reversible, side effects (e.g., notifications, version history), or error conditions (e.g., if post is already a draft). This is inadequate for a mutation tool with zero annotation coverage.

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, efficient sentence with zero wasted words. It is front-loaded with the core action and outcome, making it easy to parse quickly. Every word earns its place by conveying essential purpose.

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

Completeness2/5

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

For a mutation tool with 2 parameters, 0% schema coverage, no annotations, and no output schema, the description is incomplete. It covers the basic purpose but lacks usage guidelines, parameter details, behavioral context, and output expectations, leaving significant gaps for agent invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate but adds no parameter information. It does not explain what 'blogId' and 'postId' represent, their format, or how to obtain them (e.g., from 'list_posts'). This leaves both parameters undocumented, failing to bridge the coverage gap.

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

Purpose4/5

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

The description clearly states the action ('revert') and target resource ('a published post'), specifying the outcome ('back to draft'). It distinguishes from siblings like 'delete_post' (removal) and 'update_post' (modification), but could be more explicit about how it differs from 'create_post' or 'publish_post' in terms of state change.

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?

The description implies usage on published posts only, but provides no explicit guidance on when to use this tool versus alternatives like 'update_post' for editing content or 'delete_post' for removal. No prerequisites (e.g., post must be published) or exclusions are stated, leaving gaps for agent decision-making.

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

update_postC

Update an existing post (title/content/labels).

ParametersJSON Schema
NameRequiredDescriptionDefault
blogIdYes
postIdYes
titleNo
contentNo
labelsNo

TDQS

C2.7/5.0
Behavior2/5

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 states this is an update operation, implying mutation, but doesn't disclose behavioral traits such as required permissions, whether changes are reversible, rate limits, error handling, or what happens to unspecified fields. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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 a single, efficient sentence that front-loads the core action. It wastes no words but could benefit from slightly more detail given the lack of annotations and schema descriptions. Overall, it's appropriately sized for its content.

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

Completeness2/5

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

Given the complexity (mutation tool with 5 parameters, 0% schema coverage, no annotations, no output schema), the description is incomplete. It doesn't explain return values, error cases, or provide enough context for safe and effective use. It should do more to compensate for the missing structured data.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It mentions parameters ('title/content/labels') but doesn't explain their semantics, formats, or constraints. It omits blogId and postId entirely, which are required parameters. The description adds minimal value beyond the schema, failing to address the coverage gap adequately.

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

Purpose4/5

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

The description clearly states the verb ('Update') and resource ('an existing post'), and specifies what can be updated ('title/content/labels'). It distinguishes from siblings like create_post, delete_post, and get_post by focusing on modification rather than creation, deletion, or retrieval. However, it doesn't explicitly differentiate from revert_post (which might also modify a post).

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?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing blogId and postId), when not to use it (e.g., for new posts vs. existing ones), or direct alternatives like revert_post for undoing changes. Usage is implied by the action but not explicitly contextualized.

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. 9 tool updatesv0.1.0
    • First observedcreate_post
    • First observeddelete_post
    • First observedget_blog_by_url
    • First observedget_post
    • First observedlist_blogs
    • First observedlist_posts
    • First observedpublish_post
    • First observedrevert_post
    • First observedupdate_post

TDQS

A3.5/5.0

Scored across 9 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Each tool targets a specific resource (blog, post) and action (create, delete, get, list, publish, revert, update), making it easy for an agent to select the correct one. The separation between operations like publish_post and revert_post is particularly clear.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case throughout, such as create_post, delete_post, and list_blogs. There are no deviations in naming conventions, making the set predictable and readable for an agent.

Tool Count5/5

With 9 tools, this server is well-scoped for managing blogs and posts, covering essential operations without bloat. Each tool earns its place by addressing a specific need in the blogging workflow, from listing blogs to handling post lifecycles.

Completeness5/5

The tool surface provides complete CRUD/lifecycle coverage for the blogging domain. It includes create, read (get/list), update, and delete for posts, plus additional lifecycle actions like publish and revert, with no obvious gaps that would cause agent failures.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers