untappd-mcp 0.0.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.
@@ -0,0 +1,29 @@
1
+ {
2
+ "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
3
+ "name": "untappd-mcp",
4
+ "owner": {
5
+ "name": "Chris Hall",
6
+ "email": "chris.c.hall@gmail.com"
7
+ },
8
+ "metadata": {
9
+ "description": "MCP server for Untappd — beers, breweries, venues, check-ins, wishlists, and your friend feed",
10
+ "version": "0.0.0"
11
+ },
12
+ "plugins": [
13
+ {
14
+ "name": "untappd-mcp",
15
+ "displayName": "Untappd",
16
+ "source": "./",
17
+ "description": "MCP server for Untappd — search beers/breweries/venues, read profiles/check-ins/wishlists, and post check-ins, toasts, and comments",
18
+ "version": "0.0.0",
19
+ "author": {
20
+ "name": "Chris Hall"
21
+ },
22
+ "homepage": "https://github.com/chrischall/untappd-mcp",
23
+ "repository": "https://github.com/chrischall/untappd-mcp",
24
+ "license": "MIT",
25
+ "keywords": ["untappd", "beer", "breweries", "checkins", "mcp"],
26
+ "category": "lifestyle"
27
+ }
28
+ ]
29
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "name": "untappd-mcp",
3
+ "displayName": "Untappd",
4
+ "version": "0.0.0",
5
+ "description": "MCP server for Untappd — search beers/breweries/venues, read check-ins and wishlists, and post check-ins, toasts, and comments",
6
+ "author": {
7
+ "name": "Chris Hall",
8
+ "email": "chris.c.hall@gmail.com"
9
+ },
10
+ "homepage": "https://github.com/chrischall/untappd-mcp",
11
+ "repository": "https://github.com/chrischall/untappd-mcp",
12
+ "license": "MIT",
13
+ "keywords": ["untappd", "beer", "breweries", "checkins", "mcp"],
14
+ "skills": "./SKILL.md",
15
+ "mcp": "./.mcp.json"
16
+ }
package/.mcp.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "mcpServers": {
3
+ "untappd": {
4
+ "command": "node",
5
+ "args": ["${CLAUDE_PLUGIN_ROOT}/dist/index.js"],
6
+ "env": {
7
+ "UNTAPPD_USERNAME": "${UNTAPPD_USERNAME}",
8
+ "UNTAPPD_PASSWORD": "${UNTAPPD_PASSWORD}",
9
+ "UNTAPPD_CLIENT_ID": "${UNTAPPD_CLIENT_ID}",
10
+ "UNTAPPD_CLIENT_SECRET": "${UNTAPPD_CLIENT_SECRET}"
11
+ }
12
+ }
13
+ }
14
+ }
package/README.md ADDED
@@ -0,0 +1,75 @@
1
+ # untappd-mcp
2
+
3
+ An MCP server for [Untappd](https://untappd.com). It talks to Untappd's mobile
4
+ (v4) API using your own account — search beers, breweries, and venues; read
5
+ profiles, check-ins, wishlists, distinct beers, badges, friends, and your friend
6
+ activity feed; and post check-ins, toasts, and comments.
7
+
8
+ > Developed and maintained by AI (Claude Code). Use at your own discretion. This
9
+ > is an unofficial client that uses Untappd's private mobile API; it is not
10
+ > affiliated with or endorsed by Untappd.
11
+
12
+ ## How it works
13
+
14
+ Untappd's iPad/iPhone app authenticates with a username/password **xauth** login
15
+ (`POST https://api.untappd.com/v4/xauth`) that returns an access token, then
16
+ calls the v4 API. This server reproduces that exactly:
17
+
18
+ - Reads carry the token as an `access_token` query param.
19
+ - Writes carry it as an `Authorization: Bearer` header (with the app's client
20
+ credentials in the query), matching the app's real requests.
21
+
22
+ The token is fetched on demand, cached in memory, and refreshed automatically if
23
+ it goes stale.
24
+
25
+ ## Configuration
26
+
27
+ | Variable | Required | Description |
28
+ | --- | --- | --- |
29
+ | `UNTAPPD_USERNAME` | yes | Your Untappd username or login email. |
30
+ | `UNTAPPD_PASSWORD` | yes | Your Untappd password (used only for the xauth login). |
31
+ | `UNTAPPD_CLIENT_ID` | yes | The Untappd mobile app client id (see below). |
32
+ | `UNTAPPD_CLIENT_SECRET` | yes | The Untappd mobile app client secret. |
33
+ | `UNTAPPD_DEVICE_ID` | no | Stable device UUID the token is keyed to (a default is provided). |
34
+ | `UNTAPPD_UTV` | no | API version param (default `4.0.0`). |
35
+ | `UNTAPPD_USER_AGENT` | no | Override the User-Agent (default mimics the app). |
36
+
37
+ Copy `.env.example` to `.env` and fill it in for local use.
38
+
39
+ ### Obtaining the client id / secret
40
+
41
+ Untappd does not publish these; they live in the mobile app. Capture them from
42
+ your own app's traffic with an HTTPS proxy:
43
+
44
+ 1. Install a proxy such as [mitmproxy](https://mitmproxy.org) and trust its CA
45
+ certificate on the device running the Untappd app.
46
+ 2. Point the device (or, on an Apple-silicon Mac running the iPad app, the Mac's
47
+ system HTTP/HTTPS proxy) at the proxy.
48
+ 3. Open Untappd and sign in. Find the `POST https://api.untappd.com/v4/xauth`
49
+ request — its **query string** contains `client_id` and `client_secret`.
50
+ 4. Put those into `UNTAPPD_CLIENT_ID` / `UNTAPPD_CLIENT_SECRET`.
51
+
52
+ Keep these values private; do not commit them.
53
+
54
+ ## Tools
55
+
56
+ Reads: `untappd_search_beer`, `untappd_beer_info`, `untappd_search_brewery`,
57
+ `untappd_brewery_info`, `untappd_search_venue`, `untappd_venue_info`,
58
+ `untappd_user_info`, `untappd_user_checkins`, `untappd_user_wishlist`,
59
+ `untappd_user_beers`, `untappd_user_badges`, `untappd_user_friends`,
60
+ `untappd_activity_feed`, `untappd_checkin_info`, `untappd_healthcheck`.
61
+
62
+ Writes (confirm-gated — return a dry-run preview unless called with
63
+ `confirm: true`): `untappd_toast`, `untappd_add_comment`, `untappd_checkin`.
64
+
65
+ ## Development
66
+
67
+ ```sh
68
+ npm install
69
+ npm run build
70
+ npm test
71
+ ```
72
+
73
+ ## License
74
+
75
+ MIT
package/SKILL.md ADDED
@@ -0,0 +1,47 @@
1
+ ---
2
+ name: untappd-mcp
3
+ description: Search Untappd beers, breweries, and venues; read user profiles, check-ins, wishlists, distinct beers, badges, friends, and your friend activity feed; and post check-ins, toasts, and comments to your own Untappd account. Use when the user asks about beer ratings, what a beer or brewery is like on Untappd, someone's Untappd check-ins or wishlist, or wants to log/toast/comment on a beer.
4
+ ---
5
+
6
+ # Untappd MCP
7
+
8
+ Talks to Untappd's mobile (v4) API using your own account. Logs in via the app's
9
+ `xauth` endpoint (username + password → access token) and calls the same
10
+ endpoints the iPad app uses.
11
+
12
+ ## Setup
13
+
14
+ Set four environment variables (see the README for details):
15
+
16
+ - `UNTAPPD_USERNAME`, `UNTAPPD_PASSWORD` — your Untappd login.
17
+ - `UNTAPPD_CLIENT_ID`, `UNTAPPD_CLIENT_SECRET` — the Untappd mobile app client
18
+ credentials (obtained by intercepting the app's traffic; see README).
19
+
20
+ Run `untappd_healthcheck` to confirm login works.
21
+
22
+ ## Read tools
23
+
24
+ - `untappd_search_beer` / `untappd_beer_info` — find beers, then get full detail by bid.
25
+ - `untappd_search_brewery` / `untappd_brewery_info` — breweries.
26
+ - `untappd_search_venue` / `untappd_venue_info` — bars, breweries, restaurants.
27
+ - `untappd_user_info` — a user's profile (omit `username` for your own).
28
+ - `untappd_user_checkins` — recent check-ins (page with `max_id`).
29
+ - `untappd_user_wishlist` — wishlist beers.
30
+ - `untappd_user_beers` — distinct beers ever checked in.
31
+ - `untappd_user_badges` / `untappd_user_friends`.
32
+ - `untappd_activity_feed` — your friend feed (page with `max_id`).
33
+ - `untappd_checkin_info` — full detail of one check-in.
34
+
35
+ Most user tools default `username` to your configured account when omitted.
36
+
37
+ ## Write tools (confirm-gated — these post to your public account)
38
+
39
+ Each returns a dry-run preview and makes NO network call unless called with
40
+ `confirm: true`:
41
+
42
+ - `untappd_toast` — toast/like a check-in (this endpoint is a toggle).
43
+ - `untappd_add_comment` — comment on a check-in.
44
+ - `untappd_checkin` — post a new beer check-in to your feed (needs a `bid` from
45
+ `untappd_search_beer`; optional `rating` 0–5 in 0.25 steps, `shout`, venue).
46
+
47
+ Photo attachment and wishlist add/remove are not yet supported.