WordPress MCP Integration
by rizaardiyanto1412
A streamlined Model Context Protocol (MCP) TypeScript SDK for WordPress integration. It enables interaction with WordPress sites through the WordPress REST API using the MCP protocol.
Last updated: N/A
WordPress MCP Integration
This is a streamlined version of the Model Context Protocol (MCP) TypeScript SDK that focuses specifically on WordPress integration. It enables interaction with WordPress sites through the WordPress REST API using the MCP protocol.
Overview
The WordPress MCP integration allows you to:
- Create new WordPress posts
- Retrieve existing WordPress posts
- Update existing WordPress posts
Installation
- Clone this repository
- Install dependencies:
npm install
Configuration
There are two ways to configure the WordPress integration:
1. Environment Variables
Set the following environment variables:
WORDPRESS_SITE_URL
: Your WordPress site URLWORDPRESS_USERNAME
: WordPress usernameWORDPRESS_PASSWORD
: WordPress application password
2. Request Parameters
Provide the credentials directly in the request parameters when calling the tools.
Security Note
For security, it's recommended to use WordPress application passwords instead of your main account password. You can generate an application password in your WordPress dashboard under Users → Security → Application Passwords.
Available Tools
create_post
Creates a new WordPress post.
Parameters:
siteUrl
: (optional if set in env) WordPress site URLusername
: (optional if set in env) WordPress usernamepassword
: (optional if set in env) WordPress application passwordtitle
: Post titlecontent
: Post contentstatus
: (optional) 'draft' | 'publish' | 'private' (default: 'draft')
Example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_post",
"arguments": {
"title": "My New Post",
"content": "Hello World!",
"status": "draft"
}
}
}
get_posts
Retrieves WordPress posts.
Parameters:
siteUrl
: (optional if set in env) WordPress site URLusername
: (optional if set in env) WordPress usernamepassword
: (optional if set in env) WordPress application passwordperPage
: (optional) Number of posts per page (default: 10)page
: (optional) Page number (default: 1)
Example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_posts",
"arguments": {
"perPage": 5,
"page": 1
}
}
}
update_post
Updates an existing WordPress post.
Parameters:
siteUrl
: (optional if set in env) WordPress site URLusername
: (optional if set in env) WordPress usernamepassword
: (optional if set in env) WordPress application passwordpostId
: ID of the post to updatetitle
: (optional) New post titlecontent
: (optional) New post contentstatus
: (optional) 'draft' | 'publish' | 'private'
Example:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "update_post",
"arguments": {
"postId": 123,
"title": "Updated Post Title",
"status": "publish"
}
}
}
Running the Server
Start the WordPress MCP server:
npm run server
This will start the server on stdio by default. To run it on a specific port (e.g., 3000):
npm run server 3000
Requirements
- Node.js 18.0.0 or higher
- WordPress site with REST API enabled
- WordPress application password for authentication
License
MIT License - See LICENSE file for details