MCP server for the Etsy API
Etsy becomes available to MCP clients through the etsy mcp server. MCP server for the Etsy API.
This project exposes a subset of the Etsy API through the Model Context Protocol. It allows tools to be called from an MCP client to retrieve shop data and manage listings.
Once connected, the assistant can call these 11 tools directly:
getShop — Fetch information about a shop. Required argument: shop_idgetMe — Return basic info about the authenticated user, including user_id and shop_id. This endpoint takes no argumentsgetListingsByShop — List the listings in a shop. Supports an optional state parameter (e.g. active, draft). Requires shop_idcreateDraftListing — Create a new physical draft listing using POST /v3/application/shops/{shop_id}/listings. The tool accepts all fields supported by Etsy's createDraftListinguploadListingImage — Upload an image to a listing. Requires shop_id, listing_id and image_path. (Implementation is currently a placeholder.)updateListing — Update an existing listing. Requires shop_id and listing_id. Optional fields include title, description and pricegetShopReceipts — The getShopReceipts tool exposed by this servergetShopSections — Retrieve the list of sections in a shop. Requires shop_idgetShopSection — Retrieve a single shop section by shop_id and shop_section_idgetSellerTaxonomyNodes — The getSellerTaxonomyNodes tool exposed by this servergetPropertiesByTaxonomyId — List product properties supported for a specific taxonomy node. Requires taxonomy_idThe server is distributed via npm as tsx, so most clients can run it without a manual build step. Add it to your MCP client's configuration and restart the client to pick it up — the copy-paste configs for Claude Desktop, Claude Code and Cursor are on this page.
Before the server will start you need to supply 6 environment variables: ETSY_API_KEY, ETSY_SHARED_SECRET, ETSY_REFRESH_TOKEN, YOUR_KEY, YOUR_SECRET, YOUR_TOKEN. Keep credentials in your client's env block or a secrets manager rather than committing them.
Developer-tool servers are usually the first ones people connect, because they turn "help me with this code" into an assistant that can actually read the repo and act on it. Etsy sits in that group, and the shape of its toolset — getShop, getMe, getListingsByShop among others — tells you what it is really for. Worth comparing against the other developer tools servers in this directory before you commit to one, since several overlap in scope but differ sharply in setup cost and permissions.
| Tool | What it does |
|---|---|
| getShop | Fetch information about a shop. Required argument: shop_id. |
| getMe | Return basic info about the authenticated user, including user_id and shop_id. This endpoint takes no arguments. |
| getListingsByShop | List the listings in a shop. Supports an optional state parameter (e.g. active, draft). Requires shop_id. |
| createDraftListing | Create a new physical draft listing using POST /v3/application/shops/{shop_id}/listings. The tool accepts all fields supported by Etsy's createDraftListing endpoint. |
| uploadListingImage | Upload an image to a listing. Requires shop_id, listing_id and image_path. (Implementation is currently a placeholder.) |
| updateListing | Update an existing listing. Requires shop_id and listing_id. Optional fields include title, description and price. |
| getShopReceipts | The getShopReceipts tool exposed by this server. |
| getShopSections | Retrieve the list of sections in a shop. Requires shop_id. |
| getShopSection | Retrieve a single shop section by shop_id and shop_section_id. |
| getSellerTaxonomyNodes | The getSellerTaxonomyNodes tool exposed by this server. |
| getPropertiesByTaxonomyId | List product properties supported for a specific taxonomy node. Requires taxonomy_id. |
{
"mcpServers": {
"etsy": {
"command": "npx",
"args": ["-y", "tsx"],
"env": {
"ETSY_API_KEY": "your-value",
"ETSY_SHARED_SECRET": "your-value",
"ETSY_REFRESH_TOKEN": "your-value",
"YOUR_KEY": "your-value",
"YOUR_SECRET": "your-value",
"YOUR_TOKEN": "your-value"
}
}
}
}Add to claude_desktop_config.json, then restart Claude Desktop.
| Variable | Description | Required |
|---|---|---|
| ETSY_API_KEY | Credential the server authenticates with. | Yes |
| ETSY_SHARED_SECRET | Credential the server authenticates with. | Yes |
| ETSY_REFRESH_TOKEN | Credential the server authenticates with. | Yes |
| YOUR_KEY | Credential the server authenticates with. | Yes |
| YOUR_SECRET | Credential the server authenticates with. | Yes |
| YOUR_TOKEN | Credential the server authenticates with. | Yes |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.