get-pages
Retrieve Shopify store pages by specifying search criteria and limit results for targeted data extraction and management.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| searchTitle | No |
Implementation Reference
- src/tools/getPages.ts:54-107 (handler)The main handler function 'execute' that performs the GraphQL query to fetch pages from Shopify and processes the response.execute: async (input: GetPagesInput) => { try { const { searchTitle, limit } = input; const query = gql`${GET_PAGES_QUERY}`; const variables = { first: limit }; const data = await shopifyClient.request(query, variables) as { pages: { edges: Array<{ node: { id: string; title: string; handle: string; bodySummary: string; body: string; createdAt: string; updatedAt: string; publishedAt: string; }; }>; pageInfo: { hasNextPage: boolean; hasPreviousPage: boolean; startCursor: string; endCursor: string; }; }; }; return { pages: data.pages.edges.map(edge => ({ id: edge.node.id, title: edge.node.title, handle: edge.node.handle, bodySummary: edge.node.bodySummary, body: edge.node.body, createdAt: edge.node.createdAt, updatedAt: edge.node.updatedAt, publishedAt: edge.node.publishedAt })) }; } catch (error) { console.error("Error fetching pages:", error); throw new Error( `Failed to fetch pages: ${ error instanceof Error ? error.message : String(error) }` ); } }
- src/tools/getPages.ts:6-9 (schema)Zod schema defining the input parameters for the get-pages tool.const GetPagesInputSchema = z.object({ searchTitle: z.string().optional().describe("Optional search term to filter pages by title"), limit: z.number().default(10).describe("Maximum number of pages to return (default: 10)") });
- src/index.ts:157-169 (registration)MCP server registration of the 'get-pages' tool, wrapping the execute handler and defining inline input schema.server.tool( "get-pages", { searchTitle: z.string().optional(), limit: z.number().default(10) }, async (args) => { const result = await getPages.execute(args); return { content: [{ type: "text", text: JSON.stringify(result) }] }; } );
- src/index.ts:74-74 (registration)Initialization of the getPages tool with the Shopify GraphQL client.getPages.initialize(shopifyClient);
- src/index.ts:16-16 (registration)Import of the getPages tool module.import { getPages } from "./tools/getPages.js";