mcpField
G
groupon-mcp

groupon-mcp

Local
github.com/chrischallBusiness & Marketing1Updated 2d ago

About groupon-mcp

groupon-mcp is an MCP server for Claude to search Groupon deals, inspect details, and manage a signed-in account’s cart. Cart changes require confirmation; it adds items and returns a checkout URL but does not make payments.

Key features

  1. 01Search deals in a city
  2. 02View deal details and option prices
  3. 03Browse categories and check service health
  4. 04View a signed-in account’s cart
  5. 05Confirm before adding items or clearing the cart

Use cases

  1. 01Find local, goods, or travel deals
  2. 02Review an offer’s options and prices before adding it
  3. 03Inspect the cart and continue to checkout independently

MCP support

It exposes Groupon deal lookup and cart tools to MCP clients. Deal reads need no sign-in; cart operations use a signed-in Groupon session and require confirmation before changes.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"chrischall-groupon": {
"command": "npx",
"args": [
"-y",
"groupon-mcp"
],
"env": {
"GROUPON_SESSION_COOKIE": "<GROUPON_SESSION_COOKIE>",
"GROUPON_DISABLE_FETCHPROXY": "<GROUPON_DISABLE_FETCHPROXY>",
"GROUPON_GRAPHQL_URL": "<GROUPON_GRAPHQL_URL>",
"GROUPON_CACHE_TTL": "<GROUPON_CACHE_TTL>",
"FETCHPROXY_WS_PORT": "<FETCHPROXY_WS_PORT>",
"FETCHPROXY_WS_HOST": "<FETCHPROXY_WS_HOST>",
"FETCHPROXY_IDENTITY_DIR": "<FETCHPROXY_IDENTITY_DIR>"
}
}
}
}
Run commandnpx -y groupon-mcp
Environment variables to set
GROUPON_SESSION_COOKIESecretOptional, and only for the cart tools. Leave unset to have the ContextMint Bridge browser extension pick up your signed-in groupon.com session. Otherwise paste the full Cookie request header from a signed-in www.groupon.com /mobilenextapi/graphql request (DevTools → Network). It authorizes changes to your Groupon cart, so treat it like a password.
GROUPON_DISABLE_FETCHPROXYSet to 1/true to disable the fetchproxy browser-bridge fallback (then the cart path relies solely on GROUPON_SESSION_COOKIE).
GROUPON_GRAPHQL_URLOverride the GraphQL endpoint (defaults to https://www.groupon.com/mobilenextapi/graphql). The cart tools send your session cookie, so they refuse any override that is not an https://*.groupon.com URL.
GROUPON_CACHE_TTLResponse-cache TTL for reads in seconds (0 = off; default 60).
FETCHPROXY_WS_PORTLocalhost port of the fetchproxy concentrator the ContextMint Bridge extension connects to (default 37149). Every MCP on one machine shares it, so move it for all of them or not at all.
FETCHPROXY_WS_HOSTBind interface for the fetchproxy concentrator, a literal IP only (default 127.0.0.1). Keep on loopback; it exists for hosted deployments that run each MCP in its own network namespace.
FETCHPROXY_IDENTITY_DIRAbsolute path where the fetchproxy long-term identity keypair is stored (default ~/.fetchproxy/identity/).

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmgroupon-mcp1.1.10

Tools

7

Saved tool list · updated 2d ago

This tool takes no parameters.

Details

From the project README

groupon-mcp

CI npm license

MCP server for Groupon — search and browse local, goods, and travel deals from Claude via natural language, and add deals to your signed-in Groupon cart once you confirm.

This project was developed and is maintained by AI. Use at your own discretion.

Tools

ToolWhat it doesNeeds sign-in
groupon_search_dealsSearch or browse a city's dealsno
groupon_get_dealOne deal's detail, including each option's id and priceno
groupon_list_categoriesGroupon's category taxonomyno
groupon_healthcheckOne live request to Groupon, reporting what failed if anything didno
groupon_view_cartThe items in your Groupon cartyes
groupon_purchaseAdd a deal option to your cart (after you confirm) and return the checkout URLyes
groupon_clear_cartRemove every item from your cart (after you confirm)yes

The deal reads use Groupon's public consumer endpoint with no API key or account. The cart tools act on your signed-in Groupon account through its session cookie (see below). groupon_purchase cannot place an order: Groupon's checkout is native Apple/Google Pay, card or PayPal, so you complete payment yourself at the checkout URL.

Setup

Add the server to your .mcp.json:

{
  "mcpServers": {
    "groupon": {
      "command": "npx",
      "args": ["-y", "groupon-mcp"]
    }
  }
}
Cart sign-in (optional)

Reading deals needs no account. The cart tools (groupon_view_cart, groupon_purchase, groupon_clear_cart) use your signed-in groupon.com session, which the server picks up from your browser through the ContextMint Bridge extension:

  1. Install ContextMint Bridge from its releases page. Chrome: download the Chrome zip, unzip it, and load it unpacked at chrome://extensions (Developer mode). Safari isn't available yet (it will ship inside the ContextMint app, which has no public download), so use Chrome for now.

    ContextMint Bridge is the fetchproxy browser extension under its new name, from the same maintainer; fetchproxy's own README (https://github.com/chrischall/fetchproxy#extension) points to it. Its source is public at https://github.com/nullnet-app/contextmint-bridge: build it yourself, or check a release zip against the .sha256 file published beside it (shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256).

  2. Sign in at groupon.com in that browser. The first cart call lifts the session cookie; approve the request in the extension when asked.

For local dev without the extension, set GROUPON_SESSION_COOKIE (see .env.example); set GROUPON_DISABLE_FETCHPROXY=1 to turn the browser path off. The cookie authorizes changes to your cart, so treat it like a password. The cart tools only send it to an https://*.groupon.com endpoint, and refuse a GROUPON_GRAPHQL_URL override pointing anywhere else.

Environment

All optional; they mirror the .mcpb manifest's settings (the MCP_CONFIRM_* family is under Confirmations).

variabledefault
GROUPON_SESSION_COOKIEunsetFull Cookie header from a signed-in www.groupon.com request, for the cart tools only. Leave unset to have the bridge pick up your session. Treat it like a password.
GROUPON_DISABLE_FETCHPROXYunset1 turns the browser-bridge path off; the cart tools then rely on GROUPON_SESSION_COOKIE.
GROUPON_GRAPHQL_URLhttps://www.groupon.com/mobilenextapi/graphqlGraphQL endpoint override. The cart tools refuse any override that is not an https://*.groupon.com URL.
GROUPON_CACHE_TTL60Response-cache TTL for reads, in seconds (0 = off). Raise it if you hit rate limits.
FETCHPROXY_WS_PORT37149Concentrator port the ContextMint Bridge connects to. Every MCP on one machine shares it, so move it for all of them or none.
FETCHPROXY_WS_HOST127.0.0.1Bridge bind interface, a literal IP only. Keep on loopback; it exists for hosted deployments in their own network namespace.
FETCHPROXY_IDENTITY_DIR~/.fetchproxy/identity/Absolute path for the bridge's long-term identity keypair.

Confirmations

The cart writes (groupon_purchase, groupon_clear_cart) ask you to confirm before they change anything. A client that can show a confirmation prompt (Claude Code) shows one, unless the server sets MCP_CONFIRM_ELICITATION=off. Elsewhere, the first call changes nothing and returns a preview plus a confirmToken, and only a repeat call with that token proceeds. The token is tied to exactly what was previewed: if the deal's price, the chosen option or quantity, or the cart's contents change between the two calls, the write is refused and a fresh preview is returned. groupon_purchase's preview also shows how many of that option are already in your cart, since Groupon may set the line to the new quantity rather than add to it. It still only fills the cart; you complete payment yourself at the checkout URL. groupon_clear_cart removes only the cart's line items, and accepts the previewed optionIds back as expectedOptionIds so it refuses if the cart has changed; if a removal fails partway it says which items were and were not removed.

variabledefault
MCP_CONFIRM_MODEask-userWhat a write does on a client that cannot show a confirmation prompt (claude.ai, Claude Desktop). ask-user: two steps — the first call does nothing and returns a preview plus a token, and the model must get your approval in chat before calling again with it. auto: the same two steps, but the model may use the token after reviewing the preview itself. refuse: writes are refused on such clients. A client that can show prompts (Claude Code) always gets the real prompt, unless MCP_CONFIRM_ELICITATION=off. An unrecognised value is treated as refuse.
MCP_CONFIRM_ELICITATIONonoff never shows a confirmation prompt, so every client gets the MCP_CONFIRM_MODE behaviour. Set it for a client that says it can show prompts but never does (the write hangs — opencode 2.0.x). Any other value is treated as on, with a warning on stderr.
MCP_CONFIRM_TTL_SECONDS600How long a token stays valid.
MCP_CONFIRM_SECRETrandom per processSigning key; set it only if tokens must survive a server restart.

Development

npm install
npm run build   # tsc + esbuild bundle → dist/
npm test        # tsc typecheck + vitest

See CLAUDE.md for architecture, conventions, and gotchas.

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.