Introducing WordPress MCP v1.0.0: Connect ChatGPT to WordPress with MCP
Today I am releasing WordPress MCP v1.0.0, the first public release of an open-source integration that connects ChatGPT to WordPress through the Model Context Protocol (MCP).
GitHub:
https://github.com/jooservices/wordpress-mcp
Release:
https://github.com/jooservices/wordpress-mcp/releases/tag/v1.0.0
WordPress MCP allows ChatGPT to securely interact with one or multiple WordPress websites to search content, read posts and pages, create drafts, update content, manage comments, upload media, and perform other WordPress operations directly from a ChatGPT conversation.
The project is designed around a simple architecture:
ChatGPT
│
│ MCP / HTTPS
▼
MCP Server
│
│ HTTPS / Scoped API
▼
WordPress Plugin
│
▼
WordPress Core
Instead of exposing unrestricted WordPress credentials directly to ChatGPT, the WordPress plugin creates scoped connections while the MCP server provides the MCP tools, authentication and transport used by ChatGPT.
Table of Contents
- What is WordPress MCP?
- Requirements
- Features in v1.0.0
- Installing the WordPress Plugin
- Creating a WordPress Connection
- WordPress Connection Scopes
- Deploying the MCP Server
- HTTPS with Caddy
- Using ngrok for Testing
- Connecting the MCP Server to ChatGPT
- Mixed Authentication
- Multi-Site WordPress Support
- Audit Log
- Content Recovery
- Security Recommendations
- Local Development
- Development Quality
- Example Workflow
- Why I Built WordPress MCP
- Open Source
What is WordPress MCP?
WordPress MCP consists of two components.
JOOservices ChatGPT Connector
The WordPress plugin runs inside WordPress and provides a scoped REST API under:
/wp-json/chatgpt-connector/v1/
It is responsible for:
- connection management
- WordPress permissions and scopes
- connection tokens
- rate limiting
- audit logging
- content operations
- comment moderation
- media access
- protecting publishing and destructive operations
Connection tokens are shown only once when they are created and are stored in WordPress as SHA-256 hashes.
MCP Server
The MCP server sits between ChatGPT and WordPress.
It provides:
- Streamable HTTP MCP transport
- 14 WordPress-specific MCP tools
- OAuth 2.1 authentication
- Mixed authentication mode
- multi-site WordPress support
- Docker deployment
- HTTPS deployment with Caddy
- optional ngrok deployment for testing
A single MCP server can connect ChatGPT to multiple WordPress websites.
Requirements
For v1.0.0 you need:
- WordPress 6.4 or newer
- PHP 8.3 or newer
- Node.js 22 or newer for the MCP server
- Docker and Docker Compose for the recommended deployment
- a ChatGPT account with Developer Mode
- a public HTTPS URL for the MCP server when connecting it to ChatGPT
WordPress can continue using any MySQL or MariaDB version supported by WordPress.
Features in v1.0.0
WordPress MCP v1.0.0 provides 14 MCP tools.
Site management
wordpress_list_sites
wordpress_get_site
These tools allow ChatGPT to discover which WordPress websites are configured.
This is especially useful when a single MCP server manages multiple sites.
Posts and pages
wordpress_search_content
wordpress_get_content
wordpress_create_content
wordpress_update_content
wordpress_delete_content
ChatGPT can search, read, create, update and delete WordPress posts and pages.
Creating content defaults to draft.
Publishing requires a separate WordPress connection scope, which means a connection may be allowed to create drafts while being completely prevented from publishing them.
Deletion also defaults to moving content to the WordPress Trash.
Permanent deletion requires an explicit force operation.
Comments
wordpress_list_comments
wordpress_get_comment
wordpress_moderate_comment
ChatGPT can inspect WordPress comments and perform moderation operations such as:
- approve
- hold
- mark as spam
The API intentionally excludes author email addresses from comment responses to reduce exposure of personally identifiable information.
Taxonomies
wordpress_list_terms
ChatGPT can retrieve WordPress categories and tags.
This is useful when creating or updating content because ChatGPT can work with the site’s real taxonomy instead of guessing category or tag names.
Media
wordpress_list_media
wordpress_get_media
wordpress_upload_media
ChatGPT can inspect media and upload files to WordPress.
Media uploads use base64 data.
v1.0.0 limits uploaded files to 10 MB decoded, while the MCP server accepts a maximum JSON request body of 15 MB.
Installing the WordPress Plugin
The easiest way to install v1.0.0 is to download the pre-built WordPress plugin from the GitHub release.
Download:
https://github.com/jooservices/wordpress-mcp/releases/download/v1.0.0/wordpress-chatgpt-1.0.0.zip
Then:
- Open WordPress admin.
- Go to Plugins → Add Plugin.
- Select Upload Plugin.
- Upload
wordpress-chatgpt-1.0.0.zip. - Install and activate JOOservices ChatGPT Connector.
Developers can alternatively install directly from the repository.
git clone https://github.com/jooservices/wordpress-mcp.git
cd wordpress-mcp/packages/wordpress-plugin
composer install --no-dev
Copy the plugin directory into:
wp-content/plugins/wordpress-chatgpt
and activate it from WordPress.
Creating a WordPress Connection
After activating the plugin, open:
WordPress Admin
→ ChatGPT
→ Create connection
Select only the permissions that ChatGPT should have.
The plugin generates a connection token.
Copy this token immediately.
The token is displayed only once and is not stored as plaintext by the WordPress plugin.
You will use it when configuring the MCP server.
WordPress Connection Scopes
Permissions are granted per connection.
Site
site.read
Allows access to basic WordPress site information.
Posts
posts.read
posts.create
posts.update
posts.publish
posts.delete
Pages
pages.read
pages.create
pages.update
pages.publish
pages.delete
Comments
comments.read
comments.moderate
Media
media.read
media.upload
This makes it possible to create very restricted integrations.
For example, a connection used primarily for writing articles could have:
site.read
posts.read
posts.create
posts.update
media.read
media.upload
without granting:
posts.publish
posts.delete
ChatGPT could then prepare and update articles but could neither publish nor delete them.
This is the configuration I recommend for most content workflows.
Deploying the MCP Server
The recommended production deployment uses Docker.
Clone the repository:
git clone https://github.com/jooservices/wordpress-mcp.git
cd wordpress-mcp
Create the production environment file:
cp .env.prod.example .env.prod
For a single WordPress website, configure:
WORDPRESS_URL=https://your-wordpress-site.com
WORDPRESS_CONNECTION_TOKEN=YOUR_CONNECTION_TOKEN
MCP_PUBLIC_URL=https://mcp.example.com
MCP_AUTH_MODE=mixed
Then start the MCP server:
make prod-up
By default, the MCP application listens on port 3000.
The MCP endpoint is:
https://mcp.example.com/mcp
and the health endpoint is:
https://mcp.example.com/health
HTTPS with Caddy
ChatGPT requires the remote MCP server to be accessible over HTTPS.
WordPress MCP includes a production Caddy configuration.
Configure:
MCP_DOMAIN=mcp.example.com
[email protected]
Then run:
make prod-https
Caddy handles HTTPS termination and Let’s Encrypt certificates.
For a production deployment, this is preferable to exposing the Node.js MCP server directly to the Internet.
Using ngrok for Testing
For development or temporary testing you can expose the MCP server through ngrok.
Configure:
NGROK_AUTHTOKEN=YOUR_NGROK_TOKEN
MCP_PUBLIC_URL=https://your-ngrok-domain.example
Then run:
make prod-tunnel
ngrok is useful for development and testing, but I recommend using a normal HTTPS endpoint for permanent production deployments.
Connecting the MCP Server to ChatGPT
Once the WordPress plugin and public MCP server are running, the next step is connecting the MCP endpoint to ChatGPT.
Enable Developer Mode in ChatGPT.
Then add a new connector using:
Name:
WordPress
Connector URL:
https://YOUR-MCP-HOST/mcp
Authentication:
Mixed
The connector URL must point to the /mcp endpoint and must correspond to the public URL configured by MCP_PUBLIC_URL.
Once the connector is created, enable it in a ChatGPT conversation.
You can then use normal language instead of manually calling individual MCP tools.
For example:
Show me my five latest WordPress posts.
or:
Find all posts about Laravel.
or:
Create a draft article titled "PHP 8.5 Features".
or:
Show me comments waiting for moderation.
or:
Upload this image to WordPress and use it for the article.
ChatGPT decides which WordPress MCP tools are necessary to complete the request.
Mixed Authentication
The recommended production authentication mode is:
MCP_AUTH_MODE=mixed
Mixed mode separates read operations from write operations.
Read tools can be discovered and used without requiring an OAuth link.
Write operations require OAuth authorization.
For example:
Show my latest posts
is a read request.
But:
Create a new draft
or:
Update post 123
or:
Delete post 123
requires authorization.
This provides a better experience than forcing authentication for every read operation while still protecting operations that modify WordPress.
WordPress MCP also supports:
oauth
static
none
oauth requires OAuth for all MCP requests.
static uses a static Bearer token and is mainly useful for compatible MCP clients or development scenarios.
none disables MCP authentication and should only be used during local development.
Never expose an unauthenticated MCP server publicly.
Multi-Site WordPress Support
One of the main features of v1.0.0 is native multi-site configuration at the MCP server level.
This does not mean WordPress Multisite specifically.
It means one MCP server can manage multiple independent WordPress installations.
Architecture:
┌─ WordPress Site A
│
ChatGPT → MCP Server ──┼─ WordPress Site B
│
└─ WordPress Site C
Instead of WORDPRESS_URL and WORDPRESS_CONNECTION_TOKEN, configure WORDPRESS_SITES.
Example:
WORDPRESS_SITES=[
{
"id": "blog-a",
"name": "Blog A",
"url": "https://a.example.com",
"token": "TOKEN_A"
},
{
"id": "blog-b",
"name": "Blog B",
"url": "https://b.example.com",
"token": "TOKEN_B"
}
]
Each WordPress installation has:
- its own plugin installation
- its own connection
- its own token
- its own scopes
ChatGPT can discover configured sites with:
wordpress_list_sites
and then target a particular WordPress installation.
For example:
Show the latest five posts from Blog A.
or:
Create this article as a draft on Blog B.
This allows a single ChatGPT connector to operate across several WordPress websites without deploying a separate MCP server for every site.
Audit Log
Operations that modify WordPress are recorded by the plugin.
Open:
WordPress Admin
→ ChatGPT
→ Audit Log
to inspect mutating operations performed through the connector.
This is particularly useful when ChatGPT is allowed to:
- create content
- update content
- delete content
- moderate comments
- upload media
Content Recovery
WordPress MCP relies on standard WordPress revisions when content is updated.
If an incorrect update occurs, open the post in WordPress and use:
Post
→ Revisions
to restore an earlier version.
Deletion also uses WordPress Trash by default rather than immediately deleting content permanently.
These defaults intentionally make AI-assisted content management less destructive.
Security Recommendations
For production installations:
- always use HTTPS
- use
mixedoroauthMCP authentication - keep
MCP_AUTH_DISABLED=false - grant only the WordPress scopes actually required
- avoid giving publishing permission unless necessary
- avoid giving deletion permission unless necessary
- store WordPress connection tokens in environment variables or a secrets manager
- never commit connection tokens into Git
- rotate a connection token if it may have been compromised
Each WordPress website should use its own connection token.
WordPress MCP never exposes those site tokens through wordpress_list_sites or the MCP /health endpoint.
Local Development
A complete local development environment is included.
Create the environment file:
cp .env.example .env
Start the stack:
make up
The development environment provides:
WordPress:
http://localhost:8080
MCP:
http://localhost:3000/mcp
Health:
http://localhost:3000/health
The Docker development stack includes:
- MariaDB 11.4
- WordPress with PHP 8.3
- Node.js 22 MCP server
Additional commands include:
make install
make ci
make test
make integration
make down
make plugin-release
All development and CI commands run through Docker.
Development Quality
The v1.0.0 CI pipeline checks both sides of the integration.
For the WordPress plugin:
- Laravel Pint
- PHPCS
- PHPStan
- PHPUnit
For the MCP server:
- TypeScript build
- Vitest
Integration tests are also available for testing the complete MCP-to-WordPress flow.
Example Workflow
A practical workflow can look like this:
You:
Find my existing posts about Laravel repositories.
ChatGPT:
→ searches WordPress using MCP
→ returns matching posts
You:
Create a new article based on our discussion,
but save it as a draft.
ChatGPT:
→ creates the post
→ WordPress keeps it as draft
You:
Add this image and update the article.
ChatGPT:
→ uploads media
→ updates the post
You:
Show me the final content before publishing.
ChatGPT:
→ reads the resulting WordPress post
→ returns it for review
If the connection does not have posts.publish, ChatGPT cannot publish the article even if asked to.
Publishing remains under WordPress permission control.
Why I Built WordPress MCP
The goal of this project is not simply to make WordPress callable through an API.
WordPress already has APIs.
The goal is to provide a controlled bridge between conversational AI and WordPress where:
- ChatGPT receives purpose-built tools rather than unrestricted API access
- WordPress remains responsible for WordPress permissions
- connections use explicit scopes
- write operations can be protected separately from reads
- operations can be audited
- multiple WordPress websites can share one MCP server
- content creation defaults to safer WordPress behavior such as drafts and Trash
The result is a workflow where WordPress can become part of a ChatGPT conversation without giving the AI unrestricted control over the website.
Open Source
WordPress MCP is open source under the MIT license.
Source code:
https://github.com/jooservices/wordpress-mcp
v1.0.0 release:
https://github.com/jooservices/wordpress-mcp/releases/tag/v1.0.0
Documentation:
https://github.com/jooservices/wordpress-mcp/tree/v1.0.0/docs
Issues and contributions are welcome through GitHub.
This is the first public release, and future releases will continue improving WordPress coverage, MCP integration, security and developer experience.

