npm package: @striderlabs/mcp-poshmark
Description: MCP server for Poshmark fashion resale marketplace automation
Author: Strider Labs
Latest version: 1.0.0

# @striderlabs/mcp-poshmark

MCP server for automating Poshmark fashion resale marketplace using Playwright and Browserbase.

## Tools

| Tool | Description |
|------|-------------|
| `search_listings` | Search fashion items by brand, category, size, price |
| `get_listing_details` | Get full details of a specific listing |
| `get_my_closet` | List items in a user's closet |
| `create_listing` | Create a new listing with photos and description |
| `get_offers` | View offers received or sent |
| `accept_offer` | Accept an offer on a listing |

## Setup

### Environment Variables

```bash
# Required for authenticated actions (get_my_closet, create_listing, get_offers, accept_offer)
POSHMARK_EMAIL=your@email.com
POSHMARK_PASSWORD=yourpassword

# Optional: Browserbase CDP URL for cloud browser (falls back to local Playwright)
BROWSERBASE_CDP_URL=wss://connect.browserbase.com?apiKey=YOUR_KEY

# Optional: set to "false" to show browser window during local development
HEADLESS=true
```

### Installation

```bash
npm install -g @striderlabs/mcp-poshmark
```

### MCP Configuration

Add to your MCP client configuration (e.g., Claude Desktop `~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "poshmark": {
      "command": "mcp-poshmark",
      "env": {
        "POSHMARK_EMAIL": "your@email.com",
        "POSHMARK_PASSWORD": "yourpassword",
        "BROWSERBASE_CDP_URL": "wss://connect.browserbase.com?apiKey=YOUR_KEY"
      }
    }
  }
}
```

Or run directly:

```bash
POSHMARK_EMAIL=you@example.com POSHMARK_PASSWORD=secret npx @striderlabs/mcp-poshmark
```

## Tool Reference

### `search_listings`

Search Poshmark for fashion items.

```json
{
  "query": "vintage denim jacket",
  "brand": "Levi's",
  "category": "Women",
  "size": "M",
  "min_price": 20,
  "max_price": 100,
  "sort": "price_asc",
  "limit": 20
}
```

### `get_listing_details`

Get full details of a listing.

```json
{
  "listing_id": "abc123xyz"
}
```

Also accepts full URLs: `"listing_id": "https://poshmark.com/listing/..."`.

### `get_my_closet`

List items in a closet.

```json
{
  "username": "seller_handle",
  "status": "available",
  "limit": 50
}
```

Omit `username` to use the authenticated user's closet.

### `create_listing`

Create a new listing.

```json
{
  "title": "Vintage Levi's 501 Jeans",
  "description": "Classic straight-leg jeans in excellent condition. Light wash with authentic wear.",
  "category": "Women > Jeans",
  "brand": "Levi's",
  "size": "28",
  "condition": "EUC",
  "original_price": 89,
  "listing_price": 35,
  "color": "Blue",
  "image_paths": ["/path/to/photo1.jpg", "/path/to/photo2.jpg"]
}
```

Condition options: `NWT` (New with tags), `NWOT` (New without tags), `EUC` (Excellent used condition), `GUC` (Good used condition), `Fair`, `Poor`.

### `get_offers`

View offers.

```json
{
  "type": "received",
  "limit": 20
}
```

Type options: `received`, `sent`, `all`.

### `accept_offer`

Accept an offer.

```json
{
  "offer_id": "offer_abc123",
  "listing_id": "listing_xyz789"
}
```

## Browser Automation

This server uses Playwright for browser automation.

- **With Browserbase**: Connect via CDP using `BROWSERBASE_CDP_URL`. Ideal for production/cloud use.
- **Without Browserbase**: Falls back to local Chromium. Set `HEADLESS=false` to watch the browser.

## License

MIT