# WordPress MCP Server (`extremescrapes/wordpress-mcp-server`) Actor

A lightweight MCP server for WordPress automation. Enables REST API access for LLMs and agents to publish, update, and manage content programmatically using Application Passwords.

- **URL**: https://apify.com/extremescrapes/wordpress-mcp-server.md
- **Developed by:** [Extreme Scrapes](https://apify.com/extremescrapes) (community)
- **Categories:** MCP servers, Agents, AI
- **Features:** Limited permissions, Single-tenant, Server interface
- **Stats:** 25 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $50.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## WordPress MCP Server

A **Model Context Protocol (MCP)** server that provides direct access to the **WordPress REST API** — allowing LLMs, agents, and automation tools to perform structured actions such as publishing posts, fetching content, managing media, or retrieving site data.

This server runs on **Apify** as a **standby actor**, meaning it only activates when invoked via an MCP client.
It authenticates securely using **WordPress Application Passwords** and an **Apify token** passed in the URL query string.

For more details about MCP and how to connect servers, visit [mcp.apify.com](https://mcp.apify.com).

***

### 🌐 Connection URL

Connect to this MCP server at:

```text
https://extremescrapes--wordpress-mcp-server.apify.actor/mcp?token=apify_api_yourtokenhere
```

> ⚠️ **Important:**
> Replace `apify_api_yourtokenhere` with your personal Apify API token, which you can find under
> [Apify Console → Integrations](https://console.apify.com/account/integrations).
>
> The token **must** be appended as a query parameter (`?token=...`) — header-based authorization is **not used**.

***

### ⚙️ Client Configuration

To connect using an MCP-compatible client (like **MCP Inspector** or **LM Studio**), use:

```json
{
  "servers": {
    "wordpress": {
      "url": "https://extremescrapes--wordpress-mcp-server.apify.actor/mcp?token=apify_api_yourtokenhere",
      "headers": {
        "x-wp-url": "https://yourwordpresssite.com",
        "x-wp-username": "your_wp_username",
        "x-wp-password": "your_wp_app_password"
      }
    }
  }
}
```

> **Note:**
>
> - No `Authorization` header is required.
> - The `token` must be included in the URL query string.
> - WordPress credentials are passed as headers:
>
>   - `x-wp-url`: Your WordPress base URL (e.g., `https://example.com`)
>   - `x-wp-username`: Your WordPress username
>   - `x-wp-password`: Your WordPress Application Password

All credentials are used in-memory only — they are **never stored or logged**.

***

### 🔒 Authentication

This server uses two authentication layers:

1. **Apify Token (via URL)**

   - Required to activate the standby actor.
   - Example:

     ```
     https://extremescrapes--wordpress-mcp-server.apify.actor/mcp?token=apify_api_wLcRks0Rh6E5jCusmirDrhX7sYwvYM2ICXPM
     ```
   - You can generate or view your token in your [Apify account settings](https://console.apify.com/account/integrations).

2. **WordPress Application Passwords**

   - Used to securely authenticate with your WordPress REST API.
   - Generate under:
     **Dashboard → Users → Profile → Application Passwords**

***

### 🧠 Available Tools

The WordPress MCP Server exposes a structured set of tools (actions) that correspond to standard WordPress REST API endpoints.

<details>
<summary><b>Content Management</b></summary>

- **wp_list_posts**

  - Fetch a paginated list of posts.
  - Parameters:

    - `status` (string, optional): Filter (`publish`, `draft`, etc.)
    - `per_page` (number, optional): Posts per page
    - `page` (number, optional): Page number

- **wp_create_post**

  - Create and publish a new post.
  - Parameters:

    - `title` (string): Post title
    - `content` (string): Post content
    - `status` (string, optional): Post status (`publish`, `draft`, etc.)
    - `featured_media_url` (string, optional): URL of featured image

- **wp_update_post**

  - Update an existing post by ID.
  - Parameters:

    - `id` (number): Post ID
    - `title` (optional): New title
    - `content` (optional): Updated content
    - `status` (optional): New status

- **wp_delete_post**

  - Delete a post permanently.
  - Parameters:

    - `id` (number): Post ID

</details>

<details>
<summary><b>Media Management</b></summary>

- **wp_upload_media**

  - Upload an image or file to the WordPress Media Library.
  - Parameters:

    - `url` (string): Direct media file URL

</details>

<details>
<summary><b>Site Information</b></summary>

- **wp_get_site_info**

  - Retrieve general WordPress site metadata such as name, URL, and timezone.
  - Parameters: None

</details>

***

### 🧩 Example Usage

Once connected to this MCP server, your LLM or MCP-compatible client (like **ChatGPT**, **Claude**, or **MCP Inspector**) can directly call WordPress actions through structured tool invocations.

For example, in a chat with an LLM that has this server configured, you can simply say:

> **User:** Create a new post on my WordPress site titled *“Hello from MCP”* with the content *“This post was published automatically via the WordPress MCP Server.”*

The LLM will automatically invoke the `wp_create_post` tool behind the scenes, using your configured credentials and Apify token.

***

### 🧭 Links

- **Actor Page:** <https://apify.com/extremescrapes/wordpress-mcp-server>
- **WordPress REST API Docs:** <https://developer.wordpress.org/rest-api/reference/>
- **Apify MCP Docs:** <https://mcp.apify.com>

***

### ⚡ Key Features

- 🔗 Seamless connection to the WordPress REST API
- 🧱 100% MCP-compatible for LLM and agent integrations
- 🔐 Dual authentication (Apify token + WordPress Application Password)
- 💤 Hosted as a standby actor — runs only when invoked
- 🌍 Works with any WordPress installation that supports Application Passwords
- ⚙️ Lightweight and stateless — no data persistence

***

### 💡 Use Cases

- ✍️ **AI-Powered Blogging:**
  Automatically generate and publish blog posts from GPT or other LLMs.

- 📰 **Automated News Aggregation:**
  Fetch and publish daily news summaries to your WordPress site.

- 🖼️ **Media Library Automation:**
  Auto-upload featured images or assets from URLs or AI-generated sources.

- 🧾 **Bulk Post Management:**
  Use structured MCP workflows to edit, republish, or delete posts at scale.

- 🤖 **Agent-Based Publishing:**
  Allow AI agents to directly manage WordPress sites via the REST API.

- 📅 **Automated Scheduling:**
  Queue posts based on time, topic, or content category.

- 🧠 **Knowledge Base Creation:**
  Let LLMs populate a WordPress wiki or documentation site programmatically.

- 📈 **Cross-Platform Content Sync:**
  Mirror or syndicate content from Notion, Substack, or Medium into WordPress.

- 💬 **Comment Moderation & Insights:**
  Fetch, analyze, and summarize comments using LLMs for moderation or analytics.

- 🔍 **AI Search Indexing:**
  Query and structure WordPress posts for semantic search or recommendation systems.

***

This **WordPress MCP Server** bridges your WordPress site with the modern MCP ecosystem — making it effortless for AI systems, autonomous agents, or other services to manage and create content dynamically.

***

# Actor input Schema

## Actor input object example

```json
{}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("extremescrapes/wordpress-mcp-server").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("extremescrapes/wordpress-mcp-server").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call extremescrapes/wordpress-mcp-server --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,extremescrapes/wordpress-mcp-server"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/D5BjR6nPzaonPu4od/builds/t10sAVwbQNY1eZrCi/openapi.json
