update-page
Modify Shopify store pages by updating titles, content, SEO metadata, and publication status using the page's unique identifier.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pageId | Yes | The GID of the page to update (e.g., "gid://shopify/Page/1234567890") | |
| title | No | ||
| body | No | ||
| bodyHtml | No | ||
| seo | No | ||
| published | No |
Implementation Reference
- src/tools/updatePage.ts:36-114 (handler)The execute function of the updatePage tool that sends a GraphQL mutation to Shopify to update the specified page with the provided input data, handles errors, and returns the updated page information.execute: async (input: UpdatePageInput) => { try { const { pageId, ...updateData } = input; const mutation = gql` mutation pageUpdate($input: PageInput!) { pageUpdate(input: $input) { page { id title handle bodySummary body bodyHtml updatedAt publishedAt seo { title description } } userErrors { field message } } } `; const variables = { input: { id: pageId, ...updateData } }; const data = await shopifyClient.request(mutation, variables) as { pageUpdate: { page: { id: string; title: string; handle: string; bodySummary: string; body: string; bodyHtml: string; updatedAt: string; publishedAt: string; seo: { title: string; description: string; }; }; userErrors: Array<{ field: string; message: string; }>; }; }; if (data.pageUpdate.userErrors.length > 0) { throw new Error( `Failed to update page: ${data.pageUpdate.userErrors .map((error) => error.message) .join(", ")}` ); } return { page: data.pageUpdate.page }; } catch (error) { console.error("Error updating page:", error); throw new Error( `Failed to update page: ${ error instanceof Error ? error.message : String(error) }` ); } }
- src/tools/updatePage.ts:6-16 (schema)Zod input schema defining the parameters for updating a page, including pageId, title, body, bodyHtml, seo, and published status.const UpdatePageInputSchema = z.object({ pageId: z.string().min(1).describe("The GID of the page to update (e.g., \"gid://shopify/Page/1234567890\")"), title: z.string().optional().describe("The new title for the page"), body: z.string().optional().describe("The new body content for the page"), bodyHtml: z.string().optional().describe("The new HTML body content for the page"), seo: z.object({ title: z.string().optional(), description: z.string().optional() }).optional().describe("SEO information for the page"), published: z.boolean().optional().describe("Whether the page should be published or unpublished") });
- src/index.ts:171-191 (registration)Registration of the 'update-page' tool in the MCP server using server.tool(), providing an inline schema and a handler that delegates to updatePage.execute().// Add the updatePage tool server.tool( "update-page", { pageId: z.string().min(1).describe("The GID of the page to update (e.g., \"gid://shopify/Page/1234567890\")"), title: z.string().optional(), body: z.string().optional(), bodyHtml: z.string().optional(), seo: z.object({ title: z.string().optional(), description: z.string().optional() }).optional(), published: z.boolean().optional() }, async (args) => { const result = await updatePage.execute(args); return { content: [{ type: "text", text: JSON.stringify(result) }] }; } );
- src/index.ts:75-75 (registration)Initialization of the updatePage tool with the Shopify GraphQL client.updatePage.initialize(shopifyClient);
- src/index.ts:17-17 (registration)Import of the updatePage tool module.import { updatePage } from "./tools/updatePage.js";