Blogger MCP Server
Provides comprehensive access to the Google Blogger API v3, enabling AI agents to manage blog metadata, search and retrieve posts, and handle the full post lifecycle from draft creation to publication and deletion.
Click on "Deploy 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., "@Blogger MCP Server list my latest blog 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.
Blogger MCP Server
An MCP (Model Context Protocol) server that provides Claude and other MCP-compatible AI assistants with full access to the Google Blogger API v3. Supports reading, creating, updating, publishing, and deleting blog posts through natural language.
Features
Blog management — List all blogs under your account, get blog metadata
Post lifecycle — Create drafts, edit, publish, revert to draft, delete
Read operations — List posts, retrieve individual posts, search by keyword
Draft-first workflow — Posts are created as drafts by default for safety, then published explicitly
Dual authentication — API Key for read-only access, OAuth 2.0 for full read/write access
File-based content — Load post content from local HTML files (recommended for content > 10KB)
Automatic token management — OAuth tokens are cached, refreshed, and persisted automatically to
~/.config/mcp-blogger/Default blog — Set
DEFAULT_BLOG_IDto skip passingblogIdon every tool call
Related MCP server: MCP Blogger Posting Server
Project Structure
mcp-blogger/
├── index.js # Main MCP server — tool definitions and handlers
├── oauth.js # OAuth 2.0 authentication flow
└── package.json # Project metadata and dependenciesPrerequisites
Node.js >= 22
A Google Cloud project with the Blogger API enabled
A Blogger API Key (for read operations) and/or OAuth 2.0 credentials (for write operations)
Installation
git clone https://github.com/aleck31/mcp-blogger.git
cd mcp-blogger
npm installAuthentication
This server supports two authentication methods. At least one must be configured:
API Key only — read-only operations (
get_blog_info,list_posts,get_post,search_posts)OAuth only — full read and write operations
Both — API Key for reads, OAuth for writes
1. Get a Blogger API Key (read-only access)
Go to the Google Cloud Console
Create a project (or select an existing one)
Enable the Blogger API v3 under APIs & Services > Library
Go to APIs & Services > Credentials
Click Create Credentials > API key
Copy the generated API key
2. Get OAuth 2.0 Credentials (read + write access)
In the same Google Cloud project, go to APIs & Services > Credentials
Click Create Credentials > OAuth client ID
Select Web application as the application type
Add
http://localhost:3000/oauth/callbackto Authorized redirect URIsCopy the Client ID and Client Secret
3. OAuth Flow (automatic)
On the first write operation, the server will automatically:
Start a temporary local HTTP server on port 3000
Open your browser to the Google OAuth consent page
After you grant access, capture the authorization code via the callback URL
Exchange the code for access and refresh tokens
Persist tokens to
~/.config/mcp-blogger/tokens.json
Subsequent write operations reuse cached tokens and refresh them automatically when expired. The OAuth flow times out after 5 minutes if not completed.
Configuration
Set the following environment variables in your MCP client configuration:
Variable | Required | Description |
| For read ops | Google Blogger API key |
| For write ops | OAuth 2.0 Client ID |
| For write ops | OAuth 2.0 Client Secret |
| No | Default Blog ID, used when |
MCP Config Example
Add the server to your Agent MCP configuration file (such as mcp_config.json):
{
"mcpServers": {
"blogger": {
"command": "npx",
"args": ["-y", "mcp-blogger"],
"env": {
"BLOGGER_API_KEY": "your-api-key",
"GOOGLE_CLIENT_ID": "your-client-id",
"GOOGLE_CLIENT_SECRET": "your-client-secret",
"DEFAULT_BLOG_ID": "your-default-blog-id"
}
}
}
}Claude Code
Add the server via the Claude Code CLI:
claude mcp add blogger -- npx -y mcp-blogger \
-e BLOGGER_API_KEY=your-api-key \
-e GOOGLE_CLIENT_ID=your-client-id \
-e GOOGLE_CLIENT_SECRET=your-client-secret \
-e DEFAULT_BLOG_ID=your-default-blog-idTools
All tools that accept blogId will fall back to DEFAULT_BLOG_ID if set.
Category | Tool | OAuth | Description |
Account |
| Yes | List all blogs owned by the authenticated user |
Read |
| No | Get blog metadata by URL or ID |
Read |
| No | List published posts |
Read |
| No | Get a specific post (supports drafts with OAuth) |
Read |
| No | Search posts by keyword |
Write |
| Yes | List draft posts |
Write |
| Yes | Create a post (draft by default). Use |
Write |
| Yes | Publish a draft or revert a published post to draft |
Write |
| Yes | Update a post (supports both published and draft) |
Write |
| Yes | Delete a post |
Typical Workflow
list_blogs # Find your blog ID
create_post (draft by default) # Write content
get_post # Preview the draft
update_post # Revise if needed
change_post_status action=publish # Go live
change_post_status action=revert # Unpublish if neededDependencies
@modelcontextprotocol/sdk— MCP server frameworkgoogleapis— Google API client (Blogger API v3)express— Local HTTP server for OAuth callbackopen— Opens browser for OAuth consent
License
MIT
Available Tools
10 toolschange_post_statusB
Publish a draft post or revert a published post to draft
Inputs: postId (required), action (required), blogId.
create_postC
Create a new blog post
Inputs: title (required), blogId, content, content_file, +2 more.
delete_postC
Delete a blog post
Inputs: postId (required), blogId.
get_blog_infoB
Get information about a blog by URL or ID
Inputs: blogUrl (required).
get_postC
Get a specific post by ID
Inputs: postId (required), blogId.
list_blogsA
List all blogs for the authenticated user (OAuth required)
Inputs: no named parameters.
list_draftsB
List draft posts from a blog
Inputs: blogId, maxResults.
list_postsC
List posts from a blog
Inputs: blogId, maxResults.
search_postsC
Search for posts in a blog
Inputs: query (required), blogId.
update_postC
Update an existing blog post
Inputs: postId (required), blogId, title, content, +2 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose targeting specific resources and actions: list_blogs vs. get_blog_info, list_posts vs. search_posts vs. list_drafts, and create/update/delete/change_status for posts. No ambiguity exists between tools.
All tools follow a consistent verb_noun pattern with snake_case (e.g., create_post, list_blogs, update_post). The naming is predictable and uniform across all 10 tools.
With 10 tools, the server is well-scoped for a blogging platform, covering blog management, post CRUD operations, and listing/searching functions. Each tool earns its place without bloat.
The tool set provides complete CRUD/lifecycle coverage for the blogging domain: create, get, update, delete, and status change for posts, plus blog listing/info and post listing/searching. No obvious gaps exist for core workflows.
Related MCP Connectors
Create, edit, organize, publish, and configure JustBlogged blogs from MCP clients.
Publish and schedule Bluesky posts and threads from your AI assistant.
Manage a WordPress site from your AI assistant: read, search, propose edits, Search Console data.
Run your company blog for SEO and AI search from your AI assistant.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn intermediary server that enables AI models to interact with Google's Blogger platform, automating the creation and management of blogs, posts, and labels through the Blogger API.12 npm1MIT
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to automate Google Blogger content management by providing tools for single and batch post creation via the Blogger API. It supports secure OAuth2 authentication and allows for seamless blog integration through the Model Context Protocol.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI models to interact with Google Blogger blogs, manage posts, labels, and retrieve blog information via API key or OAuth2.8 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with WordPress blog systems for automated content management and publishing via the WordPress REST API.16 npm1MIT