Skip to main content
Glama

Etsy MCP Server

Tests License Node Docker

GitHub stars GitHub forks

A Model Context Protocol (MCP) server that provides full access to the Etsy Open API v3. Supports both buyer browsing and seller shop management with 37 tools covering listings, orders, shipping, reviews, inventory, payments, and more.

Features

  • Full Etsy API v3 coverage — 37 MCP tools wrapping ~70 API endpoints

  • OAuth 2.0 + PKCE — Secure browser-based authentication with automatic token refresh

  • Both buyer and seller workflows — Search listings, manage shops, process orders, handle shipping

  • Rate limiting — Concurrency-safe 10 req/sec limiter to respect Etsy's limits

  • Auto-retry — Exponential backoff on 429/5xx errors, automatic token refresh on 401

  • TypeScript — Full type safety with types generated from Etsy's official OpenAPI spec

Category

Tools

Listings

search_listings, get_listing, create_draft_listing, update_listing, delete_listing, get_listings_by_shop

Shop

get_shop, update_shop, find_shops, get_shop_sections, manage_shop_sections

Orders

get_shop_receipts, get_receipt, update_receipt, create_shipment

Transactions

get_transactions_by_shop, get_transaction, get_transactions_by_receipt

Shipping

get_shipping_profiles, create_shipping_profile, update_shipping_profile, manage_shipping_destinations, get_shipping_carriers

Reviews

get_reviews_by_listing, get_reviews_by_shop

Users

get_me, get_user, get_user_addresses

Taxonomy

get_buyer_taxonomy, get_taxonomy_properties

Images/Video

get_listing_images, upload_listing_image, upload_listing_video, delete_listing_image

Inventory

get_listing_inventory, update_listing_inventory

Payments

get_payments, get_ledger_entries

Return Policies

get_return_policies, manage_return_policy

Auth

authenticate

Related MCP server: Etsy MCP Server

Installation

From source

git clone https://github.com/aserper/etsy-mcp.git
cd etsy-mcp
npm install
npm run build

Docker

docker pull ghcr.io/aserper/etsy-mcp:latest

Configuration

Register at Etsy Developers to get your API credentials.

Variable

Required

Description

ETSY_API_KEY

Yes

Your Etsy API keystring

ETSY_SHARED_SECRET

Yes

Your Etsy shared secret

Copy .env.example to .env and fill in your credentials:

cp .env.example .env

Usage

Claude Desktop Configuration

{
  "mcpServers": {
    "etsy": {
      "command": "node",
      "args": ["/path/to/etsy-mcp/dist/index.js"],
      "env": {
        "ETSY_API_KEY": "your_keystring",
        "ETSY_SHARED_SECRET": "your_shared_secret"
      }
    }
  }
}

Docker

docker run --rm \
  -e ETSY_API_KEY=your_keystring \
  -e ETSY_SHARED_SECRET=your_shared_secret \
  ghcr.io/aserper/etsy-mcp:latest

Authentication

On first use, call the authenticate tool. This opens your browser to Etsy's OAuth consent page using PKCE. After granting access, tokens are stored at ~/.etsy-mcp/tokens.json (owner-only permissions) and auto-refreshed when they expire.

Development

npm install          # Install dependencies
npm run build        # Compile TypeScript
npm test             # Run tests
npm run dev          # Watch mode
npm run lint         # Type check
npm run generate-types  # Regenerate types from Etsy OAS spec

API Coverage

This server covers the full Etsy Open API v3 (~70 endpoints). Features not available via the public API (messaging, cart, favorites, checkout) are out of scope.

License

MIT

Contributing

Contributions welcome! Feel free to open an issue or submit a PR.

Disclaimer

This project is not affiliated with, endorsed by, or associated with Etsy, Inc. It uses Etsy's publicly available Open API v3. Use responsibly and in accordance with Etsy's API Terms of Use.

Available Tools

41 tools
authenticateA

Authenticate with Etsy via OAuth 2.0. Opens a browser for consent. Required before using tools that need user authorization.

Inputs: no named parameters.

create_draft_listingC

Create a new draft listing in a shop

Inputs: shop_id (required), title (required), description (required), price (required), +11 more.

create_shipmentC

Create a shipment with tracking for a receipt

Inputs: shop_id (required), receipt_id (required), tracking_code, carrier_name, +1 more.

create_shipping_profileC

Create a new shipping profile for a shop

Inputs: shop_id (required), title (required), origin_country_iso (required), primary_cost (required), +4 more.

delete_listingC

Delete a listing

Inputs: listing_id (required).

delete_listing_imageC

Delete an image from a listing

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

find_shopsC

Search for Etsy shops by name

Inputs: shop_name (required), limit, offset.

get_buyer_taxonomyB

Get the full buyer taxonomy tree (categories)

Inputs: no named parameters.

get_ledger_entriesC

Get payment account ledger entries for a shop

Inputs: shop_id (required), min_created, max_created, limit, +1 more.

get_listingB

Get details of a specific Etsy listing

Inputs: listing_id (required), includes.

get_listing_imagesC

Get all images for a listing

Inputs: listing_id (required).

get_listing_inventoryC

Get inventory (products, offerings, variations) for a listing

Inputs: listing_id (required).

get_listings_by_shopC

Get all listings for a shop, filterable by state

Inputs: shop_id (required), state, limit, offset.

get_meA

Get the currently authenticated Etsy user

Inputs: no named parameters.

get_paymentsC

Get payments for a shop or a specific receipt (read-only)

Inputs: shop_id (required), receipt_id.

get_receiptC

Get a specific receipt/order by ID

Inputs: shop_id (required), receipt_id (required).

get_return_policiesC

Get all return policies for a shop

Inputs: shop_id (required).

get_reviews_by_listingC

Get reviews for a specific listing

Inputs: listing_id (required), limit, offset.

get_reviews_by_shopC

Get reviews for a shop

Inputs: shop_id (required), limit, offset.

get_shipping_carriersC

List available shipping carriers by origin country

Inputs: origin_country_iso (required).

get_shipping_profilesB

List all shipping profiles for a shop

Inputs: shop_id (required).

get_shopB

Get details of an Etsy shop by ID

Inputs: shop_id (required).

get_shop_receiptsC

List orders/receipts for a shop with optional filters

Inputs: shop_id (required), min_created, max_created, was_paid, +3 more.

get_shop_sectionsC

Get all sections of a shop

Inputs: shop_id (required).

get_taxonomy_propertiesC

Get properties for a specific taxonomy/category node

Inputs: taxonomy_id (required).

get_transactionC

Get a specific transaction by ID

Inputs: shop_id (required), transaction_id (required).

get_transactions_by_receiptB

Get all transactions for a specific receipt

Inputs: shop_id (required), receipt_id (required).

get_transactions_by_shopC

Get all transactions for a shop

Inputs: shop_id (required), limit, offset.

get_userC

Get an Etsy user by ID

Inputs: user_id (required).

get_user_addressesC

Get shipping addresses for a user

Inputs: user_id (required).

manage_return_policyC

Create, update, or delete a return policy for a shop

Inputs: shop_id (required), action (required), return_policy_id, accepts_returns, +2 more.

manage_shipping_destinationsC

Create or delete shipping destinations on a profile

Inputs: shop_id (required), shipping_profile_id (required), action (required), shipping_profile_destination_id, +4 more.

manage_shop_sectionsC

Create, update, or delete a shop section

Inputs: shop_id (required), action (required), shop_section_id, title.

search_listingsB

Search active Etsy listings with keywords and filters

Inputs: keywords, taxonomy_id, min_price, max_price, +4 more.

update_listingC

Update an existing listing

Inputs: shop_id (required), listing_id (required), title, description, +6 more.

update_listing_inventoryC

Update inventory for a listing (products with offerings and prices)

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

update_receiptC

Update a receipt (e.g., mark as shipped)

Inputs: shop_id (required), receipt_id (required), was_shipped, was_paid.

update_shipping_profileC

Update an existing shipping profile

Inputs: shop_id (required), shipping_profile_id (required), title, origin_country_iso, +4 more.

update_shopB

Update shop settings (requires shop owner auth)

Inputs: shop_id (required), title, announcement, sale_message, +2 more.

upload_listing_imageC

Upload an image to a listing from a local file path

Inputs: shop_id (required), listing_id (required), image_path (required), rank, +3 more.

upload_listing_videoB

Upload a video to a listing from a local file path (max 15 seconds)

Inputs: shop_id (required), listing_id (required), video_path (required).

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 41 tools

    Disambiguation4/5

    Most tools have distinct purposes targeting specific Etsy resources (e.g., listings, receipts, shipping profiles), with clear boundaries. However, some overlap exists, such as 'get_reviews_by_listing' and 'get_reviews_by_shop', which could cause minor confusion if an agent needs reviews but isn't sure which to use. Overall, descriptions help differentiate tools effectively.

    Naming Consistency5/5

    Tool names follow a highly consistent verb_noun pattern throughout, such as 'get_listing', 'update_listing', 'delete_listing', and 'search_listings'. All tools use snake_case with clear verbs (e.g., get, create, update, delete, manage), making them predictable and easy to understand. No deviations or mixed conventions are present.

    Tool Count3/5

    With 41 tools, the count is borderline high for a single server, potentially overwhelming for agents. While Etsy's API is extensive, this many tools might feel heavy and could lead to complexity in tool selection. A more streamlined set might improve usability without sacrificing functionality.

    Completeness5/5

    The tool set provides comprehensive coverage of Etsy's domain, including full CRUD operations for key resources like listings, receipts, and shipping profiles. It covers authentication, search, management of images/videos, inventory, reviews, taxes, and shop settings, with no obvious gaps. Agents can handle complete workflows from listing creation to order fulfillment.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      Not graded
      maintenance
      Enables seamless integration with Etsy's marketplace API v3 to search listings, manage shop inventory, create and update products, optimize SEO, and access seller resources with OAuth support for authenticated operations.
      5
      -
    • A
      license
      A
      quality
      D
      maintenance
      Enables AI assistants to search for products, retrieve listing details, get shop information, discover trending items, and access reviews on Etsy through the Etsy API v3.
      7
      20
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables interaction with the Etsy Open API v3, covering all 105 operations with authentication, scope management, and secure token refresh.
      7
      24 npm
      MIT