{
  "markdown": "# @emile-wine/mcp-server\n\n> Émile is your French wine cellar app. This MCP server lets you query and manage your cellar from Claude Desktop, Cursor, or any [Model Context Protocol](https://modelcontextprotocol.io) client.\n\n[![npm](https://img.shields.io/npm/v/@emile-wine/mcp-server.svg)](https://www.npmjs.com/package/@emile-wine/mcp-server)\n\n## What it does\n\n10 tools to talk to your Émile cellar:\n\n| Tool | Description |\n|---|---|\n| `search_wines` | Search the catalog by name/producer/appellation |\n| `list_cellars` | List your cellars |\n| `list_bottles` | List bottles in a cellar |\n| `add_bottle` | Add 1 bottle |\n| `add_bottles_batch` | Add up to 100 bottles in one call |\n| `update_bottle` | Change status, notes, location, price, vintage, quantity |\n| `delete_bottle` | Remove a bottle (prefer `update_bottle status=drunk` for history) |\n| `recommend_bottles` | Get bottle recommendations for a meal or maturity |\n| `scan_label` | Identify a wine from a label photo (base64) |\n| `scan_labels_batch` | Up to 10 label photos in one call |\n\n## Quick start (Claude Desktop)\n\n### 1. Get an API key\n\nOpen the Émile iOS app → **Profile → Settings → API Keys** → tap **+ Generate**. Copy the `emile_live_...` value (shown only once).\n\n### 2. Edit your Claude Desktop config\n\n`~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):\n\n```json\n{\n  \"mcpServers\": {\n    \"emile\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@emile-wine/mcp-server\"],\n      \"env\": {\n        \"EMILE_API_KEY\": \"emile_live_xxxxxxxxxxxxxxxx\"\n      }\n    }\n  }\n}\n```\n\n### 3. Restart Claude Desktop\n\nYou should see the 🔌 indicator in the bottom of the input box, with `emile` listed.\n\n### 4. Try it\n\n> \"Show me my main cellar\"\n> \"Recommend a bottle for tonight's pasta with mushrooms\"\n> \"Add a 2018 Pomerol to Cave A\"\n\n## Configuration\n\n| Env var | Required | Default | Description |\n|---|---|---|---|\n| `EMILE_API_KEY` | yes | — | API key from the iOS app |\n| `EMILE_API_URL` | no | `https://api.emile.wine` | Override for local dev (`http://localhost:8000` allowed) |\n| `EMILE_LOG_LEVEL` | no | `info` | One of `debug`, `info`, `warn`, `error` |\n\n## Troubleshooting\n\n**\"Émile API key is invalid or revoked\"** — Generate a new key in the iOS app. Old keys are revoked when you delete them or when global key rotation happens (rare).\n\n**\"Cannot reach Émile API\"** — Check your internet connection. The default endpoint `https://api.emile.wine` should be reachable; you can verify with:\n\n```bash\ncurl https://api.emile.wine/health\n```\n\n**\"Rate limit exceeded\"** — The MCP server inherits the API's rate limits (varies by endpoint, typically 10-60 req/min). Wait the suggested retry seconds.\n\n**Need to debug a tool call** — set `EMILE_LOG_LEVEL=debug` in the config and check Claude Desktop's MCP logs at `~/Library/Logs/Claude/mcp*.log`.\n\n## Privacy\n\nThis MCP server is **stateless and doesn't persist anything**. Your API key is read from env at startup. All requests go directly to `https://api.emile.wine` (or your override). Photo data sent to `scan_label` is processed transient by the backend (not stored). See https://api.emile.wine/privacy for the full policy.\n\n## Other MCP clients\n\nThe same `npx -y @emile-wine/mcp-server` invocation works in any client supporting stdio MCP servers:\n\n- **Cursor** — `~/.cursor/mcp.json`\n- **Continue** — `~/.continue/config.json` `experimental.modelContextProtocolServer`\n- Custom clients — connect to stdout/stdin, speak [MCP](https://modelcontextprotocol.io)\n\n## License\n\nMIT — see LICENSE.",
  "bytes": 3530,
  "sha": "dfc268b7c4a6c7c6e38f0a8b0f2578b563e031896ac475ea67342b857a85cdbe",
  "repo_slug": "",
  "fonte": "npm",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_sebastiengal_emile_wine_fb6f2a25/readme"
}