Git-native content governance for AI agents — 27 deterministic MCP tools over stdio and HTTP.
AI Engine for WordPress is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Free MCP server for WordPress: Claude and ChatGPT connect with OAuth. No account, cap or API key.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --transport http ai-engine-for-wordpress-mcp https://connect.meowapps.com/mcp
# 2 — ask your agent for something these tools do
# wp_get_posts, wp_get_post, wp_get_post_snapshot and 27 more
AI Engine for WordPress costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. Nothing here runs on your machine and nothing runs on ours: this server answers at its publisher’s own address, and what you install is the connection straight to it.
This is a public server: it answers at its publisher’s own address and this marketplace is not in the path. Claude Code registers it in one command; --scope user makes it available in every project. The transport below is http, as the publisher's own manifest declares it.
claude mcp add --scope user --transport http ai-engine-for-wordpress-mcp https://connect.meowapps.com/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry pointing straight at the publisher’s own address — this marketplace is not in the path, and nothing from this listing executes on your machine.
30 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
List posts, pages or another post type, newest first. Returns ID, title, status, excerpt and link for each, without the full content. Filter by post_type, post_status, search text, author (user ID or slug) or a date range. Returns 10 items unless limit is set; page with offset or paged.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| post_type | string | no | — |
| post_status | string | no | — |
| search | string | no | — |
| author | integer | no | Filter by author user ID. |
| author_name | string | no | Filter by author user slug (nicename). Ignored if author is set. |
| author__not_in | array | no | Exclude posts by these author user IDs. |
| after | string | no | — |
| before | string | no | — |
| limit | integer | no | — |
| offset | integer | no | — |
| paged | integer | no | — |
Get one post or page by ID: title, content, status, dates and permalink. Set content_format to "prose" to return the text without block markup.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ID | integer | yes | — |
| content_format | string | no | full (default) returns raw content; prose strips block-attribute JSON, keeping prose, headings and block markers. |
Get everything about one post by ID: all fields, custom fields, terms, featured image and author. Use include or exclude to limit the sections returned.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ID | integer | yes | Post ID |
| include | array | no | Optional: fields to include (default: all). Options: meta, terms, thumbnail, author |
| exclude | array | no | Optional: fields to exclude from post data. Options: content (useful for posts with huge content like many galleries) |
| content_format | string | no | full (default) returns raw content; prose strips block-attribute JSON (huge gallery blobs), keeping prose and block markers. Ignored if content is excluded. |
Count posts by status (published, draft, scheduled, pending, private, trash) for one post type. The default post type is post.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| post_type | string | no | — |
List the public post types on the site with their key and label, such as post, page or product.
No parameter schema on file.
Get the custom fields of a post by ID. Pass key to read a single field; without it, all custom fields are returned.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ID | integer | yes | — |
| key | string | no | — |
List comments with their post, author, content, date and approval status. Filter by post_id, status, search text, user_id or author_email. Returns 10 unless limit is set. With type set to "note", it lists the editor notes on posts, where an approval status of 1 means the note thread is resolved.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| post_id | integer | no | — |
| status | string | no | — |
| type | string | no | Filter by comment type, e.g. "comment", "pingback", or "note" (WP 6.9 editor Notes). Omit to return all types. |
| search | string | no | — |
| user_id | integer | no | Filter by the registered user ID of the commenter. |
| author_email | string | no | Filter by the commenter email address. |
| limit | integer | no | — |
| offset | integer | no | — |
| paged | integer | no | — |
List the taxonomies available for a post type, such as categories and tags.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| post_type | string | no | — |
List the terms of a taxonomy (for example every category), optionally filtered by search text or parent term.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| taxonomy | string | yes | — |
| search | string | no | — |
| parent | integer | no | — |
| limit | integer | no | — |
Count the terms in a taxonomy.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| taxonomy | string | yes | — |
List the terms attached to a post, optionally for one taxonomy only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ID | integer | yes | — |
| taxonomy | string | no | — |
List items in the Media Library with their ID, title and URL. Filter by search text, uploader or date range. Returns 10 unless limit is set.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| search | string | no | — |
| author | integer | no | Filter by uploader user ID. |
| author_name | string | no | Filter by uploader user slug (nicename). Ignored if author is set. |
| after | string | no | — |
| before | string | no | — |
| limit | integer | no | — |
Count the items in the Media Library, optionally within a date range.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| after | string | no | — |
| before | string | no | — |
List the block patterns available on the site (ready-made layouts from WordPress, the theme and plugins), with name, title, categories and description. Filter by search text or category. Set include_content to true to also get each pattern's block markup, which can be placed in a post with Update post or Edit post text.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| search | string | no | Case-insensitive filter on title, name, description, and keywords. |
| category | string | no | Pattern category slug, e.g. "featured", "call-to-action", "gallery", "testimonials". |
| include_content | boolean | no | Include each match's raw block markup (default false; can be large). |
| limit | integer | no | Max patterns to return (default 50, max 500). |
Create a post, page or item of another post type. post_title is required. post_content accepts HTML, blocks or Markdown. The status is draft unless post_status says otherwise, and the type is post unless post_type says otherwise. meta_input sets custom fields.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| post_title | string | yes | — |
| post_content | string | no | — |
| post_excerpt | string | no | — |
| post_status | string | no | — |
| post_type | string | no | — |
| post_name | string | no | — |
| meta_input | object | no | Custom fields as key/value pairs. Keys starting with an underscore (WordPress internals) are refused, except the Yoast SEO title, description and focus keyphrase. |
Update an existing post by ID: title, content, excerpt, status, slug, date or custom fields. Pass the fields to change in fields and custom fields in meta_input. Set schedule_for to schedule publication. Passing post_category replaces all of the post's categories.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ID | integer | yes | The ID of the post to update. |
| fields | object | no | — |
| meta_input | object | no | Custom fields as key/value pairs. Keys starting with an underscore (WordPress internals) are refused, except the Yoast SEO title, description and focus keyphrase. |
| schedule_for | string | no | Schedule post for future publication. Provide local datetime (e.g., "2026-02-02 09:00:00"). Automatically sets status to "future" and calculates GMT from WordPress timezone. |
Find and replace text inside one field of a post (for example its content), without sending the whole content again. Supports regular expressions with regex set to true and modifiers in flags.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ID | integer | yes | Post ID. |
| field | string | yes | Field to modify: post_content, post_excerpt, or post_title. |
| search | string | yes | Text to search for, or (with regex=true) a bare PCRE pattern without delimiters, e.g. <!-- /wp:paragraph -->\s*$ |
| replace | string | yes | Replacement text. In regex mode, backreferences like $1 / \1 are supported. |
| regex | boolean | no | Treat search as a regex pattern (default: false). |
| flags | string | no | Optional PCRE modifier letters applied in regex mode, e.g. "i" (case-insensitive), "s" (dotall), "m" (multiline). Allowed: i, m, s, x, u, A, D, S, U, X, J. |
Write block editor content to an existing post from a list of block specs. Types and fields: paragraph (content), heading (content, level 1-6), list (items, ordered), quote (content, citation), image (url, alt, caption), buttons (buttons: text, url), group (blocks), columns (columns: arrays of blocks), separator, spacer (height), code (content), html (content). mode is replace (default), append or
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ID | integer | yes | Target post/page ID (create it first with wp_create_post). |
| blocks | array | yes | Ordered array of block specs. Each item is an object with a "type" and the fields for that type (see the tool description). |
| mode | string | no | replace (default) overwrites post_content; append/prepend add the blocks to the existing content. |
Move a post, page or item of another post type to the trash by ID. It can be restored from the trash in WordPress.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ID | integer | yes | — |
Set the featured image of a post to a Media Library item, or remove it when media_id is empty.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| post_id | integer | yes | — |
| media_id | integer | no | — |
Create a term in a taxonomy, such as a new category or tag, with an optional slug, description and parent.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| taxonomy | string | yes | — |
| term_name | string | yes | — |
| slug | string | no | — |
| description | string | no | — |
| parent | integer | no | — |
Update the name, slug, description or parent of an existing term.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| term_id | integer | yes | — |
| taxonomy | string | yes | — |
| name | string | no | — |
| slug | string | no | — |
| description | string | no | — |
| parent | integer | no | — |
Attach terms to a post. With append set to true they are added to the existing terms; otherwise they replace all terms of that taxonomy on the post.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ID | integer | yes | — |
| taxonomy | string | no | — |
| terms | array | yes | — |
| append | boolean | no | — |
Add a file to the Media Library, either from a public URL that WordPress downloads or from base64 content with a filename. Optional title, description and alt text.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | no | URL to download the file from. Use this OR base64/filename. |
| base64 | string | no | Base64-encoded file content. Must be used together with filename. |
| filename | string | no | Filename with extension (e.g. photo.jpg). Required when using base64. |
| title | string | no | — |
| description | string | no | — |
| alt | string | no | — |
Update the title, caption, description or alt text of a Media Library item.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ID | integer | yes | — |
| title | string | no | — |
| caption | string | no | — |
| description | string | no | — |
| alt | string | no | — |
Add a comment to a post. post_id and comment_content are required; author name, email, URL and approval status are optional.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| post_id | integer | yes | — |
| comment_content | string | yes | — |
| comment_author | string | no | — |
| comment_author_email | string | no | — |
| comment_author_url | string | no | — |
| comment_approved | string | no | — |
Update a comment by ID: its content or its approval status (approve, hold or mark as spam).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| comment_ID | integer | yes | — |
| fields | object | no | — |
Add an editor note to a block of a post (WordPress 6.9 or later), as shown in the editor's Notes panel. Locate the block with anchor_text (a short exact snippet of its text) or block_index, or reply to an existing note with parent_id.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| post_id | integer | no | The post to annotate. Not needed for a reply. |
| content | string | yes | The note text. |
| anchor_text | string | no | A short exact snippet of text from the block the note is about. The first block containing it is used. |
| block_index | integer | no | Alternative to anchor_text: 0-based position among the top-level blocks. |
| parent_id | integer | no | Reply to this note instead of starting a new thread. |
Edit the text of an editor note, or mark its thread as resolved or reopen it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| note_id | integer | yes | — |
| content | string | no | New text for the note. |
| status | string | no | Resolve or reopen the thread (top-level notes only). |
Get the site's name, tagline, address and time zone.
No parameter schema on file.
- Every tool — any call limit is its publisher’s, not ours
- No card, and mcprush charges nothing for it
- Runs at its publisher’s own address — this marketplace is not in the path
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install AI Engine for WordPress or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | moderate | capability blast radius (moderate) — client exposure if the model is manipulated | −3 |
| coverage-honesty | manifest | inspection depth (manifest) — how much of the target the scan could see | −4 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
The scan read each tool’s name, description, input schema and annotations exactly as the server listed them the last time it answered us; no code was reviewed. We ask the server again about once a month, and a list that changed is graded again.
The implementation source was not read — this reflects the declared tool metadata only.
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. moderate is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| wp_get_posts | no tags | |
| wp_get_post | no tags | |
| wp_get_post_snapshot | no tags | |
| wp_count_posts | no tags | |
| wp_get_post_types | no tags | |
| wp_get_post_meta | no tags | |
| wp_get_comments | no tags | |
| wp_get_taxonomies | no tags | |
| wp_get_terms | no tags | |
| wp_count_terms | no tags | |
| wp_get_post_terms | no tags | |
| wp_get_media | no tags | |
| wp_count_media | no tags | |
| wp_list_block_patterns | no tags | |
| wp_create_post | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| wp_update_post | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| wp_alter_post | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| wp_write_blocks | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| wp_delete_post | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| wp_set_featured_image | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| wp_create_term | state-write | state-write: declares readOnlyHint: false |
| wp_update_term | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| wp_add_post_terms | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| wp_upload_media | external-sink | external-sink: declares readOnlyHint: false, openWorldHint: true |
| wp_update_media | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| wp_create_comment | external-sink | external-sink: keyword "create_comment", declares readOnlyHint: false, openWorldHint: true |
| wp_update_comment | external-sink | external-sink: declares readOnlyHint: false, destructiveHint: true, openWorldHint: true |
| wp_create_note | state-write | state-write: declares readOnlyHint: false |
| wp_update_note | state-write | state-write: declares readOnlyHint: false, destructiveHint: true |
| wp_get_site_info | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
This is an address its publisher runs: which release it serves is theirs to choose, so there is nothing here to pin. The history below is for reading; the current release on file is 3.8.8.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish AI Engine for WordPress can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.