wordpress-mcp-server
by: stefans71
This MCP server let you automate interactions with Wordpress
📌Overview
Purpose: To enable seamless integration and interaction with WordPress sites using a Model Context Protocol (MCP) server.
Overview: The WordPress MCP server facilitates communication with WordPress by leveraging the WordPress REST API. It allows users to create, retrieve, and update posts efficiently via the JSON-RPC 2.0 protocol.
Key Features:
-
Create Post: Enables users to create new posts on WordPress with customizable parameters such as title, content, and status.
-
Get Posts: Allows for the retrieval of existing WordPress posts, with options to specify pagination and the number of posts per page.
-
Update Post: Provides the capability to update existing posts by modifying details like title, content, and status based on the post ID.
WordPress MCP Server
A Model Context Protocol (MCP) server for WordPress integration, compatible with Windows, macOS, and Linux.
Overview
This MCP server enables interaction with WordPress sites through the WordPress REST API, providing tools for creating, retrieving, and updating posts using the JSON-RPC 2.0 protocol.
Installation
- Clone the repository.
- Install dependencies:
npm install
- Build the project:
npm run build
Configuration
Add the server to your MCP settings file with environment variables for WordPress credentials:
{
"mcpServers": {
"wordpress": {
"command": "node",
"args": ["path/to/build/index.js"],
"env": {
"WORDPRESS_SITE_URL": "https://your-wordpress-site.com",
"WORDPRESS_USERNAME": "your-username",
"WORDPRESS_PASSWORD": "your-app-password"
}
}
}
}
Environment variables:
WORDPRESS_SITE_URL
: Your WordPress site URL.WORDPRESS_USERNAME
: WordPress username.WORDPRESS_PASSWORD
: WordPress application password.
Available Methods
create_post
Creates a new WordPress post.
Parameters:
siteUrl
: (optional if set in env) WordPress site URL.username
: (optional if set in env) WordPress username.password
: (optional if set in env) WordPress application password.title
: Post title.content
: Post content.status
: (optional) 'draft' | 'publish' | 'private' (default: 'draft').
get_posts
Retrieves WordPress posts.
Parameters:
siteUrl
: (optional if set in env) WordPress site URL.username
: (optional if set in env) WordPress username.password
: (optional if set in env) WordPress application password.perPage
: (optional) Number of posts per page (default: 10).page
: (optional) Page number (default: 1).
update_post
Updates an existing WordPress post.
Parameters:
siteUrl
: (optional if set in env) WordPress site URL.username
: (optional if set in env) WordPress username.password
: (optional if set in env) WordPress application password.postId
: ID of the post to update.title
: (optional) New post title.content
: (optional) New post content.status
: (optional) 'draft' | 'publish' | 'private'.
Security Note
For security, it's recommended to use WordPress application passwords instead of your main account password.
Example Usage
Using environment variables:
{
"jsonrpc": "2.0",
"id": 1,
"method": "create_post",
"params": {
"title": "My New Post",
"content": "Hello World!",
"status": "draft"
}
}
Without environment variables:
{
"jsonrpc": "2.0",
"id": 1,
"method": "create_post",
"params": {
"siteUrl": "https://your-wordpress-site.com",
"username": "your-username",
"password": "your-app-password",
"title": "My New Post",
"content": "Hello World!",
"status": "draft"
}
}
Requirements
- Node.js 20.0.0 or higher.
- WordPress site with REST API enabled.
- WordPress application password for authentication.
License
MIT License - See LICENSE file for details.