get-pages
Retrieve Shopify store pages by searching titles and limiting results to manage content efficiently through GraphQL API.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| searchTitle | No | ||
| limit | No |
Implementation Reference
- src/tools/getPages.ts:54-107 (handler)The execute function implementing the core logic to fetch Shopify pages via GraphQL, mapping results and handling errors.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)Registers the 'get-pages' tool with the MCP server, providing input schema and wrapper around the execute function.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/tools/getPages.ts:16-39 (helper)GraphQL query string used to fetch pages from Shopify Admin API.const GET_PAGES_QUERY = ` query PageList($first: Int!) { pages(first: $first) { edges { node { id title handle bodySummary body createdAt updatedAt publishedAt } } pageInfo { hasNextPage hasPreviousPage startCursor endCursor } } } `;
- src/index.ts:74-74 (registration)Initializes the getPages tool with the Shopify GraphQL client instance.getPages.initialize(shopifyClient);