untappd-mcp 2.1.3 → 2.2.1
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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +27 -4
- package/dist/bundle.js +721 -134
- package/dist/cache/db.js +41 -4
- package/dist/cache/store.js +19 -0
- package/dist/tools/cache.js +42 -1
- package/dist/tools/checkin.js +119 -60
- package/dist/tools/confirm.js +20 -0
- package/dist/tools/friends.js +19 -15
- package/dist/tools/wishlist.js +32 -25
- package/dist/version.js +1 -1
- package/package.json +2 -2
- package/server.json +2 -2
- package/skills/untappd-mcp/SKILL.md +18 -7
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
},
|
|
8
8
|
"metadata": {
|
|
9
9
|
"description": "MCP server for Untappd — beers, breweries, venues, check-ins, wishlists, and your friend feed",
|
|
10
|
-
"version": "2.1
|
|
10
|
+
"version": "2.2.1"
|
|
11
11
|
},
|
|
12
12
|
"plugins": [
|
|
13
13
|
{
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"displayName": "Untappd",
|
|
16
16
|
"source": "./",
|
|
17
17
|
"description": "MCP server for Untappd — search beers/breweries/venues, read profiles/check-ins/wishlists, and post check-ins, toasts, and comments",
|
|
18
|
-
"version": "2.1
|
|
18
|
+
"version": "2.2.1",
|
|
19
19
|
"author": {
|
|
20
20
|
"name": "Chris Hall"
|
|
21
21
|
},
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "untappd-mcp",
|
|
3
3
|
"displayName": "Untappd",
|
|
4
|
-
"version": "2.1
|
|
4
|
+
"version": "2.2.1",
|
|
5
5
|
"description": "MCP server for Untappd — search beers/breweries/venues, read check-ins and wishlists, and post check-ins, toasts, and comments",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Chris Hall",
|
package/README.md
CHANGED
|
@@ -36,10 +36,25 @@ it goes stale.
|
|
|
36
36
|
| `UNTAPPD_USER_AGENT` | no | Override the User-Agent (default mimics the app). |
|
|
37
37
|
| `UNTAPPD_TIMEZONE` | no | IANA timezone (e.g. `America/New_York`) that check-ins are stamped with when the call doesn't pass `timezone`. Set it when the server runs somewhere other than the drinker's zone (e.g. a hosted connector, usually UTC). Defaults to the server process's zone. |
|
|
38
38
|
| `UNTAPPD_PHOTO_DIR` | no | Restrict `untappd_checkin`'s `photo_path` to files inside this directory (several allowed, separated by `:`). Recommended wherever the model can be steered by untrusted content. |
|
|
39
|
-
| `UNTAPPD_CACHE_DB` | no | Path to the local check-in cache SQLite file (default `~/.untappd-mcp/checkins.db`). Local/stdio only. |
|
|
39
|
+
| `UNTAPPD_CACHE_DB` | no | Path to the local check-in cache SQLite file (default `~/.untappd-mcp/checkins.db`; created owner-only — dir `0700`, file `0600`). Local/stdio only. |
|
|
40
40
|
|
|
41
41
|
Copy `.env.example` to `.env` and fill it in for local use.
|
|
42
42
|
|
|
43
|
+
### Confirmations
|
|
44
|
+
|
|
45
|
+
Every write asks you to confirm it first. A client that can show a confirmation
|
|
46
|
+
prompt (Claude Code) shows one. Elsewhere the write takes two calls: the first
|
|
47
|
+
does nothing and returns a preview of the exact request plus a `confirmToken`,
|
|
48
|
+
and only a repeat call with the same arguments and that token performs it. A
|
|
49
|
+
token works once, for that tool and those arguments only; change anything and
|
|
50
|
+
the call is refused with a fresh preview.
|
|
51
|
+
|
|
52
|
+
| variable | default | |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| `MCP_CONFIRM_MODE` | `ask-user` | What 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. An unrecognised value is treated as `refuse`. |
|
|
55
|
+
| `MCP_CONFIRM_TTL_SECONDS` | `600` | How long a token stays valid. |
|
|
56
|
+
| `MCP_CONFIRM_SECRET` | random per process | Signing key; set it only if tokens must survive a server restart. |
|
|
57
|
+
|
|
43
58
|
### Obtaining the client id / secret
|
|
44
59
|
|
|
45
60
|
Untappd does not publish these; they live in the mobile app. Capture them from
|
|
@@ -65,14 +80,13 @@ Reads: `untappd_search_beer`, `untappd_beer_info`, `untappd_beer_activity`,
|
|
|
65
80
|
`untappd_activity_feed`, `untappd_checkin_info`, `untappd_resolve`, `untappd_open_url`, `untappd_user_venues`, `untappd_venue_by_foursquare`, `untappd_trending`,
|
|
66
81
|
`untappd_notifications`, `untappd_local_checkins`, `untappd_healthcheck`.
|
|
67
82
|
|
|
68
|
-
Writes (confirm
|
|
69
|
-
`confirm: true`): `untappd_toast`, `untappd_add_comment`, `untappd_delete_comment`, `untappd_checkin`,
|
|
83
|
+
Writes (each asks you to confirm first — see [Confirmations](#confirmations)): `untappd_toast`, `untappd_add_comment`, `untappd_delete_comment`, `untappd_checkin`,
|
|
70
84
|
`untappd_wishlist_add`, `untappd_wishlist_remove`, `untappd_delete_checkin`,
|
|
71
85
|
`untappd_add_friend`, `untappd_accept_friend`, `untappd_reject_friend`, `untappd_remove_friend`.
|
|
72
86
|
|
|
73
87
|
Check-in cache: `untappd_sync_checkins`, `untappd_sync_user_beers`,
|
|
74
88
|
`untappd_cache_has_had`, `untappd_cache_has_had_many`, `untappd_cache_not_had`,
|
|
75
|
-
`untappd_cache_query`, `untappd_top_not_had`.
|
|
89
|
+
`untappd_cache_query`, `untappd_top_not_had`, `untappd_cache_forget`.
|
|
76
90
|
|
|
77
91
|
## Check-in cache
|
|
78
92
|
|
|
@@ -135,6 +149,15 @@ Syncing **another** user goes through the same authed endpoint as
|
|
|
135
149
|
account is public or your friend. Otherwise the sync returns a clear error
|
|
136
150
|
telling you to add them as a friend first.
|
|
137
151
|
|
|
152
|
+
**Retention.** Nothing in the cache expires: synced rows — including another
|
|
153
|
+
user's dated check-ins, comments and venues — stay until you remove them. The
|
|
154
|
+
file is created owner-only (directory `0700`, database `0600`, and older
|
|
155
|
+
installs are tightened on open). `untappd_cache_forget` deletes one user's
|
|
156
|
+
cached check-ins, distinct-beers list and sync state after a confirmation
|
|
157
|
+
(preview shows the username and row counts); it touches only the local cache,
|
|
158
|
+
never Untappd, and a later sync can re-fetch. Deleting the file removes
|
|
159
|
+
everything.
|
|
160
|
+
|
|
138
161
|
A cache holds only the check-ins the account it belongs to was allowed to
|
|
139
162
|
fetch. `untappd_healthcheck` reports the running version and the exact tool set
|
|
140
163
|
(count + names + a stable hash), so you can confirm which build is serving.
|