home / mcp / blogger mcp server

Blogger MCP Server

Provides full read/write access to Google Blogger API v3 for managing blogs and posts via natural language.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "aleck31-mcp-blogger": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-blogger"
      ],
      "env": {
        "BLOGGER_API_KEY": "YOUR_API_KEY",
        "DEFAULT_BLOG_ID": "YOUR_DEFAULT_BLOG_ID",
        "GOOGLE_CLIENT_ID": "YOUR_CLIENT_ID",
        "GOOGLE_CLIENT_SECRET": "YOUR_CLIENT_SECRET"
      }
    }
  }
}

You can manage Google Blogger content programmatically with this MCP server. It exposes Blogger API v3 capabilities to read, create, update, publish, and delete blog posts through natural language, while supporting safe drafting workflows and token management for authentication.

How to use

You integrate this MCP server into your client or assistant to perform blogger operations. Start by configuring authentication so you can read content or fully manage blogs and posts. Then you can list your blogs, inspect blog metadata, preview posts, create drafts, publish posts, or revert a published post back to draft. If you want to automate workflows, create content as drafts first and publish explicitly when ready.

How to install

Prerequisites: Node.js 22 or higher, and a Google Cloud project with the Blogger API enabled.

Install steps you follow locally:

Step-by-step commands

# Clone the project
git clone https://github.com/aleck31/mcp-blogger.git
cd mcp-blogger

# Install dependencies
npm install

Configure and run the MCP server using the example container configuration shown below. This example uses API key reads and OAuth for writes, and sets a default blog for convenience.

{
  "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"
      }
    }
  }
}

OAuth flow for write permissions

If you require write access, the server supports an automatic OAuth flow. On your first write operation, it will start a temporary local server, open a browser for consent, capture the authorization code, exchange it for tokens, and persist them to a local tokens file. Subsequent writes reuse cached tokens and refresh automatically.

How the server authenticates

Two authentication methods are supported. You can use an API Key for read-only access, OAuth 2.0 for full read/write access, or both. The system falls back to API Key for reads and OAuth for writes if both are configured.

Notes on default blog and drafts

Set DEFAULT_BLOG_ID to skip passing blogId on every tool call. New posts are created as drafts by default for safety and must be published explicitly.

Troubleshooting

If OAuth flow times out, retry the operation. Ensure your Google Cloud project has the Blogger API enabled and that credentials are correctly configured as environment variables.

Security considerations

Keep your API key and OAuth credentials secure. Do not expose credentials in client configurations sent to untrusted environments. Tokens are persisted locally and refreshed automatically.

Typical workflow

1) List blogs to discover your blog ID. 2) Create a post as draft. 3) Preview the draft with read access. 4) Update content if needed. 5) Publish the draft to make it live. 6) If necessary, revert a live post back to draft.

Dependencies and tools

This server relies on the MCP framework and Google API client to interact with Blogger API v3.

License

MIT license.

Available tools

list_blogs

List all blogs owned by the authenticated user

get_blog_info

Get blog metadata by URL or ID

list_posts

List published posts

get_post

Get a specific post, including drafts when using OAuth

search_posts

Search posts by keyword

list_drafts

List draft posts

create_post

Create a post, drafts by default; use content_file for large content

change_post_status

Publish a draft or revert a published post to draft

update_post

Update a post, for both published and draft states

delete_post

Delete a post