| 开发者 | urbankidro |
|---|---|
| 更新时间 | 2026年5月21日 19:22 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.0 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
No. Inhale: MCP Abilities is a settings-only utility. The whole point is to replace the PHP-filter workaround with a UI.
Inhale: MCP Abilities works alongside the WordPress AI plugin without conflicts. The WordPress AI plugin handles AI-powered editor features inside wp-admin. The Inhale: MCP Abilities plugin handles which abilities are exposed to external MCP clients via the MCP Adapter.
The Inhale: MCP Abilities plugin is conservative by default: no abilities are exposed until you explicitly check them, and destructive abilities require additional confirmation. Inhale: MCP Abilities doesn't change how WordPress abilities work; it only controls their visibility to the default MCP server. Each ability still runs its own permission checks before execution.
Inhale: MCP Abilities is a free utility built and maintained by Respira. Respira's main product is Respira for WordPress, a safety layer for AI-driven edits across 12 page builders. The two products are separate. You can use the Inhale: MCP Abilities plugin without ever using Respira for WordPress.
Yes, if you inhale abilities that perform writes. Whether a particular ability performs writes is determined by the plugin that registered the ability, not by Inhale: MCP Abilities. The Inhale: MCP Abilities plugin surfaces annotation metadata (destructive, idempotent) where the registering plugin has provided it, so you can make informed decisions.
utm_source=inhale plus a utm_medium and utm_campaign that name the specific click location (settings-header, settings-docs, settings-footer, readme-description). This lets Respira measure how many sign-ups and how much revenue on respira.press are attributable to the Inhale plugin as a referral channel, without any change to the destination pages or any extra plugin code. The plugin itself does not call out, fetch, or send anything to respira.press at runtime; the UTM tags only matter when a human clicks a link.wp mcp-adapter serve subcommand (was wp mcp stdio, which is not a registered subcommand and resulted in a "command not found" error when pasted into Claude Desktop). The snippet also includes --user=admin so the serve process runs with admin capabilities and can read the registered abilities.RESPIRA_INHALE_* / Respira_Inhale_* / respira_inhale_* (was INHALE_* / Inhale_* / inhale_*). Class files renamed to class-respira-inhale-*.php. The new prefix is unique to this plugin and does not collide with the wider respira_* namespace used by the main Respira for WordPress plugin.respira_inhale_public_abilities. The plugin also mirrors writes to mcp_adapter_public_abilities (the canonical key proposed in WordPress/mcp-adapter#184) and reads it as a fallback, so the two surfaces share state if and when the upstream adapter ships its own settings UI. A one-shot migration on plugin upgrade copies any prior selections (v0.1.x legacy key or v0.2.x-v0.3.x canonical-only key) onto the new prefixed key and removes the old options.rest_url(). The Connection section endpoint URL is now generated via rest_url('mcp/mcp-adapter-default-server') instead of concatenating home_url() with a hardcoded /wp-json path, so it resolves correctly on installs with non-standard REST base configuration, sub-directory permalinks, and multisite blogs.inhale-mcp-abilities is unchanged.Contributors field in readme.txt now lists the wp.org-owner username (urbankidro) instead of the brand string. The Author plugin header still reads "Respira" so the visible attribution on the wp.org directory page is unchanged.__() call so PCP's i18n linter sees it. Inline phpcs:ignore annotations added on the read-only $_GET['notice'] display path (post-redirect-get banner; no state change, value whitelisted) and on the $_POST['abilities'] array read (sanitized per element below). Inhale_I18n drops the now-discouraged load_plugin_textdomain() call since wp.org auto-loads translations for plugins hosted in the Plugin Directory. Multisite-cleanup variables in uninstall.php prefixed ($inhale_sites, $inhale_site_id) to satisfy the PrefixAllGlobals rule.admin.min.css / admin.min.js duplicates have been removed; the single admin.css / admin.js files are the only enqueued assets. The Plugin Directory prefers human-readable code; the admin page is small and loaded on one settings screen only, so a separate minified bundle wasn't pulling any real payload weight.export-ignore attribute, so the submission zip stays focused on runtime files.esc_attr / esc_html / esc_url, every input is sanitized and capability-checked, every state-changing request is nonce-verified, and translatable strings carry a text domain matching the plugin slug.--accent-text and --accent-border tokens so contrast is AA on light and dark surfaces..inhale-wrap selector and the dark variant only redefines color tokens. A body class (inhale-theme-dark) mirrors the data-theme attribute so the WP admin content column, sidebar and footer all paint dark together with no "white band" anywhere on the page.uninstall.php now removes every option this plugin has ever written: the canonical mcp_adapter_public_abilities key (v0.2.0+), the legacy inhale_mcp_abilities_public_abilities key (v0.1.x), and the inhale_option_migrated_v020 migration flag. Multisite installations sweep every blog in get_sites() so no orphaned wp_options rows remain.LICENSE..inhale-wrap instead of only the dark variant, so toggling theme no longer pushes the title up or down.#wpbody-content dark too when the dark theme is active, via a body class (inhale-theme-dark) the JS adds in lockstep with the data-theme attribute. Closes the "white bar at the top" gap between the WP admin bar and the Inhale page in dark mode.remove_all_actions( 'admin_notices' / 'all_admin_notices' / 'user_admin_notices' / 'network_admin_notices' ) on the current_screen hook, scoped to settings_page_inhale-mcp-abilities.v0.2.2). Pill uses the emerald accent palette and the mono font, sized 11px, focus-visible underline on the linked attribution.mcp_adapter_public_abilities from v0.2.0.inhale_mcp_abilities_public_abilities to the canonical mcp_adapter_public_abilities so Inhale shares storage with the settings UI proposed upstream in WordPress/mcp-adapter PR #184. A one-shot migration on plugin upgrade preserves all v0.1.x selections, deletes the legacy key, and sets a inhale_option_migrated_v020 flag so it runs once.wp_die(), so access logs and automated clients see an authorization failure instead of a generic error.<tr> class attribute through esc_attr() instead of conditionally injecting the attribute fragment. No behavioral change, conforms more strictly to the WordPress Plugin Check WordPress.Security.EscapeOutput rule.manage_options capability.wp_get_abilities()) and lists them in a wp-admin native list table.wp_register_ability_args at priority 10) is the only writer to ability meta; existing meta on opted-in abilities is preserved.mcp-adapter/* namespace) are surfaced as read-only "Managed" rows and skipped by the filter.