Skip to main content
Glama

get-pages

Retrieve Shopify store pages by searching titles and limiting results to manage content efficiently through GraphQL API.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
searchTitleNo
limitNo

Implementation Reference

  • 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)
          }`
        );
      }
    }
  • 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) }]
        };
      }
    );
  • 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);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/luckyfarnon/Shopify-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server