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

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