WordPress MCP Integration

by rizaardiyanto1412

2 stars
396 downloads
Not rated
GitHub

About

WordPress MCP Integration is a Model Context Protocol (MCP) server that enables interaction with WordPress sites through the WordPress REST API. It provides tools to create, retrieve, and update WordPress posts, and is intended for developers and AI agents that need to manage…

Details

Author
rizaardiyanto1412
GitHub stars
2
Downloads
396
Categories
Other

- Create new WordPress posts
- Retrieve existing WordPress posts
- Update existing WordPress posts
- Supports draft, publish, and private post statuses
- Configured via environment variables or request parameters
- Uses WordPress application passwords for secure authentication

Clone the repository, run npm install, then start the server with npm run server (optionally specifying a port number). Configure either environment variables (WORDPRESS_SITE_URL, WORDPRESS_USERNAME, WORDPRESS_PASSWORD) or pass credentials as request parameters when calling tools. Use JSON‑RPC over stdio (default) or a specific port to invoke the create_post, get_posts, and update_post tools.

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

1. Clone this repository
2. 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 URL
- WORDPRESS_USERNAME: WordPress username
- WORDPRESS_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 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')

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 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)

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 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'

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

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.