untappd-mcp 1.3.1 → 1.5.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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +18 -7
- package/SKILL.md +7 -5
- package/dist/bundle.js +270 -138
- package/dist/cache/db.js +36 -264
- package/dist/cache/store.js +333 -0
- package/dist/cache/sync.js +11 -11
- package/dist/index.js +12 -4
- package/dist/tools/cache.js +62 -30
- package/dist/tools/diagnostics.js +33 -0
- package/dist/tools/utilities.js +10 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
|
@@ -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": "1.
|
|
10
|
+
"version": "1.5.0"
|
|
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": "1.
|
|
18
|
+
"version": "1.5.0",
|
|
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": "1.
|
|
4
|
+
"version": "1.5.0",
|
|
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
|
@@ -82,18 +82,19 @@ Writes (confirm-gated — return a dry-run preview unless called with
|
|
|
82
82
|
`untappd_wishlist_add`, `untappd_wishlist_remove`, `untappd_delete_checkin`,
|
|
83
83
|
`untappd_add_friend`, `untappd_accept_friend`, `untappd_reject_friend`, `untappd_remove_friend`.
|
|
84
84
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
`untappd_cache_has_had_many`, `untappd_cache_query`.
|
|
85
|
+
Check-in cache: `untappd_sync_checkins`, `untappd_cache_has_had`,
|
|
86
|
+
`untappd_cache_has_had_many`, `untappd_cache_not_had`, `untappd_cache_query`.
|
|
88
87
|
|
|
89
|
-
##
|
|
88
|
+
## Check-in cache
|
|
90
89
|
|
|
91
90
|
The Untappd API only exposes paged, most-recent-first check-in lists (50 per
|
|
92
91
|
page) and has **no** "has this user ever had beer X?" lookup — answering that
|
|
93
92
|
from the API alone means paging an entire history (often 11k+ check-ins) against
|
|
94
|
-
a tight ~100-calls/hour rate limit. These tools maintain a
|
|
95
|
-
|
|
96
|
-
|
|
93
|
+
a tight ~100-calls/hour rate limit. These tools maintain a SQLite mirror of a
|
|
94
|
+
user's check-ins so the question is answered instantly, offline, with zero API
|
|
95
|
+
calls. The mirror is a local file on the stdio/desktop server (`node:sqlite`,
|
|
96
|
+
path via `UNTAPPD_CACHE_DB`) and a per-user Durable Object on the remote
|
|
97
|
+
connector — the tools and behaviour are identical either way.
|
|
97
98
|
|
|
98
99
|
**Recommended workflow — sync first, then query:**
|
|
99
100
|
|
|
@@ -113,6 +114,8 @@ API calls.
|
|
|
113
114
|
date, and the matching check-ins.
|
|
114
115
|
- `untappd_cache_has_had_many` — cross-check a whole list of `bids` in one
|
|
115
116
|
call (e.g. a venue's menu) → had/not-had per beer.
|
|
117
|
+
- `untappd_cache_not_had` — given a list of `bids`, return just the ones the
|
|
118
|
+
user has **not** had — the "what's new to me on this menu?" filter.
|
|
116
119
|
- `untappd_cache_query` — filter cached check-ins by brewery, style,
|
|
117
120
|
`min_rating`, venue, and/or date range, with sorting and a limit.
|
|
118
121
|
|
|
@@ -126,6 +129,14 @@ Syncing **another** user goes through the same authed endpoint as
|
|
|
126
129
|
account is public or your friend. Otherwise the sync returns a clear error
|
|
127
130
|
telling you to add them as a friend first.
|
|
128
131
|
|
|
132
|
+
On the remote connector each logged-in user gets their **own** durable cache
|
|
133
|
+
(keyed by their account), holding only the check-ins their account was allowed
|
|
134
|
+
to fetch — one user can never read another's cache. See
|
|
135
|
+
[`docs/DEPLOY-CONNECTOR.md`](docs/DEPLOY-CONNECTOR.md) for the one-time deploy
|
|
136
|
+
step this adds. `untappd_healthcheck` reports the running version and the exact
|
|
137
|
+
tool set (count + names + a stable hash), so you can confirm which build a
|
|
138
|
+
connector is serving.
|
|
139
|
+
|
|
129
140
|
## Development
|
|
130
141
|
|
|
131
142
|
```sh
|
package/SKILL.md
CHANGED
|
@@ -46,13 +46,13 @@ Each returns a dry-run preview and makes NO network call unless called with
|
|
|
46
46
|
|
|
47
47
|
Photo attachment and wishlist add/remove are not yet supported.
|
|
48
48
|
|
|
49
|
-
##
|
|
49
|
+
## Check-in cache
|
|
50
50
|
|
|
51
51
|
The API can't answer "has this user ever had beer X?" without paging their whole
|
|
52
|
-
history (50/page, rate-limited). These tools keep a
|
|
53
|
-
question is answered instantly with **no** API calls.
|
|
54
|
-
|
|
55
|
-
connector
|
|
52
|
+
history (50/page, rate-limited). These tools keep a SQLite mirror so that
|
|
53
|
+
question is answered instantly with **no** API calls. On the stdio server the
|
|
54
|
+
mirror is a local file (`UNTAPPD_CACHE_DB`, default `~/.untappd-mcp/checkins.db`);
|
|
55
|
+
on the remote connector it's a per-user Durable Object. Same tools either way.
|
|
56
56
|
|
|
57
57
|
**Sync first, then query:**
|
|
58
58
|
|
|
@@ -68,6 +68,8 @@ connector (no filesystem).
|
|
|
68
68
|
case-insensitive `beer_name` substring.
|
|
69
69
|
- `untappd_cache_has_had_many` — batch had/not-had for a list of `bids` in one
|
|
70
70
|
call (venue-menu cross-check).
|
|
71
|
+
- `untappd_cache_not_had` — given a list of `bids`, return only the ones the user
|
|
72
|
+
has NOT had ("what's new to me on this menu?").
|
|
71
73
|
- `untappd_cache_query` — filter cached check-ins by brewery, style, `min_rating`,
|
|
72
74
|
venue, and date range, with sort + limit.
|
|
73
75
|
|