blogger-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BLOGGER_MCP_HOME | No | Directory for credentials | ~/.config/blogger-mcp |
| BLOGGER_MCP_TOKEN | No | Cached token | $BLOGGER_MCP_HOME/token.json |
| BLOGGER_MCP_READONLY | No | Set to '1' to request the read-only scope | |
| BLOGGER_MCP_CLIENT_SECRETS | No | OAuth client JSON | $BLOGGER_MCP_HOME/client_secret.json |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_blogsA | List the blogs the authorized Google account can access. Use this to discover a |
| get_blogA | Look up one blog by its id, or by its public URL. Pass exactly one of |
| list_postsA | List posts in a blog.
|
| get_postA | Fetch one post in full, including its HTML body and sync metadata. Always call this before |
| search_postsA | Full-text search over the published posts of a blog. Note this only covers live posts; drafts are not indexed. To find a draft,
use |
| create_postA | Create a post. Creates a DRAFT by default. Publishing is a separate, explicit step: call
Blogger cannot store per-post metadata of your own (its |
| update_postA | Update a post, sending only the fields you pass (PATCH semantics). Omitted fields are left untouched, so you can change just the title without resending the body. Two things to know:
|
| publish_postA | Publish a draft post, making it publicly visible. This is the irreversible-feeling step — confirm with the human before calling it unless they already asked for publication. Pass |
| revert_postA | Take a live or scheduled post back to DRAFT, removing it from the blog. The content is kept; only its visibility changes. This is the safe way to pull a post down. |
| delete_postA | Delete a post. Treat this as irreversible and confirm with a human first.
If the goal is to take a post off the public blog, use |
| list_pagesA | List the static pages of a blog (About, Contact, ...). Pages differ from posts: no labels, no dates in the archive, and they do not appear in the blog's post feed. |
| get_pageA | Fetch one static page in full, including its HTML body. |
| create_pageA | Create a static page. Creates a DRAFT by default. Same content rules as |
| update_pageB | Update a static page, sending only the fields you pass (PATCH semantics). Set |
| delete_pageB | Delete a static page. Treat this as irreversible (see |
| list_commentsA | List comments on one post, or across the whole blog if Use |
| moderate_commentA | Moderate one comment.
The Blogger API cannot create comments, so replying to a commenter has to be done by hand in the Blogger UI. |
| get_pageviewsA | Blog-level pageview counts. Blogger only exposes three coarse buckets and the numbers are approximate — treat them as a rough signal, not analytics. There is no per-post breakdown. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Each tool targets a distinct resource and action: blogs, posts, pages, comments, and pageviews are cleanly separated. The post lifecycle tools (create/update/publish/revert/delete) are especially well-delineated, with descriptions clarifying the overlap between revert and delete.
Tool names follow a consistent verb_noun pattern: list_*, get_*, create_*, update_*, delete_*, plus a few action-specific verbs like publish_post, revert_post, and moderate_comment. The pattern makes the set predictable and easy to navigate.
18 tools is slightly above the typical sweet spot, but each tool covers a distinct Blogger resource or lifecycle step. The count is justified by the breadth of the domain: posts, pages, comments, blogs, and pageviews.
The post lifecycle is fully covered, and pages and comments have solid coverage. Minor gaps exist, such as no way to unpublish a page and no comment creation, but the API limitations are explicitly documented and agents can work around them.