Skip to main content
Glama
etsy-mcp-server

etsy-mcp-server

by DColl

etsy-mcp-server

Full-featured Model Context Protocol server for the Etsy Open API v3. Manage your Etsy shop — listings, inventory, images, digital files, orders — entirely through Claude or any MCP-compatible client.

Features

Group

Tools

Shop

get_me, get_shop, update_shop

Listings

list_listings, get_listing, create_listing, update_listing, publish_listing, delete_listing

Images

list_listing_images, upload_listing_image, delete_listing_image

Digital files

list_listing_files, upload_listing_file, delete_listing_file

Inventory

get_inventory, update_inventory

Sections

list_sections, create_section, update_section, delete_section

Taxonomy

get_taxonomy_nodes, get_taxonomy_properties, suggest_tags

Orders

list_orders, get_order

Related MCP server: Etsy MCP Server

Prerequisites

  • Node.js 18+

  • An Etsy Developer account with an app created

  • Your app must be approved for OAuth write access (Etsy reviews new apps)

Installation

git clone https://github.com/DColl/etsy-mcp-server.git
cd etsy-mcp-server
npm install
cp .env.example .env

Edit .env and fill in your credentials:

ETSY_API_KEY=your_keystring_here
ETSY_API_SECRET=your_shared_secret_here

Authentication

Step 1 — OAuth authorization (required for write operations)

npm run auth

This opens a local browser flow. After authorizing, tokens are saved to .env automatically.

Step 2 — Find your Shop ID

Build the server and ask Claude: "call get_me" — it returns your shop_id. Add it to .env:

ETSY_SHOP_ID=12345678

Build & run

npm run build
npm start

Or in dev mode (no build step):

npm run dev

Configure Claude Code

Add to your Claude Code settings (~/.claude/settings.json or project .claude/settings.json):

{
  "mcpServers": {
    "etsy": {
      "command": "node",
      "args": ["/absolute/path/to/etsy-mcp-server/dist/index.js"],
      "env": {
        "ETSY_API_KEY": "your_keystring",
        "ETSY_API_SECRET": "your_shared_secret",
        "ETSY_ACCESS_TOKEN": "your_access_token",
        "ETSY_REFRESH_TOKEN": "your_refresh_token",
        "ETSY_TOKEN_EXPIRY": "your_token_expiry",
        "ETSY_SHOP_ID": "your_shop_id"
      }
    }
  }
}

Configure Claude Desktop

Add to ~/AppData/Roaming/Claude/claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "etsy": {
      "command": "node",
      "args": ["C:\\path\\to\\etsy-mcp-server\\dist\\index.js"]
    }
  }
}

Example usage with Claude

Create a draft listing for my PDF printable "STOP Before You Pay" fraud prevention checklist.
Price: $4.99, it's a digital download, quantity 999.
Use suggest_tags with keyword "printable" to find the right taxonomy, then add tags.
Upload cover.jpg as image and stop-before-you-pay.pdf as the digital file.
Then publish the listing.

Rate limits

Etsy allows 5 requests/second and 5,000 requests/day per API key.

License

MIT — © TBS-Digital 2026

Available Tools

26 tools
create_listingA

Create a new draft listing. For digital products (PDF, etc.) set type='download'. Returns the new listing_id.

Inputs: price (required), title (required), quantity (required), description (required), +10 more.

create_sectionB

Create a new section in your shop.

Inputs: title (required).

delete_listingA

Permanently delete a listing. This cannot be undone.

Inputs: listing_id (required).

delete_listing_fileC

Remove a digital file from a listing.

Inputs: listing_id (required), listing_file_id (required).

delete_listing_imageC

Remove an image from a listing.

Inputs: listing_id (required), listing_image_id (required).

delete_sectionB

Delete a shop section. Listings in this section will become unsectioned.

Inputs: section_id (required).

get_inventoryA

Get inventory (products, offerings, prices, quantities) for a listing.

Inputs: listing_id (required).

get_listingB

Get full details of a single listing by ID.

Inputs: listing_id (required).

get_meA

Get authenticated Etsy user info including user_id and shop_id. Use this first to find your ETSY_SHOP_ID.

Inputs: no named parameters.

get_orderA

Get full details of a single order (receipt) including buyer info, items, and totals.

Inputs: receipt_id (required).

get_shopA

Get full details of your Etsy shop (name, announcement, policies, stats).

Inputs: shop_id.

get_taxonomy_nodesA

Get the full Etsy seller taxonomy tree. Use this to find the right taxonomy_id for create_listing. Search the results for your product category (e.g. 'art print', 'digital download', 'guide').

Inputs: no named parameters.

get_taxonomy_propertiesA

Get available properties (attributes) for a specific taxonomy node. Use this to know what attributes you can set when creating a listing.

Inputs: taxonomy_id (required).

list_listing_filesC

List all digital files attached to a listing.

Inputs: listing_id (required).

list_listing_imagesC

List all images attached to a listing.

Inputs: listing_id (required).

list_listingsB

List all listings in your shop. Filter by state: active, draft, inactive, expired, sold_out.

Inputs: limit, state, offset.

list_ordersC

List shop orders (receipts). Filter by status: open, unshipped, unpaid, completed, processing.

Inputs: limit, offset, status, max_created, +1 more.

list_sectionsA

List all sections in your shop (used to organize listings into categories).

Inputs: no named parameters.

publish_listingA

Publish a draft listing (make it active/visible). Requires at least one image already uploaded.

Inputs: listing_id (required).

suggest_tagsA

Search taxonomy nodes by keyword to help build relevant SEO tags for a listing. Returns matching category names you can use as tags.

Inputs: keyword (required).

update_inventoryA

Update the full inventory for a listing. You must provide ALL products (replaces entire inventory). Get current state with get_inventory first, then modify only what you need.

Inputs: products (required), listing_id (required), sku_on_property, price_on_property, +1 more.

update_listingC

Update an existing listing. Only provide fields you want to change.

Inputs: listing_id (required), tags, price, state, +5 more.

update_sectionC

Rename an existing shop section.

Inputs: title (required), section_id (required).

update_shopA

Update shop info: title, announcement, sale message, or digital sale message.

Inputs: title, announcement, sale_message, digital_sale_message.

upload_listing_fileA

Upload a digital file (PDF, ZIP, etc.) to a listing. The listing type must be 'download'.

Inputs: file_path (required), listing_id (required), rank.

upload_listing_imageB

Upload an image to a listing from a local file path. Supported formats: JPEG, PNG, GIF (max 10MB).

Inputs: image_path (required), listing_id (required), rank, overwrite.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 26 tools

    Disambiguation5/5

    Every tool targets a distinct entity and action. For example, create_listing, get_listing, update_listing, delete_listing are clearly separated from section, inventory, order, and taxonomy tools. No two tools overlap in purpose.

    Naming Consistency5/5

    All tool names use a consistent verb_noun pattern in snake_case (e.g., create_listing, upload_listing_image, suggest_tags). The verbs are standardized (get, list, create, update, delete, upload, publish, suggest), making the API highly predictable.

    Tool Count4/5

    26 tools is slightly above the typical range, but each tool maps to a well-defined API operation. The count is justified by the breadth of Etsy's domain (listings, sections, inventory, orders, shop, taxonomy). It could be streamlined, but it's still reasonable.

    Completeness4/5

    The tool set covers core CRUD operations for listings, sections, inventory, and shop, plus listing-specific file/image management and taxonomy exploration. Minor gaps exist (e.g., no tool to update order status), but the overall surface is comprehensive for seller-side automation.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      A production-grade MCP server that enables AI assistants like Claude to read Etsy shop data—listings, orders, inventory, and stats—through eight read-only tools, using OAuth and automatic pagination.
      8
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      An MCP server for interacting with the Etsy API, enabling listing management, shop information, shipping profiles, and image uploads.
      13
      ISC
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP server for interacting with the Etsy API. Allows users to retrieve shop data, manage listings, and perform various Etsy operations through natural language.
      MIT