WooCommerce MCP åpen kildekode: kun-lesing butikktilgang for KI-agenter
På WooCommerce-til-ERP-prosjekter dukker det samme spørsmålet opp i kickoff-samtaler: kan KI-en bare sjekke butikken? Det ærlige svaret er ja - hvis den ikke kan ødelegge noe. Den begrensningen er grunnen til at vi slipper woocommerce-mcp som åpen kildekode: en liten Model Context Protocol (MCP)-server som svarer på live spørsmål om produkter, lager, ordrer, salg og innlegg over de offisielle REST API-ene, med ingen skriving og ingen plugin installert i butikken.
Denne artikkelen er utgivelses- og driftsguiden for den publiserte pakken. Hvis du trenger å designe en egendefinert server fra bunnen av (inkludert muterende verktøy eller Workers-deploy), bruk følgesguiden Building an MCP server for WooCommerce. For det kommersielle programmet, se MCP-server-utvikling og WooCommerce ERP-integrasjon. Relatert nordisk MCP-kontekst finner du også i MCP-server i WordPress-plugin og WordPress Playground MCP for KI-agenter.
TL;DR
- Pakke:
@wppoland/woocommerce-mcppå npm (CLI-binæren heter fortsattwoocommerce-mcp). - Registry:
io.github.wppoland/woocommerce-mcpi det offisielle MCP Registry. - Fem skrivebeskyttede verktøy over WooCommerce / WordPress REST - kun Read-nøkler.
- Ingen butikk-side plugin. MIT, TypeScript, Node 18+.
- Bruk dette når agenter trenger fakta fra katalogen og ordrene; bygg egendefinert MCP når du trenger skriving eller ERP-spesifikke verktøy.
Hvorfor vi slipper en skrivebeskyttet MCP-server
MCP gir en LLM-vert (Claude Desktop, Cursor, en egendefinert agent) en typet tools/list-flate i stedet for å tvinge modellen til å finne opp /wp-json/wc/v3/-stier. Det er nyttig. Det er også farlig hvis hvert verktøy kan mutere lager, refusjoner eller kundedata.
På ERP-synk-arbeid ser vi to feilmoduser oftere enn smarte promptfeil:
- Oversalg under Black Week fordi en skrivebane race-et et grossist-/lagerfeed.
- Utilsiktede statusendringer når en agent «hjelpsomt» markerte ordrer som fullført under feilsøking.
Skrivebeskyttet MCP fikser ikke dårlig ERP-design. Den fjerner én klasse utilsiktede skriveoperasjoner fra agentplanet. Butikken forblir autoritativ kilde gjennom WooCommerce REST. Agenten bare spør.
Vi dokumenterte protokollvalget i MCP vs REST: when each wins og autentiseringsflaten i MCP authentication patterns. Denne utgivelsen er den konkrete binæren du kan installere i dag.
Hva som ble levert (juli 2026)
| Flate | URL / identifikator |
|---|---|
| npm | https://www.npmjs.com/package/@wppoland/woocommerce-mcp |
| GitHub | https://github.com/wppoland/woocommerce-mcp |
| MCP Registry | io.github.wppoland/woocommerce-mcp |
| DEV-artikkel | https://dev.to/wppolandcom/a-read-only-mcp-server-for-woocommerce-what-ai-agents-actually-need-from-a-store-3fk6 |
| Product Hunt | https://www.producthunt.com/products/woocommerce-mcp |
| Show HN | https://news.ycombinator.com/item?id=48815903 |
Versjon 0.1.1 er installasjonsmålet. Versjon 0.1.0 eksisterte kort som en mislykket registry-stub - en konfliktende legacy _auth-linje i lokal ~/.npmrc ødela den publishen. Ignorer 0.1.0.
Hvorfor npm-navnet er @wppoland/woocommerce-mcp
Navnet uten prefiks woocommerce-mcp er låst på npm (E403) etter at en annen part avpubliserte det. Vi publiserer som @wppoland/woocommerce-mcp. Bruk det navnet til npm install / npx. bin-feltet i package.json eksponerer fortsatt kommandoen woocommerce-mcp, så Claude Desktop- og Cursor-konfigurasjoner beholder samme binærnavn.
mcpName i package.json er io.github.wppoland/woocommerce-mcp. Den strengen må matche MCP Registry server.json name-feltet slik at eierskapsverifisering lykkes når du publiserer med den offisielle mcp-publisher CLI-en.
Verktøyflate
| Verktøy | Formål | WooCommerce-nøkler |
|---|---|---|
list_products | Søk / list produkter (navn, SKU, pris, lager, permalink) | ja |
get_product | Fullt produkt etter id | ja |
list_orders | Nylige ordrer, valgfri statusfilter | ja |
sales_report | Totaler for week / month / last_month / year | ja |
search_posts | Publiserte innlegg via offentlig WordPress REST | nei |
Alt valideres ved MCP-grensen og kaller deretter REST. Det finnes ingen sti i denne pakken som oppretter produkter, oppdaterer lager, refunderer ordrer eller installerer plugins.
Spørsmål disse verktøyene faktisk svarer på
- Hvilke SKU-er er på null lager før en kampanje?
- Hva solgte vi forrige måned i netto termer butikken allerede rapporterer?
- Hva var de siste tjue ordrene med status processing?
- Er butikken tilgjengelig med nøklene vi utstedte?
Det er spørsmålene som dukker opp på ERP-integrasjons-standup. Det er også spørsmålene som ikke krever skrivetilgang.
Installer og konfigurer
Forutsetninger
- Node.js 18 eller nyere
- En WooCommerce-butikk på HTTPS
- Mulighet til å opprette REST API-nøkler med Read-tilgang
Installasjon
npm install -g @wppoland/woocommerce-mcp
# or one-shot:
npx @wppoland/woocommerce-mcp
Fra kildekode:
git clone https://github.com/wppoland/woocommerce-mcp.git
cd woocommerce-mcp
npm install
npm run build
Miljøvariabler
| Variabel | Påkrevd | Eksempel |
|---|---|---|
WP_URL | ja | https://shop.example.com |
WC_CONSUMER_KEY | for Woo-verktøy | ck_… |
WC_CONSUMER_SECRET | for Woo-verktøy | cs_… |
Opprett nøkler under WooCommerce → Innstillinger → Avansert → REST API → Legg til nøkkel. Tilgang: Read. Hvis noen gir deg Read/Write «bare i tilfelle», nekt. Pakken trenger ikke skrivescope, og å holde ubrukte skrivescope er en hendelse som venter på en kompromittert laptop.
search_posts fungerer mot det offentlige WordPress REST API uten Woo-nøkler. Det er nyttig for innholdsagenter; det er fortsatt ikke en grunn til å eksponere admin-informasjonskapsler for MCP-verten.
Claude Desktop / Cursor-skisse
Registrer en stdio-server som kjører binæren med de tre miljøvariablene. Eksakte JSON-former varierer etter klientversjon; invarianten er: stdio, env injisert av verten, ingen hemmeligheter i chat-transkriptet.
Etter tilkobling, spør noe falsifiserbart: «Hva er lageret for SKU X?» Hvis agenten finner opp et tall uten et verktøykall, er klienten din ikke faktisk koblet. Hvis den kaller list_products eller get_product og returnerer butikkverdien, er du ferdig med røyktesten.
Eksempel på Claude Desktop-fragment
Klientkonfigurasjonsformater endres; behandle dette som en form, ikke en evig kontrakt:
{
"mcpServers": {
"woocommerce-mcp": {
"command": "woocommerce-mcp",
"env": {
"WP_URL": "https://shop.example.com",
"WC_CONSUMER_KEY": "ck_replace_me",
"WC_CONSUMER_SECRET": "cs_replace_me"
}
}
}
}
Foretrekk full sti til binæren fra npm root -g hvis shell PATH inne i skrivebordsappen er tynnere enn terminal PATH. Cursor og andre verter bruker lignende stdio + env-mønstre.
Feilsøking av installasjoner
| Symptom | Sannsynlig årsak | Fiks |
|---|---|---|
E403 ved publisering av navn uten prefiks | Navn låst etter tredjeparts avpublisering | Bruk @wppoland/woocommerce-mcp |
| Agent svarer uten verktøykall | Server ikke registrert / feil kommando | Sjekk klientens MCP-panel; restart vert |
| 401 fra Woo REST | Feil nøkler eller HTTP-URL | Utsted Read-nøkler på nytt; tving HTTPS |
| Tom produktliste | Nøkkel for feil nettsted / staging | Bekreft at WP_URL matcher nøkkelens nettsted |
| Registry publish 422 på description | Description > 100 tegn | Forkort server.json-description |
Hvis npm view @wppoland/woocommerce-mcp version returnerer 404 mens npm access fortsatt lister pakken, er du i den ødelagte stub-tilstanden vi traff på 0.1.0. Bump versjonen, fjern legacy registry.npmjs.org/:_auth fra ~/.npmrc hvis den finnes, og publiser på nytt. Ikke be butikkeiere om å installere en versjon du ikke kan npm pack.
Sikkerhetsmodell (klart språk)
- Nøkler blir på MCP-verten, ikke i butikken som en plugin og ikke i modellvektene.
- Kun Read-tilgang på WooCommerce-nøkkelen.
- Kun HTTPS for
WP_URL. - Behandle MCP-klientmaskinen som produksjon hvis den holder live-nøkler - samme barre som et CI-hemmelighetslager.
- Roter nøkler når en laptop forlater selskapet eller et konsulentengasjement avsluttes.
MCP løser ikke autentisering magisk. Vår lengre behandling er MCP authentication patterns. For denne pakken er den konservative standarden lokal stdio med Read-nøkler, ikke et offentlig HTTP MCP-endepunkt på det åpne internettet.
Trusselnotater som dukker opp i ekte gjennomganger
- Laptoptyveri: Read-nøkler lekker katalog- og ordremetadata. Det er fortsatt GDPR-/personvernrelevant. Krypter disk, bruk kortlivede nøkler for demoer, tilbakekall ved offboarding.
- Prompt injection via produktbeskrivelser: En ondsinnet produkttittel får ikke denne pakken til å skrive, men den kan styre modellens tale. Hold upålitelig katalogtekst utenfor høyrisiko-automatisering uten et menneske i løkken.
- Confused deputy via delte MCP-verter: Én Claude Desktop-profil med nøkler for butikk A og butikk B er en ulykke som venter. Separate profiler eller separate maskiner.
- Logglekkasje: Noen verter logger verktøyargumenter. Anta at SKU-er og ordre-id-er dukker opp i logger; konfigurer lagring deretter.
Ingen av disse er grunner til å unngå MCP. De er grunner til å behandle verten som produksjon.
Hvor dette passer i ERP- og KI-programmer
WPPolands arbeid for EU- og nordiske kunder kobler ofte WooCommerce til grossist-API-er og ERP-er - typisk Visma, Tripletex, Fortnox eller egenutviklede lagerfeeds for nordiske B2B-kjeder. Agenter kommer inn i den stakken når driftsteam vil ha naturligspråklige svar uten å åpne wp-admin. Skrivebeskyttet MCP er den første trygge skiven:
- Før-synk-sjekker: «Er vi allerede utsolgt på kampanje-SKU-ene før Black Week-utsendelsen?»
- Etter-synk-revisjoner: «Ser gårsdagens ordrer ut som ERP-fakturatallet fra grossistsynken?»
- Innholdsops: «Hvilke innlegg nevner den nye kolleksjonen?» via
search_posts
Når du trenger at agenter skal foreslå ordrer eller utkast til refusjoner, forlater du denne pakken og bygger en egendefinert server med eksplisitte muterende verktøy, idempotency-nøkler og menneskelige godkjenningsporter. Den stien er byggeguiden pluss typede katalogverktøy med Zod.
For butikker som allerede drukner i plugin-spredning eller AI-bygget tema-gjeld, fiks Core Web Vitals og lager-sannhet før du legger til agenter. MCP redder ikke en TTFB på 1.8s eller en katalog som er uenig med lageret.
Hvordan dette skiller seg fra hostede WordPress MCP-eksperimenter
WordPress.com og relaterte økosystemer har utforsket MCP-flater for managed hosting. Disse programmene er verdifulle, og de er ikke samme artefakt som en selvhostet stdio-server du peker mot dine WooCommerce REST-nøkler. Selvhostet MCP holder legitimasjon og trafikk på infrastruktur du velger. Hostet MCP holder bekvemmelighet på vertens vilkår. Velg bevisst; anta ikke funksjonsparitet.
Glama og lignende MCP-kataloger kan indeksere GitHub-repoet eller registry-oppføringen. Behandle tredjepartskataloger som oppdagelse, ikke som en sikkerhetsgrense. Sannhetskilden for installasjon forblir npm + GitHub + det offisielle MCP Registry-navnet.
For plugin-forfattere som vurderer MCP som varig differensiering inne i WordPress, se også argumentet om MCP-server i WordPress-plugin som vollgrav. For sandkasse- og Playground-baserte agentarbeidsflyter er WordPress Playground MCP den naturlige nabostien.
Sammenligning: åpen pakke vs egendefinert MCP
| Behov | @wppoland/woocommerce-mcp | Egendefinert MCP-server |
|---|---|---|
| Produkt- / ordre- / salgslesing | Ja | Ja |
| Bloggsøk | Ja | Valgfritt |
| Skriving (refusjoner, lagerendringer) | Nei | Du designer dem |
| Butikkplugin påkrevd | Nei | Vanligvis nei |
| Cloudflare Workers edge-deploy | Ikke denne pakken | Vanlig mønster i våre bygg |
| ERP-spesifikke verktøy | Nei | Ja |
| Offisiell registry-listing | Ja (io.github.wppoland/woocommerce-mcp) | Du publiserer din egen |
Publiseringsnotater for vedlikeholdere
Hvis du forker eller publiserer din egen MCP-server:
- Sett
mcpNameipackage.jsonsom matcher registry-navnerommet (for GitHub-auth:io.github.<org>/<name>). - Hold
server.jsondescriptionpå 100 tegn eller færre - det offisielle registeret avviser lengre strenger med HTTP 422. - Bruk
mcp-publisher-binæren fra modelcontextprotocol/registry releases, ikke en tilfeldig npm-pakke kalt publisher. - Foretrekk npm-navn under et
@scopedu kontrollerer; navn uten prefiks kan bli permanent låst etter avpublisering.
Vi lærte beskrivelsesgrensen på den harde måten under første registry-publish-forsøk. Validering med mcp-publisher validate før publish sparer en runde.
Driftsjekkliste
-
@wppoland/[email protected](eller nyere) installert - WooCommerce-nøkkel er Read-only
-
WP_URLer HTTPS og matcher butikken nøklene tilhører - Klienten bruker stdio (eller en annen transport du bevisst har herdet)
- Røyktest bruker en ekte SKU og et ekte datointervall
- Hemmeligheter er ikke limt inn i tickets eller chatlogger
- Teamet vet at denne pakken ikke kan refundere eller restocke - eskaler til mennesker / ERP for skriving
Interne cluster-lenker
- Byggesti: Building an MCP server for WooCommerce
- Protokollvalg: MCP vs REST
- Auth: MCP authentication patterns
- Typede verktøy: Writing typed catalogue tools with Zod for MCP
- Migrasjon: Migrating an existing WordPress API to MCP
- Tjeneste: MCP-server-utvikling
- Handel: WooCommerce ERP-integrasjon
- Plugin-vollgrav: MCP-server i WordPress-plugin
- Playground: WordPress Playground MCP for KI-agenter
Praktiker-notater fra kundeprosjekter
På en norsk B2B-grossist med regionale prisgrupper (WooCommerce mot Visma-lagerfeed) var demoen som overbeviste drift ikke en chatbot i butikkfronten. Det var Claude Desktop som før morgenens utsending svarte «hvilke kampanje-SKU-er er allerede på null?». Demoen overlevde sikkerhetsgjennomgangen bare fordi MCP ikke kunne «fikse» lageret når modellen foreslo en skrivehandling.
Den farlige forespørselen kom senere samme uke: «marker disse som completed hvis de ser betalte ut». Det er nøyaktig klassen av verktøy denne åpne pakken nekter å tilby. Agenten kan liste processing-ordrer; et menneske eller en dedikert ERP-jobb fullfører dem. Under Black Week i Norden synkroniseres kampanje-SKU-er ofte nattlig fra grossistens API mens butikkfronten fortsatt viser gårsdagens lager; en skrivebeskyttet agent som sier «null på lager» før morgenens e-post er mer verdifull enn en agent som «fikser» lageret og kjører race mot synken.
Hvis butikken din fortsatt bruker application passwords med fulle capabilities for «midlertidige skript», roter dem før du peker noen MCP-vert mot produksjon. Read-nøkler for denne serveren er billige å utstede og billige å tilbakekalle - og under GDPR/personvern er katalog- og ordremetadata fortsatt personopplysningsrelevant når ordrer inneholder kundedata.
En annen nordisk case: en svensk nettbutikk med Fortnox-fakturaflyt spurte agenten om gårsdagens ordreantall matchet ERP-eksporten. list_orders og sales_report ga WooCommerce-sannheten; avviket viste seg å være en forsinket grossistbekreftelse, ikke en agentfeil. MCP overflater butikkens tall - den reparerer ikke synk-gjeld.
Samme mønster dukker opp når en norsk grossist synkroniserer regionale prisgrupper nattlig: agenten kan bekrefte at kampanje-SKU-er allerede er på null før morgenens utsending, men den skal ikke «rette» lageret mens Visma- eller Tripletex-jobben fortsatt kjører. Leseflaten er nok til driftsspørsmål; skrivestien hører hjemme i ERP-jobben eller hos et menneske.
Hva vi ikke gjør i v0.x
- Ingen skriveverktøy i den åpne standardgrenen.
- Ingen obligatorisk butikkplugin.
- Ingen påstand om at MCP erstatter WooCommerce REST for partnerintegrasjoner.
- Ingen spesifikke priser for implementeringsarbeid - engasjementer er individuelle tilbud via MCP-server-utvikling.
Funksjonsforespørsler som passer inn under skrivebeskyttet mandat (refusjonssammendrag, kupongstatus, kundeoppslag uten PII-dump) er åpen samtale på GitHub. Funksjonsforespørsler som er «bare legg til update_product» blir lukket med en peker til den egendefinerte byggeguiden.
Måle om agentstien er verdt det
Før du utvider utover skrivebeskyttede verktøy, mål tre ting i to uker:
- Hvor ofte mennesker åpner wp-admin bare for å svare på et lager- eller ordrespørsmål. Hvis det tallet er nær null, er MCP en nyhet. Hvis det er daglig, betaler leseverktøy for seg i oppmerksomhet.
- Hvor ofte de svarene er uenige med ERP-et. MCP overflater WooCommerce-sannhet, ikke lagersannhet. Hvis de divergerer, fiks synken først (WooCommerce ERP-integrasjon).
- Hvor ofte noen ber agenten om å endre tilstand. Den frekvensen er veikartsignalet ditt for en egendefinert muterende server - ikke en grunn til å svekke denne pakken.
GEO- og AEO-programmer bryr seg om siterbare, strukturerte svar. Et MCP-verktøykall som returnerer lager er mer pålitelig enn en modell som gjetter fra en scrapet HTML-side. Par agentstien med on-site entiteter og FAQ-schema på kommersielle sider slik at offentlige KI-systemer og private agenter ikke finner opp ulike produktfortellinger.
For team som allerede bygger agentarbeidsflyter rundt WordPress-plugin-overflater eller Playground-sandkasser, er den åpne WooCommerce MCP-pakken den produksjonsnære leseflaten: samme protokollfamilie, strengere skriverestriksjon, direkte mot butikkens REST.
Konklusjon
@wppoland/woocommerce-mcp er den minste nyttige MCP-flaten vi stoler på foran en live WooCommerce-butikk: fem leseverktøy, offisiell REST under, MIT, publisert til npm og MCP Registry. Installer den når agenter trenger butikkfakta. Bygg en egendefinert server når agenter trenger butikkhandlinger.
Start her: https://www.npmjs.com/package/@wppoland/woocommerce-mcp - koble deretter Read-nøkler, kjør et røykspørsmål, og hold skriving ute av agentstien til programmet er klart for dem.






