stefans71_wordpress-mcp-server
Language:
JavaScript
Stars:
3
Forks:
2
WordPress MCP Server
A Model Context Protocol (MCP) server that enables AI assistants to interact with WordPress sites through the WordPress REST API. This server provides tools for managing WordPress content programmatically, including creating, retrieving, and updating posts.
Features
- Create new WordPress posts with customizable titles, content, and status
- Retrieve WordPress posts with pagination support
- Update existing posts with new content or status
- Secure authentication using WordPress application passwords
- Error handling and detailed response messages
Prerequisites
- Node.js v18 or higher
- A WordPress site with REST API enabled
- WordPress application password for authentication
Installation
- Clone this repository:
git clone https://github.com/stefans71/wordpress-mcp-server.git
cd wordpress-server
- Install dependencies:
npm install
- Build the server:
npm run build
WordPress Configuration
Before using the server, you need to set up your WordPress site:
- Ensure your WordPress site has REST API enabled (enabled by default in WordPress 4.7+)
- Create an application password:
- Log in to your WordPress admin panel
- Go to Users → Profile
- Scroll down to "Application Passwords"
- Enter a name for the application (e.g., "MCP Server")
- Click "Add New Application Password"
- Copy the generated password (you won't be able to see it again)
MCP Configuration
Add the server to your MCP settings file (usually located at ~/AppData/Roaming/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
):
{
"mcpServers": {
"wordpress": {
"command": "node",
"args": ["path/to/wordpress-server/build/index.js"]
}
}
}
Available Tools
1. create_post
Creates a new WordPress post.
Parameters:
- `siteUrl` (required): Your WordPress site URL
username
(required): WordPress usernamepassword
(required): WordPress application passwordtitle
(required): Post titlecontent
(required): Post contentstatus
(optional): Post status ('draft', 'publish', or 'private', defaults to 'draft')
Example:
{
"tool": "create_post",
"siteUrl": "https://example.com",
"username": "admin",
"password": "xxxx xxxx xxxx xxxx",
"title": "My First Post",
"content": "Hello, world!",
"status": "draft"
}
2. get_posts
Retrieves WordPress posts with pagination.
Parameters:
siteUrl
(required): Your WordPress site URLusername
(required): WordPress usernamepassword
(required): WordPress application passwordperPage
(optional): Number of posts per page (default: 10)page
(optional): Page number (default: 1)
Example:
{
"tool": "get_posts",
"siteUrl": "https://example.com",
"username": "admin",
"password": "xxxx xxxx xxxx xxxx",
"perPage": 5,
"page": 1
}
3. update_post
Updates an existing WordPress post.
Parameters:
siteUrl
(required): Your WordPress site URLusername
(required): WordPress usernamepassword
(required): WordPress application passwordpostId
(required): ID of the post to updatetitle
(optional): New post titlecontent
(optional): New post contentstatus
(optional): New post status ('draft', 'publish', or 'private')
Example:
{
"tool": "update_post",
"siteUrl": "https://example.com",
"username": "admin",
"password": "xxxx xxxx xxxx xxxx",
"postId": 123,
"title": "Updated Title",
"content": "Updated content",
"status": "publish"
}
Response Format
All tools return responses in the following format:
Success Response
{
"success": true,
"data": {
// WordPress API response data
}
}
Error Response
{
"success": false,
"error": "Error message here"
}
## Error Handling
The server handles various types of errors:
- Invalid request format
- Missing required parameters
- WordPress API errors
- Authentication failures
- Network issues
Each error response includes a descriptive message to help diagnose the issue.
Security Considerations
- Always use HTTPS URLs for your WordPress site
- Use application passwords instead of your main WordPress password
- Keep your application passwords secure and don't share them
- Consider using WordPress roles and capabilities to limit access
- Regularly rotate application passwords
Development
To contribute to the development:
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests (when available)
- Submit a pull request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributing
Contributions are welcome! Please feel free to submit a Pull Request. By contributing to this project, you agree to abide by its terms.