jpollock/wpengine-mcp-ts
If you are the rightful owner of wpengine-mcp-ts and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
This is a TypeScript implementation of an MCP server for the WP Engine API, providing tools and resources for managing WP Engine accounts, sites, installs, and backups.
WP Engine MCP Server
This is a TypeScript implementation of an MCP server for the WP Engine API. It provides tools and resources for interacting with WP Engine accounts, sites, installs, and backups. The server supports both local (stdio) and remote (HTTP) transports.
Features
- Get account information
- Get site information
- Get install information
- Get and create backups
- Support for both local and remote MCP connections
- HTTP transport with authentication
- Comprehensive logging and error handling
Installation
- Clone this repository
- Install dependencies:
npm install
- Build the server:
npm run build
Configuration
The server requires WP Engine API credentials to authenticate with the WP Engine API. You can obtain these credentials from the WP Engine Portal's API Access page: https://my.wpengine.com/api_access
Set the following environment variables:
WP_ENGINE_API_USERNAME
: Your WP Engine API usernameWP_ENGINE_API_PASSWORD
: Your WP Engine API password
Usage
Local MCP Server (stdio transport)
For use with local MCP clients like Claude Desktop:
npm run start:stdio
Or with environment variables:
WP_ENGINE_API_USERNAME="your-username" WP_ENGINE_API_PASSWORD="your-password" npm run start:stdio
Remote MCP Server (HTTP transport)
For remote access via HTTP with environment variables:
WP_ENGINE_API_USERNAME=my-api-username WP_ENGINE_API_PASSWORD=my-api-password npm run start
This runs the default server (build/index.js) which supports remote transport. You can also run with custom options:
WP_ENGINE_API_USERNAME="your-username" WP_ENGINE_API_PASSWORD="your-password" node build/main.js --transport=http --port=8080 --auth-token=my-secure-token
Command Line Options
node build/main.js [options]
Options:
-h, --help Show help message
-v, --version Show version information
-t, --transport <type> Transport type (stdio, http) [default: stdio]
-p, --port <port> Port for HTTP transport [default: 3000]
-a, --auth-token <token> Authentication token for HTTP transport [default: wpengine-mcp-token]
MCP Settings
Local Configuration (stdio transport)
Add the following configuration to your MCP settings file:
{
"mcpServers": {
"wpengine": {
"command": "node",
"args": [
"/path/to/wpengine-mcp-ts/build/main.js"
],
"env": {
"WP_ENGINE_API_USERNAME": "your-api-username",
"WP_ENGINE_API_PASSWORD": "your-api-password"
},
"disabled": false,
"autoApprove": []
}
}
}
Remote Configuration (HTTP transport)
For remote MCP connections, you'll need to implement an HTTP MCP client or use the server as a remote service. The server exposes an HTTP endpoint at /mcp
that accepts MCP protocol messages.
Example HTTP request:
curl -X POST http://localhost:3000/mcp \
-H "Authorization: Bearer wpengine-mcp-token" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": "1",
"method": "tools/list",
"params": {}
}'
Available Tools
The server provides comprehensive tools for managing your WP Engine infrastructure:
Account Management
get_accounts
- Get all WP Engine accountsget_current_user
- Get the current authenticated user
Site Management
get_sites
- Get all sites for a WP Engine accountcreate_site
- Create a new siteupdate_site
- Change a site namedelete_site
- Delete a site and any installs associated with it (permanent)
Install Management
get_installs
- Get all installs for a WP Engine sitecreate_install
- Create a new WordPress installationupdate_install
- Update a WordPress installationdelete_install
- Delete an install by ID (permanent)
Backup Management
get_backups
- Get all backups for a WP Engine installcreate_backup
- Create a new backup for a WP Engine install
Domain Management
get_domains
- Get the domains for an installcreate_domain
- Add a new domain to an existing installupdate_domain
- Set an existing domain as primary or configure redirectsdelete_domain
- Delete a specific domain for an install
Cache Management
purge_cache
- Purge an install's cache (object, page, cdn, or all)
SSH Key Management
get_ssh_keys
- Get your SSH keyscreate_ssh_key
- Add a new SSH keydelete_ssh_key
- Delete an existing SSH key
Example Tool Usage
Get all accounts
{
"name": "get_accounts",
"arguments": {}
}
Create a new site
{
"name": "create_site",
"arguments": {
"name": "My New Site",
"account_id": "account-uuid"
}
}
Create a new install
{
"name": "create_install",
"arguments": {
"name": "mysite",
"account_id": "account-uuid",
"site_id": "site-uuid",
"environment": "staging"
}
}
Create a backup
{
"name": "create_backup",
"arguments": {
"install_id": "install-uuid",
"description": "Pre-deployment backup",
"notification_emails": ["admin@example.com"]
}
}
Add a domain
{
"name": "create_domain",
"arguments": {
"install_id": "install-uuid",
"name": "example.com",
"primary": true
}
}
Purge cache
{
"name": "purge_cache",
"arguments": {
"install_id": "install-uuid",
"type": "all"
}
}
Available Resources
Account Information
wpengine://account/{accountId}
Account Sites
wpengine://account/{accountId}/sites
Site Information
wpengine://site/{siteId}
Site Installs
wpengine://site/{siteId}/installs
Install Information
wpengine://install/{installId}
Install Backups
wpengine://install/{installId}/backups
Testing
Local Testing (stdio transport)
You can test the server using the MCP inspector:
WP_ENGINE_API_USERNAME="your-api-username" WP_ENGINE_API_PASSWORD="your-api-password" npx @modelcontextprotocol/inspector build/main.js
Remote Testing (HTTP transport)
-
Start the server in HTTP mode:
WP_ENGINE_API_USERNAME="your-username" WP_ENGINE_API_PASSWORD="your-password" npm run start:http
-
In another terminal, run the test client:
node test-http-client.js
The test client will verify that the HTTP transport is working correctly and test various MCP operations.
Security Considerations
When using the HTTP transport:
- Authentication: The server uses Bearer token authentication. Change the default token in production.
- HTTPS: Consider using HTTPS in production environments.
- Firewall: Restrict access to the HTTP port to trusted networks only.
- Environment Variables: Store API credentials securely and never commit them to version control.
Development
Building
npm run build
Watching for changes
npm run watch
Project Structure
wpengine-mcp-ts/
āāā src/
ā āāā main.ts # Main entry point with transport selection
ā āāā index.ts # Original stdio-only implementation
ā āāā transport/
ā āāā http.ts # HTTP transport implementation
āāā build/ # Compiled JavaScript output
āāā test-http-client.js # HTTP transport test client
āāā package.json
License
MIT