@iflow-mcp/dynamicendpoints-etsy-mcp 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +9 -0
- package/.github/copilot-instructions.md +16 -0
- package/.smithery/index.cjs +1352 -0
- package/DEPLOYMENT_CHECKLIST.md +206 -0
- package/OAUTH_SETUP.md +275 -0
- package/PROMPTS_AND_RESOURCES.md +353 -0
- package/QUICK_REFERENCE.md +186 -0
- package/README.md +677 -0
- package/SMITHERY_DEPLOYMENT.md +276 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +2459 -0
- package/icon.svg +54 -0
- package/language.json +1 -0
- package/package.json +1 -0
- package/package_name +1 -0
- package/push_info.json +5 -0
- package/smithery.yaml +1 -0
- package/src/index.ts +2667 -0
- package/tsconfig.json +19 -0
package/README.md
ADDED
|
@@ -0,0 +1,677 @@
|
|
|
1
|
+
# Etsy MCP Server
|
|
2
|
+
|
|
3
|
+
A Model Context Protocol (MCP) server that provides seamless integration with the Etsy API v3. This server enables AI assistants and applications to interact with Etsy's marketplace, search listings, retrieve shop information, and access product details.
|
|
4
|
+
|
|
5
|
+
**🚀 Deploy to Smithery**: This server is ready for deployment to [Smithery](https://smithery.ai) for hosted, always-available access. See [SMITHERY_DEPLOYMENT.md](./SMITHERY_DEPLOYMENT.md) for instructions.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- 🔍 **Search Listings**: Search for active Etsy listings with keyword filtering
|
|
10
|
+
- 🏪 **Shop Information**: Get detailed shop information and listings
|
|
11
|
+
- 📦 **Product Details**: Access listing inventory, images, and variations
|
|
12
|
+
- 📊 **Trending Data**: Retrieve trending listings on Etsy
|
|
13
|
+
- ✏️ **Create & Update Listings**: Post new products and manage existing ones
|
|
14
|
+
- 🎨 **Manage Shop Sections**: Organize your shop with categories
|
|
15
|
+
- 🛠️ **Full Shop Management**: Update shop info, inventory, images, and more
|
|
16
|
+
- 🔐 **OAuth Support**: Secure authenticated access for write operations
|
|
17
|
+
- 💬 **Smart Prompts**: Pre-built prompts for listing creation, SEO optimization, pricing, and analytics
|
|
18
|
+
- 📚 **Comprehensive Resources**: Built-in guides for SEO, photography, shipping, and seller best practices
|
|
19
|
+
- 🏷️ **Tool Annotations**: All 19 tools include readOnlyHint, destructiveHint, and idempotentHint for better AI understanding
|
|
20
|
+
- ⚙️ **Zero Configuration**: Works out-of-the-box with sensible defaults, fully configurable via environment variables
|
|
21
|
+
- � **Built with Latest MCP Standards**: Uses @modelcontextprotocol/sdk v1.0.4
|
|
22
|
+
|
|
23
|
+
## Installation
|
|
24
|
+
|
|
25
|
+
1. Clone this repository:
|
|
26
|
+
```bash
|
|
27
|
+
git clone <your-repo-url>
|
|
28
|
+
cd etsy_mcp
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
2. Install dependencies:
|
|
32
|
+
```bash
|
|
33
|
+
npm install
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
3. Build the project:
|
|
37
|
+
```bash
|
|
38
|
+
npm run build
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Smithery Deployment (Recommended)
|
|
42
|
+
|
|
43
|
+
Deploy to Smithery for hosted, always-available access:
|
|
44
|
+
|
|
45
|
+
1. Push your code to GitHub
|
|
46
|
+
2. Connect to [Smithery](https://smithery.ai/new)
|
|
47
|
+
3. Click Deploy
|
|
48
|
+
|
|
49
|
+
**📖 Full Guide**: See [SMITHERY_DEPLOYMENT.md](./SMITHERY_DEPLOYMENT.md) for complete deployment instructions.
|
|
50
|
+
|
|
51
|
+
## Local Development
|
|
52
|
+
|
|
53
|
+
Test locally with the Smithery interactive playground:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
npm run dev
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Or compile TypeScript manually:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
npm run compile
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Configuration
|
|
66
|
+
|
|
67
|
+
### Getting an Etsy API Key
|
|
68
|
+
|
|
69
|
+
1. Visit the [Etsy Developer Portal](https://www.etsy.com/developers)
|
|
70
|
+
2. Create a new app or use an existing one
|
|
71
|
+
3. Generate an API key (also called "Keystring")
|
|
72
|
+
4. For shop management features, set up OAuth 2.0 to get an access token
|
|
73
|
+
5. Set up your environment variables (see below)
|
|
74
|
+
|
|
75
|
+
### OAuth Access Token (for Shop Management)
|
|
76
|
+
|
|
77
|
+
To create, update, or delete listings and manage your shop, you need an OAuth access token:
|
|
78
|
+
|
|
79
|
+
1. In the Etsy Developer Portal, configure OAuth redirect URLs
|
|
80
|
+
2. Follow the [Etsy OAuth 2.0 flow](https://developers.etsy.com/documentation/essentials/authentication/)
|
|
81
|
+
3. Exchange the authorization code for an access token
|
|
82
|
+
4. Add the access token to your environment variables
|
|
83
|
+
|
|
84
|
+
**📖 Detailed Guide**: See [OAUTH_SETUP.md](./OAUTH_SETUP.md) for complete step-by-step instructions with code examples.
|
|
85
|
+
|
|
86
|
+
**Note**: Read-only operations (searching, viewing listings) only require the API key.
|
|
87
|
+
|
|
88
|
+
### Environment Variables (All Optional)
|
|
89
|
+
|
|
90
|
+
The server works out-of-the-box without any configuration. For production use with your own shop, you can set the following environment variables:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
ETSY_API_KEY=your_etsy_api_key_here # Optional: Defaults to demo mode
|
|
94
|
+
ETSY_SHOP_ID=your_shop_id # Optional: For faster shop operations
|
|
95
|
+
ETSY_ACCESS_TOKEN=your_oauth_access_token # Optional: Required only for write operations
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Note**:
|
|
99
|
+
- Without an API key, the server runs in demo mode for documentation/testing purposes
|
|
100
|
+
- Read-only operations (searching, viewing listings) require an API key
|
|
101
|
+
- Write operations (creating/updating listings) require both API key and OAuth access token
|
|
102
|
+
|
|
103
|
+
## Usage with Claude Desktop
|
|
104
|
+
|
|
105
|
+
### Option 1: Smithery Hosted (Recommended)
|
|
106
|
+
|
|
107
|
+
After deploying to Smithery, use the hosted URL:
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"mcpServers": {
|
|
112
|
+
"etsy": {
|
|
113
|
+
"url": "https://server.smithery.ai/your-username/etsy-mcp-server/mcp",
|
|
114
|
+
"config": {
|
|
115
|
+
"apiKey": "your_etsy_api_key",
|
|
116
|
+
"shopId": "your_shop_id",
|
|
117
|
+
"accessToken": "your_oauth_token"
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Option 2: Local Execution
|
|
125
|
+
|
|
126
|
+
Add this server to your Claude Desktop configuration:
|
|
127
|
+
|
|
128
|
+
### Windows
|
|
129
|
+
Edit `%APPDATA%\Claude\claude_desktop_config.json`:
|
|
130
|
+
|
|
131
|
+
```json
|
|
132
|
+
{
|
|
133
|
+
"mcpServers": {
|
|
134
|
+
"etsy": {
|
|
135
|
+
"command": "node",
|
|
136
|
+
"args": ["C:\\Users\\Owner\\etsy_mcp\\build\\index.js"],
|
|
137
|
+
"env": {
|
|
138
|
+
"ETSY_API_KEY": "your_etsy_api_key_here",
|
|
139
|
+
"ETSY_ACCESS_TOKEN": "your_oauth_token_here"
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### macOS/Linux
|
|
147
|
+
Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
148
|
+
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"mcpServers": {
|
|
152
|
+
"etsy": {
|
|
153
|
+
"command": "node",
|
|
154
|
+
"args": ["/path/to/etsy_mcp/build/index.js"],
|
|
155
|
+
"env": {
|
|
156
|
+
"ETSY_API_KEY": "your_etsy_api_key_here",
|
|
157
|
+
"ETSY_ACCESS_TOKEN": "your_oauth_token_here"
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
## Available Tools
|
|
165
|
+
|
|
166
|
+
### Read-Only Tools (API Key Only)
|
|
167
|
+
|
|
168
|
+
### 1. search_listings
|
|
169
|
+
Search for active Etsy listings with keyword filtering.
|
|
170
|
+
|
|
171
|
+
**Parameters:**
|
|
172
|
+
- `keywords` (required): Search keywords
|
|
173
|
+
- `limit`: Maximum results (default: 25, max: 100)
|
|
174
|
+
- `offset`: Results to skip for pagination
|
|
175
|
+
- `min_price`: Minimum price filter
|
|
176
|
+
- `max_price`: Maximum price filter
|
|
177
|
+
- `sort_on`: Field to sort by (created, price, updated, score)
|
|
178
|
+
- `sort_order`: Sort direction (asc, desc)
|
|
179
|
+
|
|
180
|
+
**Example:**
|
|
181
|
+
```json
|
|
182
|
+
{
|
|
183
|
+
"keywords": "handmade jewelry",
|
|
184
|
+
"limit": 10,
|
|
185
|
+
"sort_on": "price",
|
|
186
|
+
"sort_order": "asc"
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### 2. get_listing
|
|
191
|
+
Get detailed information about a specific listing.
|
|
192
|
+
|
|
193
|
+
**Parameters:**
|
|
194
|
+
- `listing_id` (required): Numeric listing ID
|
|
195
|
+
- `includes`: Array of additional data (Shop, Images, User, Translations, Inventory)
|
|
196
|
+
|
|
197
|
+
**Example:**
|
|
198
|
+
```json
|
|
199
|
+
{
|
|
200
|
+
"listing_id": 1234567890,
|
|
201
|
+
"includes": ["Images", "Shop"]
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### 3. get_shop
|
|
206
|
+
Get information about an Etsy shop.
|
|
207
|
+
|
|
208
|
+
**Parameters:**
|
|
209
|
+
- `shop_id` (required): Numeric shop ID
|
|
210
|
+
|
|
211
|
+
### 4. get_shop_listings
|
|
212
|
+
Get all listings from a specific shop.
|
|
213
|
+
|
|
214
|
+
**Parameters:**
|
|
215
|
+
- `shop_id` (required): Numeric shop ID
|
|
216
|
+
- `limit`: Maximum results (default: 25)
|
|
217
|
+
- `offset`: Results to skip
|
|
218
|
+
- `state`: Filter by state (active, inactive, sold_out, draft, expired)
|
|
219
|
+
|
|
220
|
+
### 5. search_shops
|
|
221
|
+
Search for Etsy shops by name.
|
|
222
|
+
|
|
223
|
+
**Parameters:**
|
|
224
|
+
- `shop_name` (required): Shop name to search
|
|
225
|
+
- `limit`: Maximum results
|
|
226
|
+
- `offset`: Results to skip
|
|
227
|
+
|
|
228
|
+
### 6. get_listing_inventory
|
|
229
|
+
Get inventory information including quantities and variations.
|
|
230
|
+
|
|
231
|
+
**Parameters:**
|
|
232
|
+
- `listing_id` (required): Numeric listing ID
|
|
233
|
+
|
|
234
|
+
### 7. get_listing_images
|
|
235
|
+
Get all images for a listing.
|
|
236
|
+
|
|
237
|
+
**Parameters:**
|
|
238
|
+
- `listing_id` (required): Numeric listing ID
|
|
239
|
+
|
|
240
|
+
### 8. get_shop_sections
|
|
241
|
+
Get shop sections/categories.
|
|
242
|
+
|
|
243
|
+
**Parameters:**
|
|
244
|
+
- `shop_id` (required): Numeric shop ID
|
|
245
|
+
|
|
246
|
+
### 9. get_trending_listings
|
|
247
|
+
Get currently trending listings on Etsy.
|
|
248
|
+
|
|
249
|
+
**Parameters:**
|
|
250
|
+
- `limit`: Maximum results (default: 25)
|
|
251
|
+
- `offset`: Results to skip
|
|
252
|
+
|
|
253
|
+
### 10. find_shops
|
|
254
|
+
Find shops by location or other criteria.
|
|
255
|
+
|
|
256
|
+
**Parameters:**
|
|
257
|
+
- `location`: Location to search
|
|
258
|
+
- `limit`: Maximum results
|
|
259
|
+
- `offset`: Results to skip
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
### Shop Management Tools (Require OAuth Access Token)
|
|
264
|
+
|
|
265
|
+
### 11. create_listing
|
|
266
|
+
Create a new product listing in your shop.
|
|
267
|
+
|
|
268
|
+
**Parameters:**
|
|
269
|
+
- `shop_id` (required): Your shop ID
|
|
270
|
+
- `quantity` (required): Available quantity
|
|
271
|
+
- `title` (required): Listing title (max 140 characters)
|
|
272
|
+
- `description` (required): Item description
|
|
273
|
+
- `price` (required): Price in shop currency
|
|
274
|
+
- `who_made` (required): i_did, someone_else, or collective
|
|
275
|
+
- `when_made` (required): e.g., made_to_order, 2020_2023
|
|
276
|
+
- `taxonomy_id` (required): Category taxonomy ID
|
|
277
|
+
- `shipping_profile_id`: Shipping profile ID (optional)
|
|
278
|
+
- `shop_section_id`: Shop section ID (optional)
|
|
279
|
+
- `tags`: Array of tags, max 13 (optional)
|
|
280
|
+
|
|
281
|
+
**Example:**
|
|
282
|
+
```json
|
|
283
|
+
{
|
|
284
|
+
"shop_id": 12345678,
|
|
285
|
+
"quantity": 10,
|
|
286
|
+
"title": "Handmade Ceramic Mug",
|
|
287
|
+
"description": "Beautiful handcrafted ceramic mug...",
|
|
288
|
+
"price": 25.99,
|
|
289
|
+
"who_made": "i_did",
|
|
290
|
+
"when_made": "made_to_order",
|
|
291
|
+
"taxonomy_id": 1234,
|
|
292
|
+
"tags": ["ceramic", "mug", "handmade", "pottery"]
|
|
293
|
+
}
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
### 12. update_listing
|
|
297
|
+
Update an existing listing's details.
|
|
298
|
+
|
|
299
|
+
**Parameters:**
|
|
300
|
+
- `shop_id` (required): Your shop ID
|
|
301
|
+
- `listing_id` (required): Listing ID to update
|
|
302
|
+
- `title`: New title
|
|
303
|
+
- `description`: New description
|
|
304
|
+
- `price`: New price
|
|
305
|
+
- `quantity`: New quantity
|
|
306
|
+
- `tags`: New tags array
|
|
307
|
+
- `shop_section_id`: Shop section ID
|
|
308
|
+
|
|
309
|
+
**Example:**
|
|
310
|
+
```json
|
|
311
|
+
{
|
|
312
|
+
"shop_id": 12345678,
|
|
313
|
+
"listing_id": 987654321,
|
|
314
|
+
"price": 29.99,
|
|
315
|
+
"quantity": 15
|
|
316
|
+
}
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### 13. delete_listing
|
|
320
|
+
Remove a listing from your shop.
|
|
321
|
+
|
|
322
|
+
**Parameters:**
|
|
323
|
+
- `listing_id` (required): Listing ID to delete
|
|
324
|
+
|
|
325
|
+
### 14. update_listing_inventory
|
|
326
|
+
Update inventory details including variations, SKUs, and quantities.
|
|
327
|
+
|
|
328
|
+
**Parameters:**
|
|
329
|
+
- `listing_id` (required): Listing ID
|
|
330
|
+
- `products` (required): Array of product variations
|
|
331
|
+
- `price_on_property`: Property IDs affecting price
|
|
332
|
+
- `quantity_on_property`: Property IDs affecting quantity
|
|
333
|
+
- `sku_on_property`: Property IDs affecting SKU
|
|
334
|
+
|
|
335
|
+
### 15. upload_listing_image
|
|
336
|
+
Add an image to a listing.
|
|
337
|
+
|
|
338
|
+
**Parameters:**
|
|
339
|
+
- `shop_id` (required): Your shop ID
|
|
340
|
+
- `listing_id` (required): Listing ID
|
|
341
|
+
- `image_url` (required): URL of the image
|
|
342
|
+
- `rank`: Display order (1 = primary)
|
|
343
|
+
- `alt_text`: Accessibility text
|
|
344
|
+
|
|
345
|
+
### 16. create_shop_section
|
|
346
|
+
Create a new section/category in your shop.
|
|
347
|
+
|
|
348
|
+
**Parameters:**
|
|
349
|
+
- `shop_id` (required): Your shop ID
|
|
350
|
+
- `title` (required): Section title
|
|
351
|
+
|
|
352
|
+
**Example:**
|
|
353
|
+
```json
|
|
354
|
+
{
|
|
355
|
+
"shop_id": 12345678,
|
|
356
|
+
"title": "Holiday Collection"
|
|
357
|
+
}
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### 17. update_shop_section
|
|
361
|
+
Update a shop section name.
|
|
362
|
+
|
|
363
|
+
**Parameters:**
|
|
364
|
+
- `shop_id` (required): Your shop ID
|
|
365
|
+
- `shop_section_id` (required): Section ID
|
|
366
|
+
- `title` (required): New title
|
|
367
|
+
|
|
368
|
+
### 18. delete_shop_section
|
|
369
|
+
Remove a shop section.
|
|
370
|
+
|
|
371
|
+
**Parameters:**
|
|
372
|
+
- `shop_id` (required): Your shop ID
|
|
373
|
+
- `shop_section_id` (required): Section ID to delete
|
|
374
|
+
|
|
375
|
+
### 19. update_shop
|
|
376
|
+
Update shop information and settings.
|
|
377
|
+
|
|
378
|
+
**Parameters:**
|
|
379
|
+
- `shop_id` (required): Your shop ID
|
|
380
|
+
- `title`: Shop title
|
|
381
|
+
- `announcement`: Shop announcement message
|
|
382
|
+
- `sale_message`: Message to buyers at checkout
|
|
383
|
+
- `policy_welcome`: Shop policies welcome message
|
|
384
|
+
|
|
385
|
+
**Example:**
|
|
386
|
+
```json
|
|
387
|
+
{
|
|
388
|
+
"shop_id": 12345678,
|
|
389
|
+
"announcement": "Holiday sale - 20% off all items!",
|
|
390
|
+
"sale_message": "Thank you for your purchase!"
|
|
391
|
+
}
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
---
|
|
395
|
+
|
|
396
|
+
## Prompts
|
|
397
|
+
|
|
398
|
+
The server provides comprehensive prompt templates to help you with common Etsy seller tasks:
|
|
399
|
+
|
|
400
|
+
### 1. create-listing-guide
|
|
401
|
+
Complete guide for creating an optimized Etsy listing with best practices.
|
|
402
|
+
|
|
403
|
+
**Arguments:**
|
|
404
|
+
- `product_type` (required): Type of product (e.g., handmade, vintage, craft supply)
|
|
405
|
+
|
|
406
|
+
**Provides guidance on:**
|
|
407
|
+
- Title creation (140 char max, SEO-optimized)
|
|
408
|
+
- Description structure and formatting
|
|
409
|
+
- Tags strategy (13 tags with keyword research)
|
|
410
|
+
- Pricing calculations (materials, labor, fees)
|
|
411
|
+
- Photography checklist
|
|
412
|
+
|
|
413
|
+
### 2. optimize-listing
|
|
414
|
+
Generate SEO-optimized title, tags, and description for existing listings.
|
|
415
|
+
|
|
416
|
+
**Arguments:**
|
|
417
|
+
- `listing_id` (required): The listing to optimize
|
|
418
|
+
- `focus_keywords` (optional): Keywords to prioritize
|
|
419
|
+
|
|
420
|
+
**Generates:**
|
|
421
|
+
- SEO-optimized title variations
|
|
422
|
+
- Enhanced description with keyword integration
|
|
423
|
+
- 13 strategic tags based on search trends
|
|
424
|
+
- Competitive analysis framework
|
|
425
|
+
- Action items for improvement
|
|
426
|
+
|
|
427
|
+
### 3. shop-analytics-review
|
|
428
|
+
Create comprehensive shop performance analysis template.
|
|
429
|
+
|
|
430
|
+
**Arguments:**
|
|
431
|
+
- `shop_id` (required): Shop to analyze
|
|
432
|
+
- `time_period` (optional): Analysis timeframe (e.g., last_month, last_quarter)
|
|
433
|
+
|
|
434
|
+
**Analyzes:**
|
|
435
|
+
- Traffic metrics and conversion rates
|
|
436
|
+
- Sales performance and trends
|
|
437
|
+
- SEO effectiveness
|
|
438
|
+
- Customer insights and behavior
|
|
439
|
+
- Actionable recommendations
|
|
440
|
+
|
|
441
|
+
### 4. product-photography-tips
|
|
442
|
+
Tailored product photography guidance for Etsy.
|
|
443
|
+
|
|
444
|
+
**Arguments:**
|
|
445
|
+
- `product_category` (required): Category (jewelry, home decor, clothing, etc.)
|
|
446
|
+
|
|
447
|
+
**Covers:**
|
|
448
|
+
- Equipment recommendations
|
|
449
|
+
- Shot list specific to category
|
|
450
|
+
- Lighting setup (natural and artificial)
|
|
451
|
+
- Styling and composition tips
|
|
452
|
+
- Post-processing techniques
|
|
453
|
+
- Etsy-specific best practices
|
|
454
|
+
|
|
455
|
+
### 5. pricing-strategy
|
|
456
|
+
Calculate competitive pricing with full cost analysis.
|
|
457
|
+
|
|
458
|
+
**Arguments:**
|
|
459
|
+
- `material_cost` (required): Total material costs
|
|
460
|
+
- `time_hours` (required): Hours to create
|
|
461
|
+
- `desired_hourly_rate` (optional): Preferred hourly rate (default: $25)
|
|
462
|
+
|
|
463
|
+
**Calculates:**
|
|
464
|
+
- Complete cost breakdown (materials, labor, overhead)
|
|
465
|
+
- Etsy fees (transaction, processing, listing)
|
|
466
|
+
- Break-even price
|
|
467
|
+
- Suggested retail price with profit margin
|
|
468
|
+
- Premium positioning options
|
|
469
|
+
- Profitability analysis
|
|
470
|
+
|
|
471
|
+
**Example Usage:**
|
|
472
|
+
```
|
|
473
|
+
Use prompt "pricing-strategy" with:
|
|
474
|
+
- material_cost: 15.50
|
|
475
|
+
- time_hours: 3
|
|
476
|
+
- desired_hourly_rate: 30
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
---
|
|
480
|
+
|
|
481
|
+
## Resources
|
|
482
|
+
|
|
483
|
+
The server provides comprehensive documentation and guides as resources:
|
|
484
|
+
|
|
485
|
+
### 1. etsy-api-docs
|
|
486
|
+
**URI:** `etsy://docs/api`
|
|
487
|
+
|
|
488
|
+
Complete Etsy Open API v3 reference documentation including:
|
|
489
|
+
- Authentication methods (API key, OAuth 2.0)
|
|
490
|
+
- Rate limits and best practices
|
|
491
|
+
- All endpoint documentation
|
|
492
|
+
- Request/response formats
|
|
493
|
+
- Error codes and handling
|
|
494
|
+
|
|
495
|
+
### 2. etsy-seller-handbook
|
|
496
|
+
**URI:** `etsy://docs/seller-handbook`
|
|
497
|
+
|
|
498
|
+
Comprehensive seller guide covering:
|
|
499
|
+
- Shop setup and configuration
|
|
500
|
+
- Listing optimization strategies
|
|
501
|
+
- Product photography best practices
|
|
502
|
+
- SEO strategies for Etsy search
|
|
503
|
+
- Customer service excellence
|
|
504
|
+
- Marketing and growth tactics
|
|
505
|
+
- Seasonal planning guide
|
|
506
|
+
|
|
507
|
+
### 3. etsy-seo-guide
|
|
508
|
+
**URI:** `etsy://docs/seo-guide`
|
|
509
|
+
|
|
510
|
+
Complete SEO optimization guide:
|
|
511
|
+
- Understanding Etsy search algorithm
|
|
512
|
+
- Keyword research methods and tools
|
|
513
|
+
- Title optimization formulas
|
|
514
|
+
- Tag strategy (maximizing all 13 tags)
|
|
515
|
+
- Description SEO techniques
|
|
516
|
+
- Category and attribute selection
|
|
517
|
+
- Performance tracking and analytics
|
|
518
|
+
- A/B testing strategies
|
|
519
|
+
- Common SEO mistakes to avoid
|
|
520
|
+
- Quick wins checklist
|
|
521
|
+
|
|
522
|
+
### 4. etsy-shipping-guide
|
|
523
|
+
**URI:** `etsy://docs/shipping`
|
|
524
|
+
|
|
525
|
+
Everything about shipping on Etsy:
|
|
526
|
+
- Setting up shipping profiles
|
|
527
|
+
- Domestic and international shipping
|
|
528
|
+
- Free shipping strategies
|
|
529
|
+
- Carrier comparisons (USPS, UPS, FedEx)
|
|
530
|
+
- Packaging best practices and branding
|
|
531
|
+
- Tracking and insurance
|
|
532
|
+
- Handling shipping issues
|
|
533
|
+
- International customs requirements
|
|
534
|
+
- Seasonal shipping preparation
|
|
535
|
+
|
|
536
|
+
### 5. etsy-photography-tips
|
|
537
|
+
**URI:** `etsy://docs/photography`
|
|
538
|
+
|
|
539
|
+
Professional product photography guide:
|
|
540
|
+
- Equipment essentials (cameras, lighting, support)
|
|
541
|
+
- Technical requirements for Etsy
|
|
542
|
+
- Essential shot list (hero, detail, lifestyle, scale)
|
|
543
|
+
- Lighting techniques (natural and artificial)
|
|
544
|
+
- Styling and composition rules
|
|
545
|
+
- Camera settings (smartphone and DSLR)
|
|
546
|
+
- Post-processing workflow
|
|
547
|
+
- Category-specific tips (jewelry, clothing, home decor, art)
|
|
548
|
+
- Mobile photography best practices
|
|
549
|
+
- Video content tips
|
|
550
|
+
|
|
551
|
+
### 6. etsy-fees-calculator
|
|
552
|
+
**URI:** `etsy://tools/fees-calculator`
|
|
553
|
+
|
|
554
|
+
Interactive fees calculator with:
|
|
555
|
+
- All Etsy fee structures (listing, transaction, processing, offsite ads)
|
|
556
|
+
- Example calculations
|
|
557
|
+
- Pricing formulas for profitable pricing
|
|
558
|
+
- Tips for managing fee costs
|
|
559
|
+
- JSON format for programmatic access
|
|
560
|
+
|
|
561
|
+
**Example Usage:**
|
|
562
|
+
```
|
|
563
|
+
Read resource "etsy://docs/seo-guide" for complete SEO strategies
|
|
564
|
+
Read resource "etsy://tools/fees-calculator" for pricing calculations
|
|
565
|
+
```
|
|
566
|
+
|
|
567
|
+
---
|
|
568
|
+
|
|
569
|
+
## Development
|
|
570
|
+
|
|
571
|
+
### Local Testing with Smithery CLI
|
|
572
|
+
```bash
|
|
573
|
+
# Interactive playground with all tools
|
|
574
|
+
npm run dev
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
### Manual TypeScript Compilation
|
|
578
|
+
```bash
|
|
579
|
+
npm run compile
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
### Run Directly (stdio mode)
|
|
583
|
+
```bash
|
|
584
|
+
npm start
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
## API Rate Limiting
|
|
588
|
+
|
|
589
|
+
The Etsy API has rate limits. Please refer to [Etsy's API documentation](https://developers.etsy.com/documentation/reference) for current rate limit information.
|
|
590
|
+
|
|
591
|
+
## Architecture
|
|
592
|
+
|
|
593
|
+
This server uses:
|
|
594
|
+
- **@modelcontextprotocol/sdk**: Latest MCP SDK (v1.0.4)
|
|
595
|
+
- **TypeScript**: For type safety
|
|
596
|
+
- **Axios**: For HTTP requests to Etsy API
|
|
597
|
+
- **Node.js**: ES2022 modules
|
|
598
|
+
|
|
599
|
+
## Project Structure
|
|
600
|
+
|
|
601
|
+
```
|
|
602
|
+
etsy_mcp/
|
|
603
|
+
├── src/
|
|
604
|
+
│ └── index.ts # Main server implementation
|
|
605
|
+
├── build/ # Compiled JavaScript output
|
|
606
|
+
├── .github/
|
|
607
|
+
│ └── copilot-instructions.md
|
|
608
|
+
├── smithery.yaml # Smithery deployment config
|
|
609
|
+
├── package.json
|
|
610
|
+
├── tsconfig.json
|
|
611
|
+
├── README.md # Main documentation
|
|
612
|
+
├── SMITHERY_DEPLOYMENT.md # Smithery deployment guide
|
|
613
|
+
├── OAUTH_SETUP.md # OAuth setup guide
|
|
614
|
+
├── QUICK_REFERENCE.md # Quick reference guide
|
|
615
|
+
├── .env.example # Environment template
|
|
616
|
+
└── .gitignore
|
|
617
|
+
```
|
|
618
|
+
|
|
619
|
+
## Error Handling
|
|
620
|
+
|
|
621
|
+
The server includes comprehensive error handling:
|
|
622
|
+
- API errors return detailed error messages with status codes
|
|
623
|
+
- Missing API key throws a descriptive error on startup
|
|
624
|
+
- All Axios errors are caught and formatted for easy debugging
|
|
625
|
+
|
|
626
|
+
## Contributing
|
|
627
|
+
|
|
628
|
+
Contributions are welcome! Please ensure:
|
|
629
|
+
1. TypeScript compiles without errors
|
|
630
|
+
2. Follow the existing code style
|
|
631
|
+
3. Add appropriate error handling
|
|
632
|
+
4. Update documentation for new features
|
|
633
|
+
|
|
634
|
+
## License
|
|
635
|
+
|
|
636
|
+
MIT
|
|
637
|
+
|
|
638
|
+
## Resources
|
|
639
|
+
|
|
640
|
+
- � [Smithery Deployment Guide](./SMITHERY_DEPLOYMENT.md) - Deploy to hosted infrastructure
|
|
641
|
+
- �📖 [OAuth Setup Guide](./OAUTH_SETUP.md) - Complete OAuth 2.0 setup instructions
|
|
642
|
+
- 📋 [Quick Reference](./QUICK_REFERENCE.md) - Tool categories and common examples
|
|
643
|
+
- [Etsy API Documentation](https://developers.etsy.com/documentation)
|
|
644
|
+
- [Model Context Protocol](https://modelcontextprotocol.io)
|
|
645
|
+
- [MCP SDK Documentation](https://github.com/modelcontextprotocol/typescript-sdk)
|
|
646
|
+
- [Smithery Platform](https://smithery.ai)
|
|
647
|
+
|
|
648
|
+
## Troubleshooting
|
|
649
|
+
|
|
650
|
+
### "ETSY_API_KEY environment variable is required"
|
|
651
|
+
Make sure you've set the `ETSY_API_KEY` in your MCP configuration or environment.
|
|
652
|
+
|
|
653
|
+
### API Authentication Errors
|
|
654
|
+
Verify your API key is valid and has the necessary permissions in the Etsy Developer Portal.
|
|
655
|
+
|
|
656
|
+
### Connection Issues
|
|
657
|
+
Ensure your internet connection is working and you can reach `openapi.etsy.com`.
|
|
658
|
+
|
|
659
|
+
## Version History
|
|
660
|
+
|
|
661
|
+
- **1.2.0**: Quality improvements (Smithery score: 69 → 100)
|
|
662
|
+
- ⚙️ **Optional Configuration**: All config fields now optional with sensible defaults (+15pts)
|
|
663
|
+
- 🏷️ **Tool Annotations**: Added readOnlyHint, destructiveHint, and idempotentHint to all 19 tools (+9pts)
|
|
664
|
+
- 🎨 **Server Icon**: Added Etsy-themed SVG icon for better visual identity (+7pts)
|
|
665
|
+
- Zero-config deployment support - server runs without any credentials for demo/testing
|
|
666
|
+
- Environment variable fallbacks for all configuration options
|
|
667
|
+
- **1.1.0**: Added prompts and resources
|
|
668
|
+
- 5 comprehensive prompts for seller guidance
|
|
669
|
+
- 6 resource guides (SEO, photography, shipping, fees calculator)
|
|
670
|
+
- Enhanced AI assistant capabilities
|
|
671
|
+
- **1.0.0**: Initial release with 19 Etsy API tools
|
|
672
|
+
- 10 read-only tools for searching and viewing
|
|
673
|
+
- 9 shop management tools for creating and updating
|
|
674
|
+
- Full OAuth support for authenticated operations
|
|
675
|
+
- Create, update, and delete listings
|
|
676
|
+
- Manage shop sections and inventory
|
|
677
|
+
- Upload images and update shop info
|