get-pages
Retrieve Shopify store pages by searching titles and limiting results to manage content efficiently through GraphQL API.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "get-pages"
}
}Input 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);