Skip to main content
Glama
README.md
# Etsy Ops MCP

A confirmation-gated MCP server for Etsy Open API v3 listing inspection and title/tag updates. Configuration is supplied at runtime; no shop names, IDs, access tokens, or personal data are included in this repository.

## Features

- List configured shops and active listings.
- Read listings and their tags.
- Validate Etsy's 13-tag and 20-character tag constraints locally.
- Update a title and/or tags only after an explicit confirmation and a live title check.

## Install

```bash
python -m venv .venv
.venv/bin/pip install -e .
```

On Windows, use `.venv\\Scripts\\pip install -e .`.

## Configuration

```text
ETSY_API_KEY=your-application-key
ETSY_ACCESS_TOKEN=oauth-access-token-for-writes
ETSY_SHOPS_JSON={"shop-a":{"shop_id":"123456"}}
```

For one shop, `ETSY_SHOP_ID` can be used instead of `ETSY_SHOPS_JSON`. Obtain and refresh OAuth credentials using Etsy's official developer flow; the server deliberately does not persist credentials.

Run with `python server.py`.

## Safety model

Every listing change requires `confirm_write=true`. Before changing a listing, the server re-reads it and requires its title to match `expected_title`, preventing an unintended overwrite. The server provides no delete or publish endpoint.

## Development

```bash
python -m unittest -v
```

## License

MIT. See [LICENSE](LICENSE).