Skip to main content
Glama
jahzlariosa

WordPressMCP Server

by jahzlariosa

WordPressMCP Server

Buy Me a Coffee

Minimal MCP server that exposes WordPress REST tools over stdio. It supports posts, pages, categories, tags, users, plugins, and dynamic CPT routing via type/post_type.

Requirements

  • Node.js 18+ (fetch API required)

  • WordPress Application Password

  • Optional: MCP REST Helper plugin for Yoast SEO meta via REST: https://github.com/jahzlariosa/mcp-rest-helper

Setup

  1. Install dependencies:

npm install
  1. Create a .env file (see .env.example):

WP_URL="https://your-site.example"
WP_USER="your-username"
WP_APP_PASS="xxxx xxxx xxxx xxxx xxxx xxxx"
# Optional image generation
IMAGE_GEN_PROVIDER="openai"
OPENAI_API_KEY="your-openai-api-key"
OPENAI_BASE_URL="https://api.openai.com/v1"
OPENAI_IMAGE_MODEL="gpt-image-1"
  1. Run the server:

npm start

MCP Host Config (config.toml)

If your AI host uses a config.toml to register MCP servers, add an entry like:

[mcp.servers.WordPressMCP]
command = "node"
args = ["/absolute/path/to/server.mjs"]
env = { WP_URL = "https://your-site.example", WP_USER = "your-username", WP_APP_PASS = "xxxx xxxx xxxx xxxx xxxx xxxx" }

If your host does not support inline env, configure it to load .env or set WP_URL, WP_USER, and WP_APP_PASS in the process environment.

Notes

  • The server uses the stdio transport, so run it under your MCP host.

  • For custom post types, pass type or post_type with the CPT slug or REST base. Example: type: "announcement" routes to /wp-json/wp/v2/announcement.

  • create_post also supports status overrides like announcement:draft to target a CPT without a separate type arg.

  • Taxonomy tools are available for categories and tags (list_*, get_*, create_*, update_*, delete_*).

  • list_posts accepts categories, tags, categories_exclude, and tags_exclude filters; create_post/update_post accept categories and tags.

  • Media tools are available for uploads (upload_media) and inspection (list_media, get_media). Provide data_base64, a data_url, or source_url (optionally with source_headers), then use the returned media id as featured_media (or featured_image) on create_post, update_post, create_page, and update_page.

  • Optional: generate_image uses the configured provider (currently OpenAI) to return image data or URLs that can be fed into upload_media. Use response_format: "b64_json" or response_format: "url" as needed.

  • Yoast SEO meta can be set via a yoast object on create_post, update_post, create_page, and update_page (title, description, focus keyphrase, keyphrase synonyms, related keyphrases, canonical, robots noindex/nofollow, and OG/Twitter overrides). Premium fields require Yoast Premium to be active.

  • Premium Yoast fields available in yoast: focuskw_synonyms, focuskeywords, keywordsynonyms (provide the raw Yoast string/JSON format).

WordPress Helper Plugin

If you need to update Yoast SEO fields through the REST API, install the MCP REST Helper plugin from https://github.com/jahzlariosa/mcp-rest-helper. It registers the Yoast meta keys (including premium keyphrase fields when Yoast Premium is active) for all REST-enabled post types so MCP updates can persist.

You can install it from GitHub:

  • Download the zip from https://github.com/jahzlariosa/mcp-rest-helper/releases and unzip it into wp-content/plugins/.

  • Or clone directly: git clone https://github.com/jahzlariosa/mcp-rest-helper.git into wp-content/plugins/mcp-rest-helper.

Sponsorship

If this project helps, consider supporting it:

Project Layout

  • server.mjs: entrypoint, tool registration

  • src/config.mjs: env parsing and validation

  • src/wpClient.mjs: WordPress REST client

  • src/wpUtils.mjs: query/form helpers and post-type parsing

  • src/postTypeResolver.mjs: cached CPT resolver

  • src/tools/: tool registration modules

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Looking for Admin?

Admins can modify the Dockerfile, update the server description, and track usage metrics. If you are the server author, to access the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jahzlariosa/wordpress-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server