AI Engine for WordPress
Free MCP server for WordPress: Claude and ChatGPT connect with OAuth. No account, cap or API key.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"ai-engine": {
"url": "https://connect.meowapps.com/mcp"
}
}
}원격 엔드포인트
https://connect.meowapps.com/mcpstreamable-http할 수 있는 일
도구 목록
도구 (30)
🟢wp_get_posts(post_type, post_status, search, author, author_name, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"post_type": {
"type": "string"
},
"post_status": {
"type": "string"
},
"search": {
"type": "string"
},
"author": {
"type": "integer",
"description": "Filter by author user ID."
},
"author_name": {
"type": "string",
"description": "Filter by author user slug (nicename). Ignored if author is set."
},
"author__not_in": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Exclude posts by these author user IDs."
},
"after": {
"type": "string"
},
"before": {
"type": "string"
},
"limit": {
"type": "integer"
},
"offset": {
"type": "integer"
},
"paged": {
"type": "integer"
}
}
}🟢wp_get_post(ID, content_format)
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.
입력 스키마
{
"type": "object",
"properties": {
"ID": {
"type": "integer"
},
"content_format": {
"type": "string",
"enum": [
"full",
"prose"
],
"description": "full (default) returns raw content; prose strips block-attribute JSON, keeping prose, headings and block markers."
}
},
"required": [
"ID"
]
}🟢wp_get_post_snapshot(ID, include, exclude, content_format)
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.
입력 스키마
{
"type": "object",
"properties": {
"ID": {
"type": "integer",
"description": "Post ID"
},
"include": {
"type": "array",
"description": "Optional: fields to include (default: all). Options: meta, terms, thumbnail, author",
"items": {
"type": "string"
}
},
"exclude": {
"type": "array",
"description": "Optional: fields to exclude from post data. Options: content (useful for posts with huge content like many galleries)",
"items": {
"type": "string"
}
},
"content_format": {
"type": "string",
"enum": [
"full",
"prose"
],
"description": "full (default) returns raw content; prose strips block-attribute JSON (huge gallery blobs), keeping prose and block markers. Ignored if content is excluded."
}
},
"required": [
"ID"
]
}🟢wp_count_posts(post_type)
Count posts by status (published, draft, scheduled, pending, private, trash) for one post type. The default post type is post.
입력 스키마
{
"type": "object",
"properties": {
"post_type": {
"type": "string"
}
}
}🟢wp_get_post_types
List the public post types on the site with their key and label, such as post, page or product.
입력 스키마
{
"type": "object",
"properties": {}
}🟢wp_get_post_meta(ID, key)
Get the custom fields of a post by ID. Pass key to read a single field; without it, all custom fields are returned.
입력 스키마
{
"type": "object",
"properties": {
"ID": {
"type": "integer"
},
"key": {
"type": "string"
}
},
"required": [
"ID"
]
}🟢wp_get_comments(post_id, status, type, search, user_id, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"post_id": {
"type": "integer"
},
"status": {
"type": "string"
},
"type": {
"type": "string",
"description": "Filter by comment type, e.g. \"comment\", \"pingback\", or \"note\" (WP 6.9 editor Notes). Omit to return all types."
},
"search": {
"type": "string"
},
"user_id": {
"type": "integer",
"description": "Filter by the registered user ID of the commenter."
},
"author_email": {
"type": "string",
"description": "Filter by the commenter email address."
},
"limit": {
"type": "integer"
},
"offset": {
"type": "integer"
},
"paged": {
"type": "integer"
}
}
}🟢wp_get_taxonomies(post_type)
List the taxonomies available for a post type, such as categories and tags.
입력 스키마
{
"type": "object",
"properties": {
"post_type": {
"type": "string"
}
}
}🟢wp_get_terms(taxonomy, search, parent, limit)
List the terms of a taxonomy (for example every category), optionally filtered by search text or parent term.
입력 스키마
{
"type": "object",
"properties": {
"taxonomy": {
"type": "string"
},
"search": {
"type": "string"
},
"parent": {
"type": "integer"
},
"limit": {
"type": "integer"
}
},
"required": [
"taxonomy"
]
}🟢wp_count_terms(taxonomy)
Count the terms in a taxonomy.
입력 스키마
{
"type": "object",
"properties": {
"taxonomy": {
"type": "string"
}
},
"required": [
"taxonomy"
]
}🟢wp_get_post_terms(ID, taxonomy)
List the terms attached to a post, optionally for one taxonomy only.
입력 스키마
{
"type": "object",
"properties": {
"ID": {
"type": "integer"
},
"taxonomy": {
"type": "string"
}
},
"required": [
"ID"
]
}🟢wp_get_media(search, author, author_name, after, before, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"search": {
"type": "string"
},
"author": {
"type": "integer",
"description": "Filter by uploader user ID."
},
"author_name": {
"type": "string",
"description": "Filter by uploader user slug (nicename). Ignored if author is set."
},
"after": {
"type": "string"
},
"before": {
"type": "string"
},
"limit": {
"type": "integer"
}
}
}🟢wp_count_media(after, before)
Count the items in the Media Library, optionally within a date range.
입력 스키마
{
"type": "object",
"properties": {
"after": {
"type": "string"
},
"before": {
"type": "string"
}
}
}🟢wp_list_block_patterns(search, category, include_content, limit)
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.
입력 스키마
{
"type": "object",
"properties": {
"search": {
"type": "string",
"description": "Case-insensitive filter on title, name, description, and keywords."
},
"category": {
"type": "string",
"description": "Pattern category slug, e.g. \"featured\", \"call-to-action\", \"gallery\", \"testimonials\"."
},
"include_content": {
"type": "boolean",
"description": "Include each match's raw block markup (default false; can be large)."
},
"limit": {
"type": "integer",
"description": "Max patterns to return (default 50, max 500)."
}
}
}🟡wp_create_post(post_title, post_content, post_excerpt, post_status, post_type, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"post_title": {
"type": "string"
},
"post_content": {
"type": "string"
},
"post_excerpt": {
"type": "string"
},
"post_status": {
"type": "string"
},
"post_type": {
"type": "string"
},
"post_name": {
"type": "string"
},
"meta_input": {
"type": "object",
"description": "Custom fields as key/value pairs. Keys starting with an underscore (WordPress internals) are refused, except the Yoast SEO title, description and focus keyphrase."
}
},
"required": [
"post_title"
]
}🔴wp_update_post(ID, fields, meta_input, schedule_for)
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.
입력 스키마
{
"type": "object",
"properties": {
"ID": {
"type": "integer",
"description": "The ID of the post to update."
},
"fields": {
"type": "object",
"properties": {
"post_title": {
"type": "string"
},
"post_content": {
"type": "string"
},
"post_status": {
"type": "string"
},
"post_name": {
"type": "string"
},
"post_excerpt": {
"type": "string"
},
"post_category": {
"type": "array",
"items": {
"type": "integer"
}
}
},
"additionalProperties": true
},
"meta_input": {
"type": "object",
"description": "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": {
"type": "string",
"description": "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."
}
},
"required": [
"ID"
]
}🔴wp_alter_post(ID, field, search, replace, regex, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"ID": {
"type": "integer",
"description": "Post ID."
},
"field": {
"type": "string",
"description": "Field to modify: post_content, post_excerpt, or post_title."
},
"search": {
"type": "string",
"description": "Text to search for, or (with regex=true) a bare PCRE pattern without delimiters, e.g. <!-- /wp:paragraph -->\\s*$"
},
"replace": {
"type": "string",
"description": "Replacement text. In regex mode, backreferences like $1 / \\1 are supported."
},
"regex": {
"type": "boolean",
"description": "Treat search as a regex pattern (default: false)."
},
"flags": {
"type": "string",
"description": "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."
}
},
"required": [
"ID",
"field",
"search",
"replace"
]
}🔴wp_write_blocks(ID, blocks, mode)
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 prepend.
입력 스키마
{
"type": "object",
"properties": {
"ID": {
"type": "integer",
"description": "Target post/page ID (create it first with wp_create_post)."
},
"blocks": {
"type": "array",
"description": "Ordered array of block specs. Each item is an object with a \"type\" and the fields for that type (see the tool description).",
"items": {
"type": "object",
"additionalProperties": true
}
},
"mode": {
"type": "string",
"enum": [
"replace",
"append",
"prepend"
],
"description": "replace (default) overwrites post_content; append/prepend add the blocks to the existing content."
}
},
"required": [
"ID",
"blocks"
]
}🔴wp_delete_post(ID)
Move a post, page or item of another post type to the trash by ID. It can be restored from the trash in WordPress.
입력 스키마
{
"type": "object",
"properties": {
"ID": {
"type": "integer"
}
},
"required": [
"ID"
]
}🔴wp_set_featured_image(post_id, media_id)
Set the featured image of a post to a Media Library item, or remove it when media_id is empty.
입력 스키마
{
"type": "object",
"properties": {
"post_id": {
"type": "integer"
},
"media_id": {
"type": "integer"
}
},
"required": [
"post_id"
]
}🟡wp_create_term(taxonomy, term_name, slug, description, parent)
Create a term in a taxonomy, such as a new category or tag, with an optional slug, description and parent.
입력 스키마
{
"type": "object",
"properties": {
"taxonomy": {
"type": "string"
},
"term_name": {
"type": "string"
},
"slug": {
"type": "string"
},
"description": {
"type": "string"
},
"parent": {
"type": "integer"
}
},
"required": [
"taxonomy",
"term_name"
]
}🔴wp_update_term(term_id, taxonomy, name, slug, description, ...)
Update the name, slug, description or parent of an existing term.
입력 스키마
{
"type": "object",
"properties": {
"term_id": {
"type": "integer"
},
"taxonomy": {
"type": "string"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"description": {
"type": "string"
},
"parent": {
"type": "integer"
}
},
"required": [
"term_id",
"taxonomy"
]
}🔴wp_add_post_terms(ID, taxonomy, terms, append)
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.
입력 스키마
{
"type": "object",
"properties": {
"ID": {
"type": "integer"
},
"taxonomy": {
"type": "string"
},
"terms": {
"type": "array",
"items": {
"type": "integer"
}
},
"append": {
"type": "boolean"
}
},
"required": [
"ID",
"terms"
]
}🟡wp_upload_media(url, base64, filename, title, description, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "URL to download the file from. Use this OR base64/filename."
},
"base64": {
"type": "string",
"description": "Base64-encoded file content. Must be used together with filename."
},
"filename": {
"type": "string",
"description": "Filename with extension (e.g. photo.jpg). Required when using base64."
},
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"alt": {
"type": "string"
}
}
}🔴wp_update_media(ID, title, caption, description, alt)
Update the title, caption, description or alt text of a Media Library item.
입력 스키마
{
"type": "object",
"properties": {
"ID": {
"type": "integer"
},
"title": {
"type": "string"
},
"caption": {
"type": "string"
},
"description": {
"type": "string"
},
"alt": {
"type": "string"
}
},
"required": [
"ID"
]
}🟡wp_create_comment(post_id, comment_content, comment_author, comment_author_email, comment_author_url, ...)
Add a comment to a post. post_id and comment_content are required; author name, email, URL and approval status are optional.
입력 스키마
{
"type": "object",
"properties": {
"post_id": {
"type": "integer"
},
"comment_content": {
"type": "string"
},
"comment_author": {
"type": "string"
},
"comment_author_email": {
"type": "string"
},
"comment_author_url": {
"type": "string"
},
"comment_approved": {
"type": "string"
}
},
"required": [
"post_id",
"comment_content"
]
}🔴wp_update_comment(comment_ID, fields)
Update a comment by ID: its content or its approval status (approve, hold or mark as spam).
입력 스키마
{
"type": "object",
"properties": {
"comment_ID": {
"type": "integer"
},
"fields": {
"type": "object",
"properties": {
"comment_content": {
"type": "string"
},
"comment_approved": {
"type": "string"
}
},
"additionalProperties": true
}
},
"required": [
"comment_ID"
]
}🟡wp_create_note(post_id, content, anchor_text, block_index, parent_id)
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.
입력 스키마
{
"type": "object",
"properties": {
"post_id": {
"type": "integer",
"description": "The post to annotate. Not needed for a reply."
},
"content": {
"type": "string",
"description": "The note text."
},
"anchor_text": {
"type": "string",
"description": "A short exact snippet of text from the block the note is about. The first block containing it is used."
},
"block_index": {
"type": "integer",
"description": "Alternative to anchor_text: 0-based position among the top-level blocks."
},
"parent_id": {
"type": "integer",
"description": "Reply to this note instead of starting a new thread."
}
},
"required": [
"content"
]
}🔴wp_update_note(note_id, content, status)
Edit the text of an editor note, or mark its thread as resolved or reopen it.
입력 스키마
{
"type": "object",
"properties": {
"note_id": {
"type": "integer"
},
"content": {
"type": "string",
"description": "New text for the note."
},
"status": {
"type": "string",
"enum": [
"resolved",
"open"
],
"description": "Resolve or reopen the thread (top-level notes only)."
}
},
"required": [
"note_id"
]
}🟢wp_get_site_info
Get the site's name, tagline, address and time zone.
입력 스키마
{
"type": "object",
"properties": {}
}커뮤니티
증거