Skip to main content
Glama

get-orders

Retrieve Shopify orders with specific statuses using the 'get-orders' tool. Configure limits and filter by 'open', 'closed', 'cancelled', or 'any' status to efficiently manage order data.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNoany

Implementation Reference

  • The main handler function 'execute' that fetches orders from Shopify using GraphQL, applies filters, and formats the response.
    execute: async (input: GetOrdersInput) => {
      try {
        const { status, limit } = input;
    
        // Build query filters
        let queryFilter = "";
        if (status !== "any") {
          queryFilter = `status:${status}`;
        }
    
        const query = gql`
          query GetOrders($first: Int!, $query: String) {
            orders(first: $first, query: $query) {
              edges {
                node {
                  id
                  name
                  createdAt
                  displayFinancialStatus
                  displayFulfillmentStatus
                  totalPriceSet {
                    shopMoney {
                      amount
                      currencyCode
                    }
                  }
                  subtotalPriceSet {
                    shopMoney {
                      amount
                      currencyCode
                    }
                  }
                  totalShippingPriceSet {
                    shopMoney {
                      amount
                      currencyCode
                    }
                  }
                  totalTaxSet {
                    shopMoney {
                      amount
                      currencyCode
                    }
                  }
                  customer {
                    id
                    firstName
                    lastName
                    email
                  }
                  shippingAddress {
                    address1
                    address2
                    city
                    provinceCode
                    zip
                    country
                    phone
                  }
                  lineItems(first: 10) {
                    edges {
                      node {
                        id
                        title
                        quantity
                        originalTotalSet {
                          shopMoney {
                            amount
                            currencyCode
                          }
                        }
                        variant {
                          id
                          title
                          sku
                        }
                      }
                    }
                  }
                  tags
                  note
                }
              }
            }
          }
        `;
    
        const variables = {
          first: limit,
          query: queryFilter || undefined
        };
    
        const data = (await shopifyClient.request(query, variables)) as {
          orders: any;
        };
    
        // Extract and format order data
        const orders = data.orders.edges.map((edge: any) => {
          const order = edge.node;
    
          // Format line items
          const lineItems = order.lineItems.edges.map((lineItemEdge: any) => {
            const lineItem = lineItemEdge.node;
            return {
              id: lineItem.id,
              title: lineItem.title,
              quantity: lineItem.quantity,
              originalTotal: lineItem.originalTotalSet.shopMoney,
              variant: lineItem.variant
                ? {
                    id: lineItem.variant.id,
                    title: lineItem.variant.title,
                    sku: lineItem.variant.sku
                  }
                : null
            };
          });
    
          return {
            id: order.id,
            name: order.name,
            createdAt: order.createdAt,
            financialStatus: order.displayFinancialStatus,
            fulfillmentStatus: order.displayFulfillmentStatus,
            totalPrice: order.totalPriceSet.shopMoney,
            subtotalPrice: order.subtotalPriceSet.shopMoney,
            totalShippingPrice: order.totalShippingPriceSet.shopMoney,
            totalTax: order.totalTaxSet.shopMoney,
            customer: order.customer
              ? {
                  id: order.customer.id,
                  firstName: order.customer.firstName,
                  lastName: order.customer.lastName,
                  email: order.customer.email
                }
              : null,
            shippingAddress: order.shippingAddress,
            lineItems,
            tags: order.tags,
            note: order.note
          };
        });
    
        return { orders };
      } catch (error) {
        console.error("Error fetching orders:", error);
        throw new Error(
          `Failed to fetch orders: ${
            error instanceof Error ? error.message : String(error)
          }`
        );
      }
    }
  • Zod input schema defining parameters for the get-orders tool: status filter and limit.
    const GetOrdersInputSchema = z.object({
      status: z.enum(["any", "open", "closed", "cancelled"]).default("any"),
      limit: z.number().default(10)
    });
  • src/index.ts:123-135 (registration)
    MCP server registration of the 'get-orders' tool, using inline schema and delegating execution to the imported getOrders.execute.
    server.tool(
      "get-orders",
      {
        status: z.enum(["any", "open", "closed", "cancelled"]).default("any"),
        limit: z.number().default(10)
      },
      async (args) => {
        const result = await getOrders.execute(args);
        return {
          content: [{ type: "text", text: JSON.stringify(result) }]
        };
      }
    );

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

Related Tools

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/GeLi2001/shopify-mcp'

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