Claudeus WordPress MCP
by deus-h
# Smithery.ai configuration for Claudeus WordPress MCP
name: "Claudeus WordPress MCP"
description: "AI-powered WordPress management with MCP protocol support"
version: "2.0.3"
author:
name: "Amadeus Samiel H."
email: "amadeus.hritani@simhop.se"
organization:
name: "SimHop IT & Media AB"
website: "https://simhop.se"
startCommand:
type: stdio
configSchema:
type: object
properties:
WP_SITES_PATH:
type: string
description: "Path to WordPress sites configuration JSON file"
default: "./wp-sites.json"
examples: ["./wp-sites.json", "/app/config/wp-sites.json"]
PORT:
type: number
description: "Port number for the MCP server (for health checks)"
default: 3000
minimum: 1024
maximum: 65535
NODE_ENV:
type: string
description: "Node environment (development/production)"
enum: ["development", "production"]
default: "production"
DEBUG:
type: string
description: "Debug configuration pattern"
default: "claudeus:*"
examples: ["claudeus:*", "claudeus:wp,claudeus:mcp"]
AUTH_TYPE:
type: string
description: "Default WordPress authentication type"
enum: ["basic", "jwt"]
default: "basic"
SSL_VERIFY:
type: boolean
description: "Verify SSL certificates for WordPress connections"
default: true
LOG_LEVEL:
type: string
description: "Logging level"
enum: ["error", "warn", "info", "debug"]
default: "info"
BATCH_SIZE:
type: number
description: "Maximum number of items to process in a batch"
default: 100
minimum: 1
maximum: 1000
additionalProperties: false
commandFunction: |-
(config) => {
// Ensure configuration files exist
const fs = require('fs');
const path = require('path');
// Helper function to copy example if target doesn't exist
const copyExampleIfNeeded = (examplePath, targetPath) => {
if (!fs.existsSync(targetPath) && fs.existsSync(examplePath)) {
fs.copyFileSync(examplePath, targetPath);
}
};
// Copy example files if needed
copyExampleIfNeeded('wp-sites.json.example', 'wp-sites.json');
copyExampleIfNeeded('.env.example', '.env');
const env = {
WP_SITES_PATH: config.WP_SITES_PATH || "./wp-sites.json",
PORT: config.PORT?.toString() || "3000",
NODE_ENV: config.NODE_ENV || "production",
DEBUG: config.DEBUG || "claudeus:*",
AUTH_TYPE: config.AUTH_TYPE || "basic",
SSL_VERIFY: (config.SSL_VERIFY ?? true).toString(),
LOG_LEVEL: config.LOG_LEVEL || "info",
BATCH_SIZE: config.BATCH_SIZE?.toString() || "100",
MCP_STDIO: "true"
};
return {
command: "node",
args: ["dist/index.js"],
env,
cwd: process.cwd()
};
}
capabilities:
prompts:
listChanged: true
tools:
listChanged: true
resources:
listChanged: true
security:
userConsent:
required: true
description: "This MCP server requires access to your WordPress sites and will perform content management operations."
dataAccess:
- type: "wordpress"
description: "Access to configured WordPress sites via REST API"
- type: "filesystem"
description: "Access to wp-sites.json configuration file"
toolSafety:
confirmationRequired: true
description: "Tools can modify WordPress content and settings"
dangerousOperations:
- "delete_post"
- "delete_page"
- "delete_block"
- "delete_media"
- "activate_theme"