The whole surface is create, read and update on posts — no media, no taxonomies, no comments — and the create path defaults to `draft`, so an over-eager model produces something you review rather than something readers see. Because credentials can ride in the request instead of the environment, one server can serve several sites, at the cost of putting passwords in tool arguments.
A small MCP server for WordPress that talks to a site over its REST API. It covers the writing loop and nothing more: create a post, list existing posts, update one that is already there.
- A new post created with title, content and a status of `draft`, `publish` or `private`, defaulting to `draft` — `create_post`
- Existing posts retrieved with page and per-page paging, 10 per page by default — `get_posts`
- An existing post updated by id, changing title, content or status — `update_post`
- Credentials taken either from the environment or passed per request, so one server can address more than one site
- Works the same on Windows, macOS and Linux
A WordPress site with the REST API enabled, and an application password rather than your account password — generate it under Users → Security → Application Passwords. `WORDPRESS_SITE_URL`, `WORDPRESS_USERNAME` and `WORDPRESS_PASSWORD` go in the server entry, or the same three values travel as `siteUrl`, `username` and `password` in each request. Node.js 20.0.0 or higher; install is a clone plus `npm install` and `npm run build`, then launching `build/index.js` with node. The package.json names it `wordpress-server` at 1.0.0.
Build from source — clone the repository and build it, then point your client at the binary
