Den raskeste måten å forstå hva Model Context Protocol (MCP) faktisk innebærer i praksis, er ikke å lese akademiske spesifikasjoner eller se på genererte presentasjonslysbilder. Den raskeste måten er å sende en enkelt forespørsel til en levende, fungerende URL på det åpne nettet:
https://wppoland.com/mcp
Under denne adressen kjører en produksjonsklar Model Context Protocol-server på vårt nettsted. Du kan sende en POST-forespørsel med JSON-RPC 2.0. Serveren svarer umiddelbart med strukturerte, typede data. Ingen WordPress-plugin i kontrollpanelet er påkrevd, ingen API-nøkkel, ingen gebyrer og ingen skriving til databasen.
Dersom en AI-assistent (som Claude Desktop, Claude Code, Cursor eller en autonom utvikleragent) støtter MCP, kan den spørre våre systemer direkte: Hvilke tjenester tilbyr vi faktisk? Hvilke teknologier støttes? Hva er den kanoniske adressen for et skriftlig prosjektbrief? Hva assistenten ikke kan gjøre, er å sende en e-post på dine vegne eller opprette uverifiserte leads i vårt CRM. Denne begrensningen er ingen forglemmelse, men fundamentet i vår sikkerhetsmodell.
I denne dyptgående guiden går vi grundig gjennom hvordan det levende MCP-endepunktet fungerer på wppoland.com, arkitekturen til vår åpne søsterserver woocommerce-mcp, praktiske bruksscenarier for byråer og nettbutikker, samt lærdommer fra produksjonsdrift på edge-infrastruktur.
Hvorfor en direkte MCP-server endrer spillereglene
Standard webapplikasjoner har allerede programmeringsgrensesnitt. WooCommerce har et modent REST API. WordPress har tilbudt /wp-json/ i mange år. Vårt nettsted publiserer en maskinlesbar tjenestekatalog i JSON-format under /api/services.json.
Store språkmodeller (LLM) opererer på sannsynlighetsberegning av neste ord. Når en assistent forsøker å analysere et nettsted gjennom HTML-skraping eller utdaterte treningsdata, hender det ofte at den oppfinner ikke-eksisterende undersider, antar tjenester som aldri har vært tilbudt, eller gir utdaterte kontaktdetaljer.
Model Context Protocol (lansert av Anthropic i november 2024 og nå forvaltet under Linux Foundations Agentic AI Foundation; spesifikasjon: modelcontextprotocol.io) løser dette fundamentalt. MCP fungerer som en universell standard - en USB-kontakt for AI-agenter.

Akkurat som en datamaskin ikke trenger en egen driver for hvert tastaturmerke takket være standardiserte USB-porter og datakontrakter, trenger en AI-assistent en enhetlig protokoll for verktøybruk. Et verktøy (Tool) i MCP er en navngitt, deterministisk operasjon med et strengt definert JSON-skjema for inn- og utdata.
Når en AI-klient støtter MCP, kan den koble seg til en hvilken som helst kompatibel server: et kodearkiv, et sakshåndteringssystem, en produktbase eller et byrånettsted som wppoland.com.
De tre komponentene i praksis
En MCP-arkitektur består av tre samvirkende deler:
- Klienten (Client): Programmet brukeren snakker med (Claude Desktop, Claude Code, Cursor IDE, Windsurf). Klienten styrer kontekstvinduet, tolker intensjoner og avgjør når et verktøy skal kalles.
- Serveren (Server): Et lettvektsprogram eller en edge-funksjon (på wppoland.com en Cloudflare Pages Function) som publiserer verktøymanifester og håndterer kjøreforespørsler. Serveren er ikke WordPress og ikke en PHP-plugin.
- Verktøyet (Tool): En enkelt deterministisk handling. På vårt offentlige endepunkt finnes to verktøy:
check_servicesogrequest_quote.
Flyten er enkel: Klienten henter listen over verktøy (tools/list), modellen velger et verktøy med validerte parametere, serveren kjører koden og returnerer strukturerte data, og modellen formulerer et nøyaktig svar til mennesket.
Trinnvis testing i terminalen
Du kan teste endepunktet direkte fra terminalen med curl uten å skrive AI-orkestreringskode:
curl -s -X POST https://wppoland.com/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Svaret returnerer et manifest med tilgjengelige verktøy og deres JSON Schema-definisjoner:
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
{
"name": "check_services",
"description": "List or search WPPoland services catalog with localized canonical URLs.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Optional search term to filter services"
},
"lang": {
"type": "string",
"enum": ["pl", "en", "de", "nb", "es", "pt-pt"],
"description": "Target language for service titles and URLs"
}
}
}
},
{
"name": "request_quote",
"description": "Get localized contact URL and brief submission instructions.",
"inputSchema": {
"type": "object",
"properties": {
"project_type": {
"type": "string",
"description": "Type of project (e.g. mcp-server-development, woocommerce, audit)"
},
"lang": {
"type": "string",
"enum": ["pl", "en", "de", "nb", "es", "pt-pt"],
"description": "Preferred language for the inquiry"
}
}
}
}
]
}
}

En GET-forespørsel til https://wppoland.com/mcp i en nettleser gir status og peker til discovery-kortet:
https://wppoland.com/.well-known/mcp/server-card.json

Dette kortet bekrefter at transporten er Streamable HTTP, at autentisering ikke kreves, og at serveren utelukkende eksponerer tools (uten tomme resources eller prompts).
Konfigurasjon i Claude Desktop og Cursor
Konfigurasjon for Claude Desktop
I filen claude_desktop_config.json (under macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"wppoland": {
"url": "https://wppoland.com/mcp/"
}
}
}
Konfigurasjon for Cursor IDE
I filen .cursor/mcp.json i prosjektets rot eller i globale innstillinger:
{
"mcpServers": {
"wppoland": {
"url": "https://wppoland.com/mcp/"
}
}
}

Etter omstart av klienten kan du spørre: “Hvilke tjenester innen WooCommerce-optimalisering og MCP-utvikling tilbyr WPPoland?”. Assistenten kaller check_services med parameteren query: "woocommerce" og returnerer bekreftede, kanoniske lenker.
Lærdom fra drift: Skråstreken som ødela 90 % av forespørslene
JSON-RPC over HTTP krever POST-forespørsler med en body. Mange serveroppsett og statiske generatorer omdirigerer automatisk (301) stier uten avsluttende skråstrek (/mcp) til stier med skråstrek (/mcp/).
Mange automatiserte klienter feilet på dette:
- Noen biblioteker avbrøt umiddelbart ved 301 og behandlet det som protokollfeil.
- Andre fulgte omdirigeringen ved å konvertere forespørselen til en GET og forkaste POST-kroppen helt.
Våre målinger over tre påfølgende dager viste 29 feilede JSON-RPC-kall per dag mot kun 2 vellykkede på stien uten skråstrek.
Løsningen: En Cloudflare Zone Rule som sikrer at POST-forespørsler til /mcp behandles direkte uten omdirigering og returnerer HTTP 200. Suksessraten steg umiddelbart til 100 %.
Viktig poeng: Standard web-analyse (som Google Analytics) registrerer ikke slike feil fordi AI-agenter ikke kjører JavaScript på klientsiden.
Sikkerhetsarkitektur: Hvorfor skrivebeskyttelse er avgjørende
Nettbutikkeiere spør med rette: “Kan en AI-assistent slette ordrer, endre priser eller overskrive kundedata?”.
På wppoland.com/mcp er dette utelukket, da endepunktet ikke har noen skrivefunksjoner.
Verktøyet request_quote returnerer strukturert veiledning:
{
"contact_url": "https://wppoland.com/nb/kontakt/?source=mcp",
"method": "web-form",
"note": "Skrivebeskyttet endepunkt. Send henvendelsen via kontaktskjemaet; dette verktøyet sender ikke e-post automatisk.",
"suggested_message": "Forespørsel om pristilbud: Utvikling av MCP-server. Vennligst inkluder omfang og tidsplan.",
"reply_time": "innen én virkedag"
}

Hvorfor sender ikke verktøyet e-post direkte?
- Spambeskyttelse: Et åpent, skrivende MCP-endepunkt ville blitt en spam-kilde på få timer.
- Beskyttelse mot prompt injection: Manipulerte ledetekster kan ikke tvinge fram tilstandsendringer når det mangler skrivekode i handlere.
- Defense in depth: For bindende handlinger omdirigeres brukeren til et sikkert skjema med bot-beskyttelse.
Butikksiden: woocommerce-mcp
For WooCommerce-butikker har vi utviklet og publisert åpen kildekode:

https://github.com/wppoland/woocommerce-mcp
Pakken @wppoland/woocommerce-mcp (npm, MIT) kommuniserer direkte med WooCommerce REST API ved hjelp av skrivebeskyttede nøkler og tilbyr fem verktøy:

list_products: Søke i produktkatalogen etter kategori og lagerstatus.get_product: Hente fullstendige produktdetaljer basert på ID.list_orders: Hente nylige bestillinger med statusfiltre (f.eks.processing,on-hold).sales_report: Aggregere salgstall og ordretall over definerte perioder.search_posts: Søke i blogginnlegg og kunnskapsbase via standard WordPress REST API.
TypeScript-implementering med Zod-validering
import { z } from "zod";
server.registerTool(
"list_orders",
{
title: "List orders",
description: "List recent WooCommerce orders, newest first. Optionally filter by status.",
inputSchema: {
per_page: z.number().int().min(1).max(100).optional(),
status: z.enum([
"any", "pending", "processing", "on-hold",
"completed", "cancelled", "refunded", "failed"
]).optional(),
},
},
async ({ per_page, status }) => {
const cfg = loadConfig(true);
const data = await wc(cfg, "orders", {
per_page: per_page ?? 10,
status,
orderby: "date",
order: "desc",
});
return ok(data.map((order) => ({
id: order.id,
number: order.number,
status: order.status,
total: order.total,
currency: order.currency,
date_created: order.date_created,
item_count: order.line_items?.length ?? 0,
})));
},
);


Detaljerte verktøykall med cURL
For å forstå hvordan tools/call fungerer i praksis, kan du sende en direkte forespørsel til serveren:
curl -s -X POST https://wppoland.com/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "check_services",
"arguments": {
"query": "mcp",
"lang": "nb"
}
}
}'
Serveren behandler forespørselen og returnerer den kanoniske tjenestekatalogen:
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [
{
"type": "text",
"text": "Funnet tjenester (1):\n- Navn: Utvikling av MCP-server\n ID: mcp-server-development\n URL: https://wppoland.com/nb/tjenester/mcp-server-development/\n Beskrivelse: Utvikling av Model Context Protocol-servere for WordPress og WooCommerce."
}
]
}
}
Tilsvarende gir et kall til request_quote et strukturert svar uten skriving:
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "{\n \"contact_url\": \"https://wppoland.com/nb/kontakt/?source=mcp\",\n \"method\": \"web-form\",\n \"reply_time\": \"innen én virkedag\"\n}"
}
]
}
}
Fire praktiske bruksscenarier
Scenario 1: Autonom driftsassistent for nettbutikk
Nettbutikksjefer lar bestillinger i status on-hold analyseres automatisk uten å navigere manuelt i wp-admin.
Forespørsel i naturlig språk:
“Sjekk de 10 siste bestillingene med status on-hold. Beregn totalbeløp og identifiser berørte produkter.”
Intern verktøykjede:
- Assistenten kaller
list_orders(status="on-hold", per_page=10). - MCP-serveren returnerer ID-er og beløp uten personopplysninger.
- For relevante produkter kalles
get_product(id=...). - Assistenten oppsummerer resultatet i en ryddig tabell.
Scenario 2: B2B-henvendelsestriage for byråer
Kunders AI-agenter sjekker spesifikke kjernekompetanser via check_services og mottar passende brief-lenker.
Forespørsel i naturlig språk:
“Tilbyr WPPoland migrasjon til Google Merchant API og hva er forutsetningene for en teknisk revisjon?”
Intern verktøykjede:
- Agenten kaller
check_services(query="merchant", lang="nb"). - Serveren returnerer tjenestebeskrivelsen og den kanoniske landingssiden.
- Deretter kalles
request_quote(project_type="mcp-server-development", lang="nb"). - Assistenten leverer en presis oppsummering med direkte lenke til brief-skjemaet (
?source=mcp).
Scenario 3: Førstelinjesupport i kundeservice
Supportmedarbeidere sjekker lagerbeholdning og produktvarianter via Slack-bot koblet til MCP uten å trenge fulle admin-rettigheter i WordPress.
Eksempel på arbeidsflyt:
- Supportmedarbeider skriver i Slack:
/sjekk-vare VARE-9940. - Boten kaller
get_product(id=9940)over MCP. - Sanntids lagerstatus og fargevarianter returneres på 200 ms.
- Feilkilder minimeres og svartiden overfor kunden reduseres dramatisk.
Scenario 4: Innholdsorkestrering i Headless WordPress
Redaktører sjekker eksisterende artikler via search_posts før nye guider produseres for å unngå SEO-kannibalisering.
Eksempel på arbeidsflyt:
- Redaksjonsagent kjører
search_posts(query="Core Web Vitals"). - Serveren returnerer publiserte artikler og datoer for siste oppdatering.
- Den nye artikkelen struktureres slik at den naturlig lenker internt til eksisterende innholdsstolper.
Teknisk sammenligning: stdio vs. Streamable HTTP vs. SSE
| Egenskap | Stdio Transport | Streamable HTTP (wppoland.com) | Server-Sent Events (SSE) |
|---|---|---|---|
| Plassering | Lokal (Desktop / CLI) | Edge Functions / Sky | Dedikerte backend-servere |
| Latens | < 5 ms | 20 - 50 ms (Edge) | 50 - 150 ms (Stateful) |
| Sikkerhet | Lokale prosessgrenser | Offentlig skrivebeskyttelse | Bearer Token / OAuth |
| Oppsett | Node-binærfil lokalt | Ren URL i klienten | Serverinfrastruktur kreves |
| Vedlikehold | Pakkeoppdateringer lokalt | Null konfigurasjon for klienter | Persistente tilkoblinger |
Hva MCP ikke er
- Ikke en nettleser-chatwidget: MCP er en maskin-til-maskin-protokoll for AI-agenter.
- Ikke en ERP-erstatning: Synkronisering mellom SAP og WooCommerce krever deterministiske rørledninger.
- Ikke automatisk GDPR-overholdelse: Skrivebeskyttede nøkler har tilgang til ordredata; MCP-verktøyet må filtrere personopplysninger.
- Ikke slutten på WordPress-utviklere: Komplekse oppsett og temaer krever fortsatt menneskelig ekspertise.
Produksjonsarkitektur: Anbefalt ansvarsfordeling
Ved bygging av et moderne enterprise-miljø basert på WordPress, WooCommerce og AI-agenter anbefaler vi en tredelt ansvarsfordeling:
- Transaksjonell datakilde (Catalogue of Record): Forblir i WooCommerce-databasen eller det integrerte ERP-systemet. En AI-modell skal aldri estimere priser eller finne på lagerstatus.
- Redaksjonelt innhold: Forvaltes i WordPress eller statiske Markdown/MDX-filer.
- MCP-verktøylag: Kjører som en isolert Edge Function (Cloudflare Workers / Pages) med streng rate limiting og Cloudflare Cache Rules. Dette sikrer at en AI-agent i en løkke under salgstoppe (f.eks. Black Friday) aldri reduserer kasseopplevelsen for menneskelige kunder.
Konklusjon
Å gjøre WordPress tilgjengelig for AI-agenter via wppoland.com/mcp og woocommerce-mcp på GitHub krever verken tunge plugins eller kompromisser på sikkerhet.
Les mer om våre MCP-utviklingstjenester eller test endepunktet direkte fra terminalen.






