The RegisterMcpPrompt API allows you to register and manage prompts that structure AI model interactions in WordPress.
Prompts are predefined templates for AI model interactions. They are registered using the RegisterMcpPrompt class and provide structured ways to interact with AI models.
use Automattic\WordpressMcp\Core\RegisterMcpPrompt;
// Register a simple prompt
new RegisterMcpPrompt(
[
'name' => 'my-prompt',
'description' => 'A custom prompt for AI interaction',
'arguments' => [
[
'name' => 'param1',
'description' => 'First parameter',
'required' => true,
],
],
],
[
[
'role' => 'user',
'content' => [
'type' => 'text',
'text' => 'Process this data: {{param1}}',
],
],
]
);| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Unique identifier for the prompt |
| description | string | Yes | Description of the prompt's purpose |
| arguments | array | No | Array of argument definitions |
| messages | array | Yes | Array of message templates |
Each argument in the arguments array should have:
| Parameter | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Name of the argument |
| description | string | No | Description of the argument |
| required | bool | No | Whether the argument is required (default: false) |
| type | string | No | Type of the argument (default: string) |
Each message in the messages array should have:
| Parameter | Type | Required | Description |
|---|---|---|---|
| role | string | Yes | Role of the message ('user' or 'assistant') |
| content | array | Yes | Content of the message |
| content.type | string | Yes | Type of content ('text') |
| content.text | string | Yes | The message text |
use Automattic\WordpressMcp\Core\RegisterMcpPrompt;
class McpAnalyzeSales {
public function __construct() {
add_action('wordpress_mcp_init', [$this, 'register_prompt']);
}
public function register_prompt() {
new RegisterMcpPrompt(
[
'name' => 'analyze-sales',
'description' => 'Analyze WooCommerce sales data',
'arguments' => [
[
'name' => 'time_span',
'description' => 'The time period to analyze (e.g., last_7_days, last_30_days, last_month, last_quarter, last_year)',
'required' => true,
'type' => 'string',
],
],
],
$this->messages()
);
}
public function messages() {
return [
[
'role' => 'user',
'content' => [
'type' => 'text',
'text' => 'Analyze the WooCommerce sales data for the time period: {{time_span}}. Include total sales, average order value, top-selling products, and sales trends.',
],
],
];
}
}- Unique Names: Ensure prompt names are unique across all registered prompts
- Clear Descriptions: Provide detailed descriptions of the prompt's purpose
- Well-Defined Arguments: Clearly define all required and optional arguments
- Structured Messages: Use consistent message structure and formatting
- Error Handling: Include error handling in message templates
- Documentation: Document the prompt's purpose and expected arguments
- Testing: Test prompts with various argument combinations
use Automattic\WordpressMcp\Core\RegisterMcpPrompt;
class MyCustomPrompt {
public function __construct() {
add_action('wordpress_mcp_init', [$this, 'register_prompt']);
}
public function register_prompt() {
new RegisterMcpPrompt(
[
'name' => 'my-custom-prompt',
'description' => 'A custom prompt for AI interaction',
'arguments' => [
[
'name' => 'input_data',
'description' => 'The data to process',
'required' => true,
'type' => 'string',
],
[
'name' => 'format',
'description' => 'The desired output format',
'required' => false,
'type' => 'string',
],
],
],
$this->messages()
);
}
private function messages() {
return [
[
'role' => 'user',
'content' => [
'type' => 'text',
'text' => 'Process the following data: {{input_data}}. Format the output as {{format|default:"JSON"}}. If there are any issues, please explain them clearly.',
],
],
];
}
}