Skip to main content
Glama

get-blogs

Retrieve blog posts from a Shopify store using search filters and pagination controls to manage content access.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
searchTitleNo
limitNo

Implementation Reference

  • Core implementation of the 'get-blogs' tool, defining the tool object with name, schema, initialize, and execute handler that performs GraphQL query to fetch blogs from Shopify.
    const getBlogs = {
      name: "get-blogs",
      description: "Get all blogs or search by title",
      schema: GetBlogsInputSchema,
    
      initialize(client: GraphQLClient) {
        shopifyClient = client;
      },
    
      execute: async (input: GetBlogsInput) => {
        try {
          const { searchTitle, limit } = input;
    
          const query = gql`
            query GetBlogs($first: Int!, $query: String) {
              blogs(first: $first, query: $query) {
                nodes {
                  id
                  handle
                  title
                  updatedAt
                  commentPolicy
                  feed {
                    path
                    location
                  }
                  createdAt
                  templateSuffix
                  tags
                }
                pageInfo {
                  hasNextPage
                  hasPreviousPage
                  startCursor
                  endCursor
                }
              }
            }
          `;
    
          const variables = {
            first: limit,
            query: searchTitle ? `title:*${searchTitle}*` : undefined
          };
    
          const data = await shopifyClient.request(query, variables) as {
            blogs: {
              nodes: Array<{
                id: string;
                handle: string;
                title: string;
                updatedAt: string;
                commentPolicy: string;
                feed: {
                  path: string;
                  location: string;
                } | null;
                createdAt: string;
                templateSuffix: string | null;
                tags: string[];
              }>;
              pageInfo: {
                hasNextPage: boolean;
                hasPreviousPage: boolean;
                startCursor: string;
                endCursor: string;
              };
            };
          };
    
          return { 
            blogs: data.blogs.nodes,
            pageInfo: data.blogs.pageInfo
          };
        } catch (error) {
          console.error("Error fetching blogs:", error);
          throw new Error(
            `Failed to fetch blogs: ${
              error instanceof Error ? error.message : String(error)
            }`
          );
        }
      }
    };
  • Zod input schema for validating parameters of the 'get-blogs' tool: searchTitle (optional string) and limit (number, default 10).
    const GetBlogsInputSchema = z.object({
      searchTitle: z.string().optional().describe("Optional search term to filter blogs by title"),
      limit: z.number().default(10).describe("Maximum number of blogs to return (default: 10)")
    });
  • src/index.ts:194-206 (registration)
    Registers the 'get-blogs' tool with the MCP server using server.tool(), providing inline schema and handler that delegates to getBlogs.execute().
    server.tool(
      "get-blogs",
      {
        searchTitle: z.string().optional(),
        limit: z.number().default(10)
      },
      async (args) => {
        const result = await getBlogs.execute(args);
        return {
          content: [{ type: "text", text: JSON.stringify(result) }]
        };
      }
    );
  • src/index.ts:18-18 (registration)
    Import statement for the getBlogs tool module.
    import { getBlogs } from "./tools/getBlogs.js";
  • Initializes the getBlogs tool with the Shopify GraphQL client.
    getBlogs.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