| 开发者 | mirumd |
|---|---|
| 更新时间 | 2026年11月13日 04:29 |
| 捐献地址: | 去捐款 |
| PHP版本: | 8.2 及以上 |
| WordPress版本: | 7.1 |
| 版权: | GPLv2 or later |
| 版权网址: | 版权信息 |
https://yourstore.com/mcp, and apps connect through a browser consent flow (OAuth 2.1), never a copied key.
describe_woocommerce_fields reveals the rest when one is needed.
Visibility is decided by WooCommerce too: before a tool is offered, this plugin runs WooCommerce's own permission check for that endpoint. A shop manager therefore sees a different set of tools from an administrator, without this plugin keeping a list of who may do what.
Works with your other plugins
Off until you switch each on: WPML, Germanized and Germanized Pro, Contact Form 7, Flamingo, Advanced Custom Fields, Shipment Tracking, Cost of Goods, URL Coupons, and abilities from Yoast SEO, Rank Math, WPForms and others. An assistant can preview most catalog changes, and undo them for 30 days. The FAQ has the details.
Two ways to use AI with your store
Chat inside wp-admin, on the AI model WordPress manages under Settings → Connectors (WordPress 7.0 and later), or with your own key on Claude, ChatGPT, Gemini, Grok, Mistral, DeepSeek, any model on OpenRouter, or a local Ollama model. Any other OpenAI-compatible endpoint works too. It uses the same tools an outside app would, and a change that is not easily undone waits for your Approve button.
Connect the AI apps you already use. Paste one URL into Claude, ChatGPT, Claude Code or any other MCP client, or add the store to Cursor and VS Code in one click. No token to create, no local proxy, no Node.js.
More than tools
https://yourstore.com/mcp) into Claude, ChatGPT, Claude Code, Cursor or VS Code — or use the one-click install buttons.Yes. Every tool, the chat, Rewrites, the weekly report, OAuth and the activity log are in the one free plugin, licensed GPLv2 or later. There is no Pro version and nothing is unlocked by paying. If it saves you time, you can support its maintenance through GitHub Sponsors.
Add the endpoint URL (https://yourstore.com/mcp) to your MCP client — no token needed. The client discovers the OAuth authorization server, opens your browser to a consent screen, and you approve what it may do. Approved apps appear under Connect apps › Connected apps.
Two causes: (1) pretty permalinks — the endpoint is also available at /wp-json/counterhand/v1/mcp, and re-saving Settings → Permalinks refreshes rewrite rules; (2) some servers block /.well-known/ paths. OAuth discovery lives at /.well-known/oauth-protected-resource, so your server must allow that path. On nginx, add before any dotfile-deny rule:
location ^~ /.well-known/ { try_files $uri $uri/ /index.php?$args; }
Any MCP client implementing the current authorization spec (OAuth 2.1 + PKCE + Protected Resource Metadata, with CIMD client identity): Claude on web, mobile and desktop, ChatGPT, Claude Code, Cursor, VS Code, and others.
Choose one under Chat: Claude (Anthropic), ChatGPT (OpenAI), Gemini (Google), Grok (xAI), Mistral, DeepSeek, OpenRouter with one key for many vendors' models, or Ollama on your own server. Any other endpoint that speaks OpenAI's chat format works too, such as LM Studio or vLLM: choose "Custom OpenAI-compatible endpoint" and enter its address. The model must be able to call tools. On WordPress 7.0 and later the chat can also use the model WordPress manages under Settings → Connectors.
Those apps connect from the vendor's own servers, not from your browser, so your store has to be reachable from the public internet over HTTPS. A local development site works fine with Claude Code, Cursor and VS Code, which connect from your own machine. The Connect apps screen checks this for you and says which of the two situations you are in.
Three things have to agree before a tool is callable: its area is switched on under Access, the app was granted it on the consent screen, and WooCommerce's own permission check passes for the logged-in owner of the connection. If any one of them says no, the tool is invisible and uncallable — it is never merely hidden. Check Access first, then reconnect the app: a connection only ever holds what it was approved with.
The things that could are gated separately. Store settings, payment gateways and system maintenance are their own areas, off by default, sitting behind a folded Advanced heading that is never pre-ticked; each of their write tools requires an explicit confirmation; and the maintenance routines that cannot be undone are refused whatever an assistant sends. Calls to those three areas are recorded in Activity even if you have recording switched off.
The security model is OAuth-first. If you need a raw bearer token for a script or CI job, use the counterhand_rate_limit and related filters documented in the plugin, or open an issue on GitHub — a developer token path may be added.
On WordPress 6.9 or newer, abilities that other plugins offer to AI clients, such as Yoast SEO's post SEO data and WPForms' forms, appear as tools under Access › Other plugins. Each plugin is off until you switch it on, has its own read and write permission on the consent screen, and still runs its own permission check. Every write needs explicit confirmation, and every call is recorded in Activity. A connection holds only the tools listed when you approved it: anything a plugin adds in a later update stays off until you connect the app again. WooCommerce's and WordPress's own abilities are not bridged, because the tools above already cover them under their own permissions.
With Contact Form 7 active, an assistant can list, create, edit and delete its forms. With Flamingo active, it can read the form submissions Flamingo stores and move them to the trash. Each is off until you switch it on under Access › Other plugins, and has its own permissions on the consent screen. Flamingo's messages hold personal data, so grant them only to an app you trust with it. Editing or deleting a form, and removing a message, need explicit confirmation.
With ACF active, an assistant can read and change custom field values on posts, pages and products, for field groups with "Show in REST API" switched on. Password fields are never returned or set. It is off until you switch it on under Access › Other plugins, and it cannot change anything else about those items.
With Germanized active, an assistant can manage delivery times, units, price labels, deposit types, manufacturers, nutrients and allergens, and set these legal details on products, for example to find products missing a delivery time. It is off until you switch it on under Access › Other plugins. It cannot change a product's price, status or tax status through these tools, though a deposit set on a product is added to what customers pay. Bank details are never included. Changes to products and deposit types, and every deletion, need explicit confirmation.
With WPML and WooCommerce Multilingual active, an assistant can find products, categories, tags and attribute terms missing a translation, add translations and change their text, including variations, custom text fields and strings such as email subjects. It is off until you switch it on under Access › Other plugins. It cannot change an original, or any price or stock: those come from the original. A new product translation starts as a draft, and publishing it needs explicit confirmation. Category, tag and attribute translations are visible as soon as they are saved. Setting a string needs explicit confirmation, and payment settings are out of reach. Have a person check any translated legal wording, such as withdrawal or safety text. Whatever you switch on, a product changed through any tool now updates its translations too, as it does in the WooCommerce REST API. With Multilingual's multi-currency mode on, the product tools can also read and set a product's own price in each currency.
Each of these is off until you switch it on under Access › Other plugins.
An assistant can ask what a change to a product, variation, category, coupon, shipping or tax setting, post or page would do before saving it. With "Undo history" switched on under Access and granted to an app, it can also undo that connection's own changes for 30 days. An undo needs explicit confirmation, checks the result, and restores the record, not what followed from it: emails already sent stay sent, orders already placed keep their prices, and a price customers saw may still count as your lowest in the last 30 days. It is refused if the fields have changed again, or if something created has since been edited or sold. Orders, refunds, customers, reviews, payment gateways, store settings, custom fields and other plugins' tools are not covered, a deletion cannot be undone, and some changes, such as a shipping method's settings, say they have no undo.
Clients that support MCP prompts can offer these as slash commands: sales review, restock list, order triage, refund review, catalog check and coupon review, plus missing translations with WPML and a legal details check with Germanized. Each appears only if the connection can reach every tool it needs, and each proposes rather than changes anything. Clients can also read a short store profile, so an assistant knows the currency, tax setup and what it can reach before it starts.
Bugs and feature requests: the GitHub issue tracker or the support forum here. Security issues: please report them privately as described in the repository's SECURITY.md rather than in a public thread.
Yes. Each site of a network has its own connections, its own switch and its own tables, and starts switched off. In a subfolder, or on a subsite, assistants look for /your-folder/.well-known/..., so a web server that blocks every path starting with a dot must let .well-known through at that level too.