| 开发者 | bilalnaseer |
|---|---|
| 更新时间 | 2026年9月11日 22:58 |
| PHP版本: | 7.4 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPL-2.0-or-later |
| 版权网址: | 版权信息 |
Authorization: Bearer or X-WSP-MCP-API-Key).wp_kses_post()manage_woocommerce capability)
manage_options; value tools enforce per-object capabilities)
gravityforms_edit_forms or gravityforms_view_entries; writes require form/entry-specific Gravity Forms caps)
edit_posts, publish_posts, or manage_options)
wp_kses_post()/wp-content/plugins/ and activate it.No. This plugin includes its own MCP server and connects directly. As of v2.2 the older MCP Adapter / Abilities-API compatibility path has been removed; connect using the native endpoint shown on MCP > Connection.
Use a WordPress Application Password (sent via HTTP Basic auth) or the plugin-generated API key shown on the Connection page. Either is validated on every request, and tool actions are limited by the authenticated user's capabilities.
Any client that supports the Streamable HTTP MCP transport — Claude Desktop, MCP Inspector, IDEs, and scripts.
Watch the step-by-step video tutorial: https://youtu.be/GLyLzxVOxm4
Watch the step-by-step video tutorial: https://youtu.be/2gRIRcqqOpo
Watch the step-by-step video tutorial: https://youtu.be/hxhjs3IUYQE
wp_wsp_mcp_audit_log), which now also records each request's ability category and execution duration in milliseconds — no external service involved. Restricted to administrators (manage_options).https://example.com/test/) could leave a connected connector with "no tools available." Discovery documents are now served at every URL spelling this install can actually reach, and the two-install-on-one-domain case is disambiguated with a base-path-aware issuer identity.edit_posts / delete_posts) and not object-level permission. A Contributor authenticating with their own Application Password could edit, publish, unpublish or trash a post, page or attachment owned by an Administrator or Editor once the write tool was enabled. All of these callbacks now load the target object and enforce current_user_can( 'edit_post', $id ) / current_user_can( 'delete_post', $id ), restrict each tool to its expected post type, and require the post type's publish capability before accepting a publish, future or private status. New shared helper file includes/abilities/guard.php.tools/call request is now recorded in a dedicated, self-hosted database table (wp_wsp_mcp_audit_log) — tool name, timestamp, acting user, request IP, and outcome (success, denied, or error). No external API or paid service is involved.manage_options), matching every other MCP admin screen.wsp_mcp_audit_log_retention_days) are pruned automatically by a daily cron task, so the table stays lightweight.initialize. Clients that send tools/list immediately (Claude Desktop via mcp-remote, and any fast script) landed in the same second as the initialize that created the session, so the expiry-sliding UPDATE wrote the value already stored and MySQL/MariaDB reported 0 changed rows — which the plugin read as a missing session. A zero-row update is now confirmed with an existence check before the session is rejected. Adding a delay before the second request is no longer necessary. Fixes GitHub #30.wsp_upload_media (Upload Media) now accepts base64 file content via a new data parameter — an MCP client can upload a file attached to the chat straight into the media library without first hosting it at a public URL. The url parameter still works as before; pass either one. An optional mime_type hint and data: URI prefixes are supported. Only image types (jpg, png, gif, webp) are allowed, decoded bytes are written through media_handle_sideload(), and the tool still requires upload_files. Fixes GitHub #17.wsp_elementor_sanitize_settings() (strips custom_css, custom_attributes, and dynamic keys); update-active-kit and regenerate-css require manage_options, the rest require edit_posts.wpforms_view_forms / wpforms_edit_forms for forms and wpforms_view_entries / wpforms_edit_entries for entries.wpcf7_edit_contact_forms and wpcf7_delete_contact_forms; get-integrations requires manage_options.gravityforms_create_form. No behavioral code changes.gravityforms_edit_forms, gravityforms_create_form, gravityforms_view_entries, etc.). Only registered when Gravity Forms is active (class_exists('GFAPI')).column type.wp_kses_post(); each tool enforces a strict capability check (edit_posts, publish_posts, or manage_options).update_field() — for posts, users, terms, and options — is now recursively sanitized (arrays walked; each string run through wp_kses_post()) so <script>/<style> and inline event handlers can no longer be stored through the MCP tools. Legitimate WYSIWYG/HTML field content still works. Addresses the WordPress.org "arbitrary code insertion" review finding.~/.config/opencode/opencode.json file with the API key inlined in the header, ready to create and paste.wp_kses_post() so scripts cannot be injected via _elementor_data.manage_options (was edit_posts), matching the admin-level nature of global options.wsp_register_acf_abilities() dual-mode registration helper (dead code, not hooked).Requires at least now uses the major-only WordPress version format (6.9).manage_options; value reads/writes enforce per-object capabilities (edit_post, edit_user, list_users, manage_categories, manage_options).wsp-mcp-ai-agents-connector (folder, main file, and text domain) to match the public name ahead of WordPress.org submission.manage_woocommerce capability.