Skip to main content
Glama
AI Site Manager MCP
by nkd3v

AI Site Manager MCP

An MCP server for the AI Site Manager WordPress plugin. Connect an MCP client to one or more sites' scoped API keys to work with posts, pages, custom post types, taxonomies, comments, media, approved settings, plugins and themes, to review and quarantine user accounts, to read the database, check diagnostics and run maintenance, and to migrate content between WordPress sites.

This is a local stdio MCP adapter. The AI Site Manager plugin must already be installed and activated on your WordPress site. It connects to that plugin's HTTPS API; it does not install the WordPress plugin or provide a hosted MCP endpoint.

Install the WordPress companion

  1. Download the current ai-site-manager.zip from this repository. Tagged versions are also available on the releases page.

  2. Upload it in WordPress → Plugins → Add New → Upload Plugin, then activate it. Requires WordPress 6.6+ and PHP 7.4+.

  3. Open Settings → AI Site Manager. Create an expiring key, choose its user and scopes, and approve exact option names if settings access is needed.

  4. Save the one-time key privately and copy the API base URL. Configure the MCP client below.

The companion source and disposable integration tests are in wordpress-plugin/ai-site-manager. Its API guide describes native fields, permissions and operational limits. The companion's Python example sends an explicit User-Agent, and its HTTP test image has a valid PNG checksum.

Related MCP server: sitepilot-mcp

Run with npx

Requires Node.js 22 or later, npm, and Git for the GitHub package specifier.

export WP_AI_BASE='https://example.com/wp-json/ai-site-manager/v1'
# Supply WP_AI_KEY from your private environment or secret storage.
npx --yes github:nkd3v/ai-site-manager-mcp

The server waits for an MCP client to communicate over stdin/stdout. It does not open a browser. To check installation without credentials:

npx --yes github:nkd3v/ai-site-manager-mcp --version

The package runs directly from GitHub; npm registry publication is not required. To pin the current release, use github:nkd3v/ai-site-manager-mcp#v1.6.1 instead of the unpinned specifier. Use a full commit SHA for an immutable pin.

For a local install:

npm install --global github:nkd3v/ai-site-manager-mcp
ai-site-manager-mcp --help

Update an existing installation

Updating the MCP adapter and the WordPress companion are separate steps. An already running MCP server keeps using the code it started with until restarted.

  1. Stop the server, or disconnect it in your MCP client.

  2. Fetch and check the current MCP version without supplying credentials:

    npx --yes --prefer-online github:nkd3v/ai-site-manager-mcp --version

    For the theme-management update, expect 1.1.0 or later. npm caches packages; --prefer-online forces it to check for updates. If your MCP configuration pins an older tag or commit, such as #v1.0.0, change that package specifier too; checking the unpinned version does not update a pinned configuration. Use the unpinned specifier to follow the repository's default branch, or pin the commit you intend to run.

  3. From companion 1.3.0, WordPress offers new releases in Dashboard → Updates and the plugin list, and can update the companion automatically if you enable auto-updates for it. It verifies each ZIP against the release's SHA256SUMS. For older companions, or to update manually: download the current WordPress companion ZIP. In WordPress → Plugins → Add New → Upload Plugin, upload it and choose Replace current with uploaded when prompted. Theme support requires companion version 1.1.0 or later. Replacing the plugin preserves its keys and settings; do not uninstall it as part of the update.

  4. With companion 1.4.1 or later, open Settings → AI Site Manager, choose Edit permissions beside an active key, adjust its scopes and approved option names, then Save permissions. Changes apply to the next API request using the same key; its owner and expiry are preserved. For theme access, enable the needed themes:read, themes:write and/or themes:delete scopes. To review or quarantine user accounts (companion 1.5.0+), enable users:read and, only when needed, users:write. For database, diagnostics and maintenance tools (companion 1.6.0+), enable database:read, diagnostics:read and/or maintenance:write; the key's user must be an administrator. Older companions require creating a replacement key and updating your client credentials.

  5. Restart or reconnect the MCP server so the client refreshes its tool list and credentials. Call aism_discover to verify the companion version and key scopes, then aism_themes_list if you granted themes:read.

The MCP configuration below includes --prefer-online so subsequent launches check for updates. This does not update an already running process. If you installed the adapter globally instead of using npx, rerun npm install --global github:nkd3v/ai-site-manager-mcp, check ai-site-manager-mcp --version, and restart it.

MCP client configuration

Add this entry to a client that accepts mcpServers configuration:

{
  "mcpServers": {
    "ai-site-manager": {
      "command": "npx",
      "args": ["--yes", "--prefer-online", "github:nkd3v/ai-site-manager-mcp"],
      "env": {
        "WP_AI_BASE": "https://example.com/wp-json/ai-site-manager/v1",
        "WP_AI_KEY_FILE": "/absolute/path/to/ai-site-manager.key"
      }
    }
  }
}

The key file must contain only the API key, with an optional trailing newline. Keep it outside your repositories and restrict access to its owner (chmod 600 /absolute/path/to/ai-site-manager.key). An environment export file is a different format: source it in your shell, then launch the server using WP_AI_KEY, or use your MCP client's secret/environment mechanism. MCP clients launched from a desktop application may not inherit your shell environment. Client-specific configuration formats vary.

You can supply WP_AI_KEY directly instead of WP_AI_KEY_FILE; do not set both. Never place the key in command arguments, URLs, public examples or committed configuration.

When run in a terminal, the server prompts for a missing WP_AI_BASE and, if neither credential variable is set, WP_AI_KEY_FILE. Enter the HTTPS API namespace URL and the path to an existing plain-text key file. Values apply only to that process and are not saved. Existing environment values are kept, and supplying WP_AI_KEY skips the key-file prompt. Press Ctrl+C to cancel.

Prompts go to stderr, keeping stdout available for MCP messages. Automatic prompting requires both stdin and stderr to be terminals. Desktop MCP clients and other noninteractive launches must supply the variables in their configuration; missing values produce a startup error listing the variables to set.

Several sites

To work with more than one site, for example to migrate between them, set WP_AI_SITES_FILE to a JSON file naming each site. Keys stay in separate files or environment variables; inline key entries are rejected.

{
  "default": "old",
  "sites": {
    "old": { "base": "https://old.example.com/wp-json/ai-site-manager/v1", "key_file": "/absolute/path/old.key" },
    "new": { "base": "https://new.example.com/?rest_route=/ai-site-manager/v1", "key_env": "NEW_SITE_KEY", "auth_header": "X-AISM-Key" }
  }
}

Every site tool accepts an optional site argument with one of these names; aism_sites lists them. Without site, tools use default. With several sites and no default, site is required, so a write never goes to a guessed site. WP_AI_BASE plus WP_AI_KEY or WP_AI_KEY_FILE can be combined with the file: it adds a site named WP_AI_SITE_NAME (default default), which becomes the default unless the file names one. WP_AI_TIMEOUT_MS and WP_AI_MAX_UPLOAD_BYTES apply to every site.

Migrate between WordPress sites

Install companion 1.4.0+ on both sites. On the source, create a key with migration:read, plus users:read to copy user accounts. On the target, create a key with migration:read and migration:write, plus users:write to copy user accounts, plus plugins:write/themes:write if packages should be transferred and migration:delete if you want rollback. Both key owners need administrator capabilities (manage_options, export/import; unfiltered_html on the target for metadata and settings). Configure both sites as above, then ask the AI to migrate. The intended sequence is:

  1. aism_migration_plan: compares versions, themes, plugins, post types and taxonomies, detects earlier migrations and recommends options. For example, it suggests match_slugs: true when the target is a fresh install, so its default posts are replaced rather than duplicated.

  2. aism_migration_transfer_package for each required theme (parents are handled automatically) and each active plugin. It copies the exact installed files from the source, which covers custom and premium code, or installs from WordPress.org with from: "wordpress.org".

  3. aism_migration_run with the returned cursor until done is true. Each call does as much as fits in max_seconds. The phases are users (1.7.0+ on both sites: accounts with roles, profile and password hashes, so people keep their passwords; target accounts with the same login or email are mapped and left unchanged; leave accounts out with exclude_users) → terms → site settings (front page, permalinks, media sizes, widgets, customizer) → media (original files, same year/month folders, sizes generated with the source's media settings and from the copy the source serves, so rotated or edited images match; identical files already on the target are reused) → all post types (including menus, templates, global styles and patterns) → comments → finalize, which remaps IDs (including page-builder shortcodes and theme image settings) and rewrites URLs.

  4. aism_migration_status to compare counts, then review the target. Re-running aism_migration_run, optionally with modified_after, syncs later changes without duplicating anything.

  5. aism_migration_rollback if needed. It deletes what the migration created, including accounts (their remaining content goes to the target key owner), and restores the settings it changed.

Password hashes travel only inside aism_migration_run, from the source API straight to the target API. They are not returned in tool results, and aism_migration_export cannot read accounts. Revoke the users:read source key after the migration.

aism_migration_copy copies selected posts with their terms, featured images, embedded media and reusable blocks (as drafts by default). It does not create user accounts; authors are matched by migrated accounts, login, then email, then default_author or author_map. The source is only read. Media files go through the MCP process within WP_AI_MAX_UPLOAD_BYTES and the target's upload limit. Offloaded media that the source cannot serve locally is fetched from its public URL without credentials. See the companion's migration guide for what is and is not migrated.

Configuration

Variable

Purpose

Default

WP_AI_BASE

HTTPS API namespace URL; supports WordPress installed in a subdirectory and https://example.com/?rest_route=/ai-site-manager/v1

Required

WP_AI_KEY

Scoped API key

Required unless using a key file

WP_AI_KEY_FILE

Absolute path to a plain-text key file

Alternative to WP_AI_KEY

WP_AI_AUTH_HEADER

Authorization or X-AISM-Key

Authorization

WP_AI_TIMEOUT_MS

Request timeout, 1000–600000 milliseconds

120000

WP_AI_MAX_UPLOAD_BYTES

Local upload and migration download limit, up to 1 GiB; WordPress/host limits also apply

33554432 (32 MiB)

WP_AI_SITES_FILE

JSON file of named sites (see Several sites)

Optional

WP_AI_SITE_NAME

Name for the WP_AI_BASE site

default

Tools

Tools

Operations

aism_discover, aism_guide, aism_schema

Inspect scopes, expiry, resources, approved options and native schemas

aism_content_list, aism_content_get

Read/search content, terms, comments and native type/taxonomy/status discovery; pagination headers are included

aism_content_create, aism_content_update, aism_content_delete

Create drafts, update native fields/metadata, assign taxonomy/featured images, moderate comments, trash or permanently delete

aism_revisions

Read a revision list or one revision

aism_media_upload

Upload an operator-provided local image/media file; optional title, alt text, caption and parent post

aism_settings_list, aism_settings_get, aism_settings_update

Read or replace values of exactly approved settings

aism_plugins_list, aism_plugin_install, aism_plugin_upload, aism_plugin_update, aism_plugin_action

List/install/upload/activate/deactivate/update/delete plugins

aism_themes_list, aism_theme_install, aism_theme_upload, aism_theme_action

List/install/upload/activate/update/delete themes

aism_db_tables, aism_db_table, aism_db_query

Read-only database access (1.6.0+, database:read): list and describe tables, run one read-only SQL query with row/time limits; accounts, sessions and API keys are protected

aism_diagnostics, aism_cron_list, aism_logs

Environment, plugin versions and Site Health; WP-Cron schedule; the end of the debug/PHP error log (1.6.0+, diagnostics:read)

aism_maintenance

Run an already-scheduled cron event now, flush the object cache or permalinks, remove expired transients (1.6.0+, maintenance:write)

aism_users_list, aism_user_get

Review accounts: roles, active login sessions (time, IP, browser), application password names and quarantine state (companion 1.5.0+)

aism_user_quarantine, aism_user_restore

Lock a suspicious account (remove and save its roles, end sessions, delete application passwords, randomize its password, block logins) or restore its roles

aism_sites

List configured site connections

aism_migration_manifest, aism_migration_export, aism_migration_plan, aism_migration_status

Inspect sites, raw export pages, migration plans and progress (read-only)

aism_migration_transfer_package, aism_migration_run, aism_migration_copy, aism_migration_rollback

Transfer plugins/themes, migrate a whole site in resumable steps, copy selected posts, undo a migration

The authenticated site guide is also available as the MCP resource aism://guide. Successful tool results include {status, headers, data}; native pagination headers appear in headers. API failures set MCP isError and include the status and error code. Credentials are redacted from results.

Start with aism_discover, then aism_schema for the relevant resource. aism_content_create defaults posts and pages to draft; publication requires an explicit status. Native JSON fields and query parameters pass through to the plugin. Use context: "edit" to read raw Gutenberg content; preserve it when editing. aism_content_update sends only the supplied fields. Structured settings updates replace the whole value, so read immediately before editing.

The server exposes all tools; the API independently enforces the key's scopes, approved option names and owner's current WordPress capabilities on every request. Read scopes do not permit edits or deletions. Plugin and theme installation adds executable code; grant those permissions only when intended. The gateway has no SQL writes (read-only queries need the separate database:read permission), PHP execution, user creation/deletion/role editing, private metadata access or remote-URL fetching; the only account change is the reversible quarantine, which needs the users:write scope. The tool hints identify reads and destructive operations; clients must still honor the operator's authorization.

Use aism_plugin_update with plugin from aism_plugins_list. Omit file_path for a WordPress-advertised update, or provide an operator-supplied local ZIP to replace that installed plugin (both MCP and companion 1.2.0+). The ZIP must have the same top-level plugin folder and main PHP filename and a strictly newer version. ZIP updates require plugins:write plus update_plugins and upload_plugins, preserve active/inactive status, and reject AI Site Manager itself, multisite mutations, incompatible packages and single-file plugins stored directly in the plugins root. aism_plugin_upload remains for new inactive installations. Re-list plugins after updating; inspect state after timeouts before retrying.

Theme support requires companion plugin 1.1.0 or later and a key issued with themes:read, themes:write and/or themes:delete as needed. Existing keys gain no additional permissions; create a new key to grant theme access. aism_schema accepts themes. Use the stylesheet identifier from aism_themes_list as the theme argument for actions. Installation leaves themes inactive and ZIP uploads never replace installed themes. Switching to another theme deactivates the current one; there is no standalone deactivate action. Deletion rejects the active theme and its parent. Updates use WordPress-advertised packages. Theme mutations support single-site WordPress only.

Network behavior and troubleshooting

  • HTTPS certificate validation remains enabled. Configure trusted certificates through Node's supported certificate configuration if your environment requires a private CA.

  • Credentials go only to the configured API origin. Redirects are refused, including same-origin redirects. Configure the final canonical URL.

  • The explicit AI-Site-Manager-MCP/1.0 User-Agent avoids the default Python-urllib signature that some Cloudflare rules block. Host/firewall policies still apply.

  • Requests are never automatically retried. After a timeout or failed upload, search/read state before retrying: WordPress may already have created the object or file. There is no idempotency, atomic compare-and-swap or rollback.

  • Responses are limited to 16 MiB; use per_page, page and _fields for large collections. Uploads use multipart and enforce the local file limit before sending.

  • A 401 means the key is missing, invalid, expired or revoked. A 403 can mean missing scopes, native capabilities, an unapproved setting, or a host/firewall rejection. Use X-AISM-Key if your host strips Authorization.

  • The normal server writes only MCP protocol messages to stdout. Startup errors go to stderr. --help and --version print human-readable output and exit.

Development

git clone https://github.com/nkd3v/ai-site-manager-mcp.git
cd ai-site-manager-mcp
npm ci
npm run check
npm test
npm pack --dry-run

The upload ZIP is built from an explicit allowlist of companion files; tests, credentials and local artifacts are excluded. To rebuild and verify it, install uv and run:

uv run --system-certs scripts/package-plugin.py

scripts/migration-e2e.mjs runs a full two-site migration through the MCP server against disposable local WordPress sites; see the comments at its top. Tests exercise credential isolation, URL handling, pagination, redirects, uncertain writes, upload limits and real MCP tool/resource calls against simulated API responses. They never modify a live WordPress site. The source is plain JavaScript with no build or install scripts. Package contents are explicitly limited to source, documentation and license.

Every push to main must increase the MCP and companion versions together and rebuild the companion ZIP. The Release workflow rejects unchanged or reused versions, runs validation, and publishes v<version> at the pushed commit with the MCP tarball, WordPress upload ZIP, and SHA256SUMS. Check that the workflow and release succeeded after each push. Repository contributors and agents must follow AGENTS.md.

Built using the official MCP SDK. The initial source commit is created through GitHub's commit API and verified for GitHub's GPG signature.

The JavaScript MCP adapter is MIT licensed. The separately distributed WordPress companion is GPL-2.0-or-later; see its license.

Available Tools

42 tools
aism_content_createB

Create a post/page draft, term, comment or another native resource. Posts/pages default to draft. Upload files with aism_media_upload.

Inputs: data (required), resource (required), site.

aism_content_deleteA
Destructive

Trash an object when supported. force=true permanently deletes it. Media and terms generally require force=true. Only delete objects authorized by the operator.

Inputs: id (required), resource (required), site, force.

aism_content_getA
Read-onlyIdempotent

Read one content, media, term or comment object. Use context=edit for raw fields.

Inputs: id (required), resource (required), site, query.

aism_content_listA
Read-onlyIdempotent

List/search posts, pages, media, terms, comments or discovered custom resources. Includes pagination headers. Also supports types, taxonomies and statuses.

Inputs: resource (required), site, query.

aism_content_updateA
Destructive

Update only supplied fields. Supports posts/pages, media alt text/caption, taxonomy relationships and comment moderation.

Inputs: id (required), data (required), resource (required), site, +1 more.

aism_cron_listA
Read-onlyIdempotent

List every scheduled WP-Cron event with next run time, how overdue it is, schedule, arguments and whether any code listens for it. Requires diagnostics:read.

Inputs: site.

aism_db_queryA
Read-onlyIdempotent

Run ONE read-only SQL query (SELECT, WITH, TABLE, SHOW, DESCRIBE or EXPLAIN) against the site database, for example to count or inspect plugin data. Runs in a read-only transaction with a time limit; comments, write/locking keywords, variables, backslashes and references to the users, usermeta and API key tables are rejected. Use the table prefix from aism_db_tables. Returns columns plus rows as arrays; long values are cut to max_value_bytes and obvious secrets are redacted. Add LIMIT/aggregates for large tables. The SQL is recorded in the site's activity log. Requires database:read and manage_options (companion 1.6.0+).

Inputs: sql (required), site, max_rows, max_value_bytes, +1 more.

aism_db_tableA
Read-onlyIdempotent

Describe one table: columns, types, indexes and exact row count. Requires database:read.

Inputs: table (required), site.

aism_db_tablesA
Read-onlyIdempotent

List this site's database tables with engine, approximate rows, data/index size and whether they are core tables. Tables marked query_blocked hold credentials (users, user meta, API keys) and cannot be queried. Requires database:read and manage_options (companion 1.6.0+).

Inputs: site.

aism_diagnosticsA
Read-onlyIdempotent

Site overview for troubleshooting: WordPress/PHP/database versions and limits, debug and cron constants, active theme, plugins and MU plugins with versions, drop-ins, object cache, cron summary and log files. site_health=true also runs the direct Site Health tests (slower). Requires diagnostics:read and manage_options (companion 1.6.0+).

Inputs: site, site_health.

aism_discoverB
Read-onlyIdempotent

Discover the connected site, key scopes/expiry, resources, approved settings and limits. Call first.

Inputs: site.

aism_guideB
Read-onlyIdempotent

Read the deployed AI Site Manager usage guide.

Inputs: site.

aism_logsA
Read-onlyIdempotent

Read the end of the WordPress debug log (source=debug, WP_DEBUG_LOG) or PHP error log (source=php), optionally only lines containing search. Only these configured files can be read. Requires diagnostics:read.

Inputs: site, lines, search, source.

aism_maintenanceA

Routine maintenance. run_cron runs one already-scheduled event now inside this request (hook from aism_cron_list; pass key when the hook has several argument sets) — works on hosts without working WP-Cron; recurring events are rescheduled. flush_cache empties the object cache, flush_rewrite_rules regenerates permalinks (soft flush), delete_expired_transients removes expired transients. Requires maintenance:write and manage_options (companion 1.6.0+).

Inputs: action (required), key, hook, site, +1 more.

aism_media_uploadB

Upload a local file using multipart. Does not download remote URLs. Host file-type/size rules and media:write apply.

Inputs: file_path (required), post, site, title, +2 more.

aism_migration_copyA
Destructive

Copy selected posts/pages (any type) from one site to another with their categories/tags, featured images, embedded media and reusable blocks, then remap IDs and URLs. Copying again updates the earlier copies.

Inputs: ids (required), source (required), target (required), status, +6 more.

aism_migration_exportA
Read-onlyIdempotent

Read one raw export page from a site (terms, posts of any type including attachments/menus/templates, comments or site settings) for inspection. aism_migration_run and aism_migration_copy do this automatically.

Inputs: kind (required), ids, page, site, +3 more.

aism_migration_manifestA
Read-onlyIdempotent

Read a site's migration manifest: site UUID, URLs, versions, themes, plugins, content counts per post type/taxonomy, capabilities and what is not migrated. Requires migration:read (companion 1.4.0+).

Inputs: site.

aism_migration_planA
Read-onlyIdempotent

Compare two configured sites before migrating: versions, missing/outdated themes and plugins, post types and taxonomies the target cannot store yet, a previous migration, and recommended steps. Read-only.

Inputs: source (required), target (required).

aism_migration_rollbackA
Destructive

Undo a migration on the target: permanently delete posts, media files, terms, comments and user accounts the migration created (their remaining content goes to the key owner), restore site settings it changed, and forget its ID map. Objects matched to pre-existing target content are kept. Requires migration:delete on the target.

Inputs: target (required), source, max_seconds, source_uuid.

aism_migration_runA
Destructive

Migrate a whole site in resumable steps: terms, site settings (front page, permalinks, media sizes, widgets, customizer), media (original files), all content types including menus, templates, global styles and patterns, comments, then a finalize pass that remaps IDs and rewrites source URLs to the target. User accounts come first, with their roles, profile and password hashes so people keep their passwords (needs users:read on the source key and users:write on the target key, companion 1.7.0+; otherwise authors are only matched by login/email). Target accounts with the same login or email are mapped, never changed. Returns within max_seconds; call again with the returned cursor until done is true. Re-running updates already migrated objects instead of duplicating them, so it also works as an incremental sync (with modified_after). Overwrites target settings and previously migrated objects, including passwords of accounts an earlier run created (use phases or on_existing=skip to avoid that).

Inputs: source (required), target (required), cursor, phases, +9 more.

aism_migration_statusA
Read-onlyIdempotent

Compare source content counts with what has been migrated into the target, and report finalize state. Read-only.

Inputs: source (required), target (required).

aism_migration_transfer_packageA
Destructive

Install a plugin or theme from the source on the target, inactive unless activate=true. from=source copies the exact installed files (custom and premium code included); from=wordpress.org installs by slug. Missing parent themes are transferred first. Installed plugins with an older version are updated from the source ZIP. Requires migration:read on the source and plugins:write/themes:write on the target. Adds executable code.

Inputs: id (required), type (required), source (required), target (required), +2 more.

aism_plugin_actionA
Destructive

Activate/deactivate/update/delete an installed plugin. Deletion requires plugins:delete and an inactive plugin. Updates use the WordPress-advertised package. AI Site Manager cannot manage itself; multisite mutations are unavailable.

Inputs: action (required), plugin (required), site.

aism_plugin_installA
Destructive

Install a WordPress.org plugin inactive. Requires plugins:write and native install capability. Installation adds executable code.

Inputs: slug (required), site.

aism_plugins_listA
Read-onlyIdempotent

List installed plugins and their identifiers/status.

Inputs: site.

aism_plugin_updateA
Destructive

Update an installed plugin. Omit file_path to use the WordPress-advertised update, or supply a local ZIP with the same plugin folder/main file and a newer version (companion 1.2.0+). ZIP replacement preserves activation and requires plugins:write plus update/upload capabilities. AI Site Manager cannot update itself; multisite mutations are unavailable.

Inputs: plugin (required), site, file_path.

aism_plugin_uploadA
Destructive

Install a new local plugin ZIP inactive without replacing existing plugins. Requires plugins:write plus native install/upload capabilities.

Inputs: file_path (required), site.

aism_revisionsB
Read-onlyIdempotent

Read a post/page revision list or one revision. Revision mutation is unavailable.

Inputs: id (required), resource (required), site, query, +1 more.

aism_schemaB
Read-onlyIdempotent

Read native schemas and endpoint arguments before working with a resource.

Inputs: resource (required), site.

aism_settings_getA
Read-onlyIdempotent

Read one approved option value and its schema.

Inputs: option (required), site.

aism_settings_listA
Read-onlyIdempotent

List exact approved option names and schemas; does not return values.

Inputs: site.

aism_settings_updateA
Destructive

Replace the ENTIRE value of one approved option. Read it immediately before editing; preserve unrelated object fields. No compare-and-swap exists.

Inputs: value (required), option (required), site.

aism_sitesA
Read-onlyIdempotent

List configured site connections (names, API base URLs, default). Keys are never shown.

Inputs: no named parameters.

aism_theme_actionA
Destructive

Activate/update/delete an installed theme using its stylesheet identifier from aism_themes_list. Activate another theme to deactivate the current one. Deletion requires themes:delete and cannot remove the active theme or its parent. Updates use the WordPress-advertised package. Multisite mutations are unavailable.

Inputs: theme (required), action (required), site.

aism_theme_installA
Destructive

Install a WordPress.org theme inactive. Core may install a missing parent. Requires themes:write and install_themes. Installation adds executable code.

Inputs: slug (required), site.

aism_themes_listA
Read-onlyIdempotent

List installed themes with stylesheet identifiers, versions and active/inactive status. Requires themes:read and native theme access.

Inputs: site.

aism_theme_uploadA
Destructive

Install a new local theme ZIP inactive without replacing existing themes. Requires themes:write plus native install/upload capabilities.

Inputs: file_path (required), site.

aism_user_getA
Read-onlyIdempotent

Read one user account for review (same fields as aism_users_list). Requires users:read.

Inputs: id (required), site.

aism_user_quarantineA
Destructive

Lock a suspicious account without deleting it: saves and removes all its roles, signs out every session, deletes its application passwords, sets a random password and blocks all logins and password resets until restored. Refuses the key owner and the last active administrator. Use only on accounts the operator asked to disable. Requires users:write plus promote_users/edit_user (companion 1.5.0+).

Inputs: id (required), site, reason.

aism_user_restoreA
Destructive

Lift a quarantine and restore the account's saved roles. The password stays random and deleted application passwords are not restored. Requires users:write.

Inputs: id (required), site.

aism_users_listA
Read-onlyIdempotent

Review user accounts: login, email, roles, registration date, active login sessions (time, IP, browser), application password names and quarantine state. Never returns password hashes or tokens. Includes pagination headers. Requires users:read and list_users (companion 1.5.0+).

Inputs: page, role, site, search, +1 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 42 tools

    Disambiguation3/5

    Most tools map cleanly to a resource+action (content_list vs content_get vs content_delete, db_tables vs db_table vs db_query), and the migration family is well differentiated by lifecycle stage. However there are genuine overlaps: aism_plugin_update duplicates the update behavior described inside aism_plugin_action, and aism_plugin_install vs aism_plugin_upload (and the theme equivalents) require careful reading to choose correctly. aism_migration_export also overlaps conceptually with run/copy, which the description itself has to excuse.

    Naming Consistency4/5

    All 42 tools share the aism_ prefix and snake_case, which is highly predictable. Deviations are minor but present: singular/plural mismatch for the same resource (aism_plugin_upload vs aism_plugins_list, aism_theme_install vs aism_themes_list), and several tools drop the verb entirely (aism_revisions, aism_sites, aism_diagnostics, aism_logs) while others use resource_verb ordering (aism_content_list) or verb_resource ordering (aism_discover).

    Tool Count3/5

    42 tools is heavy, but the server genuinely spans content, media, plugins, themes, users, database, migrations, diagnostics, cron, logs and settings, so most tools earn their place. Still, the surface could be trimmed — the standalone aism_plugin_update is largely redundant with aism_plugin_action, and the upload/install split doubles the plugin and theme surfaces. It sits above the comfortable 3-15 range even for a broad admin domain.

    Completeness4/5

    Coverage is unusually broad: content CRUD, media upload, plugin/theme install-activate-update-delete, user review and quarantine/restore, options read/write, read-only SQL, diagnostics, cron, logs and a full multi-site migration lifecycle. Remaining gaps are small but real — no user creation or role editing, and aism_sites can only list connections, with no way to add, update or remove a site connection. Revisions are explicitly read-only, which is a documented limitation rather than a silent hole.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables MCP clients to connect to WordPress sites running the SitePilot plugin by handling local transport, login, and credential management while letting WordPress enforce policies and expose its live tool list.
      19 npm
      Apache 2.0
    • A
      license
      B
      quality
      C
      maintenance
      Enables MCP-compatible clients to securely operate a WordPress site through a signed REST API, managing plugins, content, themes, menus, media, users, WooCommerce, Elementor, audits, and allowlisted WP-CLI commands.
      58
      65 npm
      MIT