Try PagePilot.ai 100% FREE! No credit card required.

Shopify MCP Server: Build And Publish Product Pages From Claude Or ChatGPT
PagePilot runs a remote MCP server that turns a product URL into a finished landing page and publishes it to your Shopify store, driven by Claude, ChatGPT or any MCP client. This page documents the real endpoint, the auth, and every tool.
Creating and publishing needs a paid plan (Lite or higher). See pricing
{
"mcpServers": {
"pagepilot": {
"type": "http",
"url": "https://app.pagepilot.ai/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}What Is The PagePilot Shopify MCP Server?
It is a remote Model Context Protocol server at https://app.pagepilot.ai/api/mcp. Connect Claude, ChatGPT or any MCP client with a PagePilot API key and the assistant can create a product page from an AliExpress, Amazon, Shopify, TikTok or Etsy product URL, wait for it to generate, edit it, and publish it to a connected Shopify store. It builds and publishes AI product pages. It is not an Admin API wrapper, so it has no tools for orders, customers or inventory.
| Server URL | https://app.pagepilot.ai/api/mcp |
|---|---|
| Transport | MCP Streamable HTTP, stateless. POST only, JSON responses, no session and no SSE stream (GET returns 405). |
| Authentication | A PagePilot API key (pp_live_...) as Authorization: Bearer, x-api-key, or the api_key query parameter. No OAuth. |
| Server identity | Name pagepilot, version 1.0.0. Tools only: no MCP resources or prompts. |
| Built-in guidance | The server sends usage instructions on connect describing the create, poll, edit, publish flow, so assistants do not need prompting. |
| Requirements | A paid plan (Lite or higher) for the create, image and publish tools, and a Shopify store connected in your dashboard to publish. See pricing. |
How The Tools Fit Together
The flow below is the one the server itself describes to a connecting assistant. Every tool works on a single page, identified by the page id that create_page returns, which the tools call template_id.
Start A Page From A Product URL
create_pageSend a product URL from AliExpress, Amazon, Shopify, TikTok or Etsy. The call returns the new page id straight away and generation runs in the background.
Poll Until It Completes
check_page_statusPoll with the page id every ten seconds or so. The status is processing until the page exists, then completed with a preview_url. The server tells assistants that generation usually takes one to three minutes.
Read Before You Write
get_page_texts, get_page_price, get_page_variants, get_page_imagesEach getter returns the exact ids, keys and labels its update tool expects, so an assistant never has to invent them. Then the matching update_page_* tool writes the change.
Optionally Replace The Photos
generate_page_imagesThe page starts with the product’s own photos. Assistants are told to ask first, because every generated image counts against your plan’s AI image limit.
Publish To A Connected Store
list_shops, publish_to_shopifylist_shops returns the stores connected to your account and publish_to_shopify sends the page to one of them. Publishing the same page again updates the product it created.
Pages Stay Editable
A page an agent creates is an ordinary PagePilot page in your account, tagged as created by MCP. Open it in the drag and drop page builder to adjust it by hand, or list it again with list_pages.
Connect Claude, ChatGPT Or Any MCP Client
Get an API key first: open app.pagepilot.ai/dashboard/api after signing in and a key is created for you. The MCP setup page shows the same snippets with your key already filled in. Replace YOUR_API_KEY below.
Claude Code
Create .mcp.json in your project root and restart Claude Code, which asks you to approve the server. Or add it from the command line. Both send the key as a header, which is the safer option. See the Claude Code MCP docs for scopes.
{
"mcpServers": {
"pagepilot": {
"type": "http",
"url": "https://app.pagepilot.ai/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}claude mcp add --transport http pagepilot https://app.pagepilot.ai/api/mcp \
--header "Authorization: Bearer YOUR_API_KEY"Claude On The Web And Desktop
Open Settings, then Connectors, then Add custom connector. The form takes a name and a URL, so the key goes in the URL as the api_key parameter.
Name: PagePilot Agent
Remote MCP server URL: https://app.pagepilot.ai/api/mcp?api_key=YOUR_API_KEYChatGPT
Custom connectors need Developer mode, which you enable under Settings, then Security and login. Create a new connector with these fields. Authentication is No Auth because the key is already in the URL.
Name: PagePilot Agent
Description: PagePilot Agent
Connection URL: https://app.pagepilot.ai/api/mcp?api_key=YOUR_API_KEY
Authentication: No AuthAny Other MCP Client
Any client that supports remote Streamable HTTP servers can connect. Point it at the URL and send the key as Authorization: Bearer or x-api-key. Use the query parameter only when the client cannot set headers. Check the connection yourself with two calls:
curl -s https://app.pagepilot.ai/api/mcp \
-H "Authorization: Bearer $PAGEPILOT_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'curl -s https://app.pagepilot.ai/api/mcp \
-H "Authorization: Bearer $PAGEPILOT_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"list_shops","arguments":{}}}'Your First Prompt
This is the starter prompt PagePilot's own dashboard uses. Swap in a real product URL.
Use the pagepilot MCP server to create a product page for https://www.aliexpress.com/item/<product-id>.html in English, wait until it finishes, then publish it to my Shopify store.All 16 Tools
Read tools are annotated read-only. Write tools are annotated as changing state, so clients that honor MCP annotations can ask before running them.
Create and track
| Tool | Access | What it does | Arguments |
|---|---|---|---|
list_pages | Read | Lists the pages in your account, newest first, 20 per page. Defaults to type product. | type (product, page, advertorial), created_via (api, mcp, ui, dashboard), page |
create_page | Write | Starts generating a product page from a product URL and returns its id. Language is a name such as English or German (33 supported). With no template given it reuses the template preset of your latest product page. | product_url (required), language, template_id, template_name, gender (woman, man, unisex), angle |
check_page_status | Read | Returns processing or completed. Completed responses include preview_url, name, type and created_at. | template_id |
Read and edit a page
| Tool | Access | What it does | Arguments |
|---|---|---|---|
get_page_texts | Read | Every editable text as a flat list: id, key, the verbatim text (HTML included) and context such as block name and section. | template_id |
update_page_texts | Write | Writes texts back by id and key. HTML is kept but sanitized. Unknown ids come back in not_found. | template_id, data[{ id, key, text }] |
get_page_price | Read | Price and compare-at price of every variant combination, with its key, label and sku. | template_id |
update_page_price | Write | Sets price and compare-at price by combination label, by key, or with "*" for all. null clears a value. Unmatched items come back in not_found. | template_id, data[{ match, price, compare_at_price }] |
get_page_variants | Read | The page’s options and combinations, or null when it has none. | template_id |
update_page_variants | Write | Replaces the option structure declaratively by name (max 3 options, 15 values each). Anything you leave out is removed. Combinations patch price, compare-at price and sku by label. | template_id, options[{ name, values }], combinations[{ match, price, compare_at_price, sku }] |
get_page_images | Read | Every replaceable image in page order with its id, key, current url and section context, plus your remaining AI image allowance. | template_id |
generate_page_images | Write | Generates AI scenes and replaces images, either one prompt per slot or an automatic batch by count. Prompts describe the scene only, and no text is rendered into images. Max 4 per call, counted against your AI image limit. | template_id, images[{ id, key, prompt, avatar, ratio }] or count |
Publish
| Tool | Access | What it does | Arguments |
|---|---|---|---|
list_shops | Read | Lists the Shopify stores connected to your PagePilot account. | none |
publish_to_shopify | Write | Publishes a page to a connected store. Re-publishing updates the product it created before. | template_id, shopify_domain (required), shopify_product_id, create_new, replace_title, replace_description, replace_handle |
Research (paid plan)
| Tool | Access | What it does | Arguments |
|---|---|---|---|
get_winning_products | Read | PagePilot’s current ranked winning-product picks with cost, suggested price, margin and an AliExpress URL you can pass straight to create_page. | none |
get_winning_stores | Read | Top-revenue Shopify stores with traffic split and bestsellers, optionally filtered by country. | country (ISO-2, optional) |
get_winning_ads | Read | Today’s hot Facebook ad products with ad spend, revenue and store URLs. | none |
What publish_to_shopify Writes To Your Store
Publishing is the one tool that changes your store, so here is exactly what it does. Try it on a development store first, because it edits the live theme.
A New Product
- Checks the shop is connected to your account and that its Shopify access token is valid.
shopify_domainmust look likeyour-store.myshopify.com. - On the store's main theme, adds or updates a PagePilot block in
layout/theme.liquidand uploads PagePilot's theme files. - Writes the page as a product template,
templates/product.pagepilot.<page id>.json. - Creates a product with status
ACTIVEthat uses that template, with the page's title, SEO description, images and variants. - Returns
shopify_url, such ashttps://your-store.myshopify.com/products/handle.
Updating Instead Of Duplicating
- Publishing the same page to the same store again updates the product it created. You never pass a Shopify product id for that.
- Pass
create_newto force a brand new product, orshopify_product_id(numeric or gid) to apply the page to a different existing product or page. - When applying to an existing product, PagePilot backs it up first, swaps in the template, and updates variants and media. Title and description are only replaced when you set
replace_titleorreplace_description.replace_handleis accepted, but the current export code does not act on it. - Pages of type
pagepublish as Shopify pages under/pages/instead of products. shopify_access_tokenis only accepted for billable API keys. Standard keys publish to stores connected in the dashboard.
Limits And Error Responses
Each tool is a thin layer over the PagePilot REST API under /api/v2, called with your same key, so the same plan limits apply to an agent and to a script. Page creation through MCP also has its own cooldown. Here is what you will see when a request is refused.
| Situation | What you get |
|---|---|
| No key sent | HTTP 401 with JSON-RPC error -32001 and a WWW-Authenticate: Bearer header. |
| Key not recognised | A tool result with isError set: "Authentication failed (401)", pointing at the dashboard to create a new key. |
| Free plan calling create_page, generate_page_images or publish_to_shopify | The API answers 403 with code UPGRADE_REQUIRED. The MCP server prefixes every 403 with "Authentication failed (403)", so read the JSON detail at the end of the message. |
| Plan limit reached | 403 "Plan limit exceeded" for page creation and publishing, or PLAN_LIMIT_EXCEEDED with your remaining quota for images. |
| create_page called too soon | 429 "The page generation queue is busy right now. Please retry in N seconds." The cooldown starts at 60 seconds and grows with your monthly MCP volume. |
| publish_to_shopify called too soon | 429 "Rate limited: 1 export per 60 seconds". |
| Unsupported product URL | 400 listing the supported sources: AliExpress, Amazon, Shopify, TikTok and Etsy. SHEIN links are not accepted. |
| Store not connected to your account | 404 "Shop domain not found in your account". Connect it in the PagePilot dashboard first. |
| Shopify plan cannot edit themes | 422 with code THEME_LIMITED_PLAN. |
| Research tools without a subscription | A tool result saying the feature is paid, with a link to the plans. |
| Missing Accept header, or a GET request | 406 without Accept: application/json, text/event-stream. GET returns 405 with Allow: POST because the server offers no SSE stream. |
How It Differs From Other Shopify MCP Servers
Search for a Shopify MCP server and you will find three different kinds of tool. They solve different problems and can run side by side in one client.
Shopify’s Own Tools
Shopify’s AI Toolkit and Dev MCP server give assistants Shopify developer docs, API schemas and code validation, aimed at people building on Shopify.
Admin API Wrappers
Many community servers wrap the Shopify Admin or Storefront API so an assistant can read and edit store data such as products, orders and customers.
PagePilot
A builder. Give it a product URL and it generates a designed product page, lets the assistant edit it, and publishes it to your store. It has no tools for orders, customers or inventory.
This is also not agentic commerce in the checkout sense. The server helps a merchant build and publish pages. It does not let a shopper's agent buy anything. New to the protocol? The Model Context Protocol site explains how clients and servers talk.
Keep Going
See what each plan includes on the pricing page, learn what the generated pages look like in AI product pages, or tweak one by hand in the drag and drop page builder.
Shopify MCP Server FAQs
What Is The PagePilot Shopify MCP Server?
It is a remote Model Context Protocol (MCP) server at https://app.pagepilot.ai/api/mcp. Connect Claude, ChatGPT, or any MCP client to it with a PagePilot API key and the assistant gets 16 tools: create a product page from a product URL, wait for it to generate, edit its texts, prices, variants and images, and publish it to a Shopify store connected to your PagePilot account.
What Is The Server URL And How Does Authentication Work?
The URL is https://app.pagepilot.ai/api/mcp. It uses the MCP Streamable HTTP transport in stateless mode, so requests are POST only and the server returns plain JSON. Authenticate with a PagePilot API key from app.pagepilot.ai/dashboard/api. Send it as an Authorization: Bearer header or an x-api-key header. Connector forms that only take a name and a URL, like the ones PagePilot's setup uses for Claude and ChatGPT, can pass it as an api_key query parameter instead. There is no OAuth flow.
How Do I Connect Claude To Shopify With PagePilot?
In Claude Code, add the server to .mcp.json with type http, the server URL, and an Authorization header, or run: claude mcp add --transport http pagepilot https://app.pagepilot.ai/api/mcp --header "Authorization: Bearer YOUR_API_KEY". In Claude on the web or desktop, open Settings, then Connectors, choose Add custom connector, and paste https://app.pagepilot.ai/api/mcp?api_key=YOUR_API_KEY as the remote MCP server URL. Then ask Claude to create a page from a product URL and publish it to your store.
Can I Use The Shopify MCP Server With ChatGPT?
Yes, through ChatGPT's custom connector support. Turn on Developer mode under Settings, then Security and login. Create a new connector with https://app.pagepilot.ai/api/mcp?api_key=YOUR_API_KEY as the connection URL and set Authentication to No Auth, because the key travels in the URL. PagePilot's own dashboard walks through the same steps at app.pagepilot.ai/dashboard/api/mcp.
What Can The Server Do, And What Can It Not Do?
It can list your pages, create a page from a product URL, check generation status, read and update page texts, prices, variants and images, generate AI images, list your connected Shopify stores, publish a page to a store, and fetch PagePilot's winning products, top stores and hot ad products. It cannot read or change orders, customers, inventory, or other Shopify Admin data, it cannot complete a checkout for a shopper, and it exposes tools only, with no MCP resources or prompts.
What Does publish_to_shopify Change In My Store?
It works on the store's main theme. It adds or updates a PagePilot block in layout/theme.liquid, uploads PagePilot's theme files, writes a product template named product.pagepilot.<page id>.json, and creates a product with status ACTIVE that uses that template. Publishing the same page to the same store again updates that product instead of creating a duplicate, unless you pass create_new. Because it edits the live theme, try it on a development store first.
Do I Need A Paid Plan To Use The Shopify MCP Server?
Yes, for the tools that create and publish. create_page, generate_page_images and publish_to_shopify require an active paid PagePilot plan (Lite or higher), and usage counts against your plan limits such as product pages and AI images. A free account gets a 403 with the code UPGRADE_REQUIRED. Standard API keys are also rate limited: page creation has a cooldown that starts at 60 seconds and grows with monthly MCP volume, and publishing is limited to one export per 60 seconds.
Is This The Same As Agentic Commerce Or Shopify's Own MCP Tools?
No. Agentic commerce usually means AI agents shopping and checking out on a buyer's behalf, and PagePilot's server does not do that. Shopify's own AI Toolkit and Dev MCP server give assistants Shopify documentation, API schemas and code validation for developers. PagePilot's server sits on the merchant side: it builds and publishes product pages. You can run it next to other MCP servers in the same client.
Is It Safe To Put My API Key In A Connector URL?
Treat that URL as a secret. PagePilot's Claude and ChatGPT setups use a URL-only connector form, so the key rides in the query string, and keys in URLs can end up in logs. A key acts as your account for these tools, including publishing to your stores. Create a separate key for each client at app.pagepilot.ai/dashboard/api (up to five) and delete a key there if it leaks. Where a client lets you set headers, such as Claude Code, use the Authorization header instead.
Give Your AI Assistant A Page Builder
Create an account, pick a plan, copy your API key, and ask your assistant for a product page.
Create A PagePilot Account