Skip to main content
Glama
README.md
# Shopify MCP Server

MCP Server for Shopify API, enabling interaction with store data (products, customers, orders, etc.) via GraphQL.


## Features

Provides tools for product, customer, and order management, direct GraphQL integration, and clear error handling.

## Prerequisites

1. Node.js (v16+)
2. Shopify Custom App Access Token

## Installation

```bash
git clone https://github.com/pashpashpash/shopify-mcp-server.git
cd shopify-mcp-server
npm install
npm run build
```

## Shopify Setup & Configuration

1.  **Create Custom App**: In Shopify admin > **Settings** > **Apps and sales channels** > **Develop apps** > **Create an app**.
2.  **Configure Scopes**: Grant `read/write` permissions for `products`, `customers`, and `orders`.
3.  **Install App & Get Token**: Install the app and copy the **Admin API access token**.
4.  **Create `.env` file** in the project root:
    ```
    SHOPIFY_ACCESS_TOKEN=your_access_token
    MYSHOPIFY_DOMAIN=your-store.myshopify.com
    ```
5.  **Configure Claude Desktop** (`claude_desktop_config.json`):
    *   macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
    *   Windows: `%APPDATA%/Claude/claude_desktop_config.json`
    ```json
    {
      "mcpServers": {
        "shopify": {
          "command": "node",
          "args": ["path/to/shopify-mcp-server/dist/index.js"],
          "env": {
            "SHOPIFY_ACCESS_TOKEN": "your_access_token",
            "MYSHOPIFY_DOMAIN": "your-store.myshopify.com"
          }
        }
      }
    }
    ```
    *Note: Use the correct path to the cloned repo and store your token securely.*

## Available Tools

### Product Management

1.  `findProducts`: Get all products or search by title.
    *   `searchTitle` (optional string): Filter by title.
    *   `limit` (number): Max products.
2.  `listProductsInCollection`: Get products from a collection.
    *   `collectionId` (string): Collection ID.
    *   `limit` (optional number, default: 10): Max products.
3.  `getProductsByIds`: Get products by IDs.
    *   `productIds` (array of strings): Product IDs.
4.  `getVariantsByIds`: Get variants by IDs.
    *   `variantIds` (array of strings): Variant IDs.

### Customer Management

5.  `listCustomers`: Get customers with pagination.
    *   `limit` (optional number): Max customers.
    *   `next` (optional string): Next page cursor.
6.  `addCustomerTags`: Add tags to a customer.
    *   `customerId` (string): Customer ID.
    *   `tags` (array of strings): Tags to add.

### Order Management

7.  `findOrders`: Get orders with advanced filtering/sorting.
    *   `first` (optional number): Limit orders.
    *   `after` (optional string): Next page cursor.
    *   `query` (optional string): Filter query.
    *   `sortKey` (optional enum): Sort field.
    *   `reverse` (optional boolean): Reverse sort.
8.  `getOrderById`: Get a single order by ID.
    *   `orderId` (string): Order ID.
9.  `createDraftOrder`: Create a draft order.
    *   `lineItems` (array): Items (variantId, quantity).
    *   `email` (string): Customer email.
    *   `shippingAddress` (object): Shipping details.
    *   `note` (optional string): Order note.
10. `completeDraftOrder`: Complete a draft order.
    *   `draftOrderId` (string): Draft order ID.
    *   `variantId` (string): Variant ID.

### Discount Management

11. `createDiscountCode`: Create a basic discount code.
    *   `title` (string): Discount title.
    *   `code` (string): Discount code.
    *   `valueType` (enum): 'percentage' or 'fixed_amount'.
    *   `value` (number): Discount value.
    *   `startsAt` (string): Start date (ISO).
    *   `endsAt` (optional string): End date (ISO).
    *   `appliesOncePerCustomer` (boolean): Limit one use per customer.

### Collection Management

12. `listCollections`: Get all collections.
    *   `limit` (optional number, default: 10): Max collections.
    *   `name` (optional string): Filter by name.

### Shop Information

13. `getShopDetails`: Get basic shop details (No inputs).
14. `getExtendedShopDetails`: Get extended shop details (No inputs).

### Webhook Management

15. `manageWebhooks`: Manage webhooks.
    *   `action` (enum): 'subscribe', 'find', 'unsubscribe'.
    *   `callbackUrl` (string): Webhook URL.
    *   `topic` (enum): Webhook topic.
    *   `webhookId` (optional string): Required for unsubscribe.

### Debugging Tools

16. `debugGetVariantMetafield`: Get variant & `size_chart_json` metafield.
    *   `variantId` (string): Variant GID.

### Developer Tools

17. `introspect_admin_schema`: Introspect Admin API GraphQL schema.
    *   `query` (string): Filter term.
    *   `filter` (optional array): Filter by 'types', 'queries', 'mutations', 'all'.
18. `search_dev_docs`: Search shopify.dev docs.
    *   `prompt` (string): Search query.

## Debugging

Check Claude Desktop MCP logs:
`tail -n 20 -f ~/Library/Logs/Claude/mcp*.log`

Common issues:
*   **Authentication**: Check token, domain format, API scopes.
*   **API Errors**: Check rate limits, input formats, required fields.

## Development

```bash
npm install
npm run build
npm test
```

## Dependencies

- @modelcontextprotocol/sdk
- graphql-request
- zod

## License

MIT

---
Note: Fork of [original shopify-mcp-server repository](https://github.com/rezapex/shopify-mcp-server-main)