Context7
Up-to-date docs for AI agents
Beschreibung vom Entwickler (englisches Original)
Untappd MCP — search beers/breweries/venues, read check-ins & wishlists, post check-ins
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
UNTAPPD_ACCESS_TOKEN, UNTAPPD_USERNAME, UNTAPPD_PASSWORD, UNTAPPD_CLIENT_ID, UNTAPPD_CLIENT_SECRET, UNTAPPD_DEVICE_ID, UNTAPPD_UTV, UNTAPPD_USER_AGENT, UNTAPPD_TIMEZONE, UNTAPPD_RATE_LIMIT_PER_HOUR, UNTAPPD_PHOTO_DIR, UNTAPPD_CACHE_DB, UNTAPPD_CACHE_DIRAls geheim markierte Werte sind Schlüssel zu deinem Konto. Gib sie nie weiter und füge sie nie in einen Chat ein.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein
{
"mcpServers": {
"untappd": {
"command": "npx",
"args": [
"-y",
"untappd-mcp"
],
"env": {
"UNTAPPD_ACCESS_TOKEN": "your-value",
"UNTAPPD_USERNAME": "your-value",
"UNTAPPD_PASSWORD": "your-value",
"UNTAPPD_CLIENT_ID": "your-value",
"UNTAPPD_CLIENT_SECRET": "your-value",
"UNTAPPD_DEVICE_ID": "your-value",
"UNTAPPD_UTV": "your-value",
"UNTAPPD_USER_AGENT": "your-value",
"UNTAPPD_TIMEZONE": "your-value",
"UNTAPPD_RATE_LIMIT_PER_HOUR": "your-value",
"UNTAPPD_PHOTO_DIR": "your-value",
"UNTAPPD_CACHE_DB": "your-value",
"UNTAPPD_CACHE_DIR": "your-value"
}
}
}
}Führe das in deinem Terminal aus
claude mcp add untappd --env UNTAPPD_ACCESS_TOKEN=your-value --env UNTAPPD_USERNAME=your-value --env UNTAPPD_PASSWORD=your-value --env UNTAPPD_CLIENT_ID=your-value --env UNTAPPD_CLIENT_SECRET=your-value --env UNTAPPD_DEVICE_ID=your-value --env UNTAPPD_UTV=your-value --env UNTAPPD_USER_AGENT=your-value --env UNTAPPD_TIMEZONE=your-value --env UNTAPPD_RATE_LIMIT_PER_HOUR=your-value --env UNTAPPD_PHOTO_DIR=your-value --env UNTAPPD_CACHE_DB=your-value --env UNTAPPD_CACHE_DIR=your-value -- npx -y untappd-mcpTrag die leeren Werte ein, bevor du ihn startest.
In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"untappd": {
"command": "npx",
"args": [
"-y",
"untappd-mcp"
],
"env": {
"UNTAPPD_ACCESS_TOKEN": "your-value",
"UNTAPPD_USERNAME": "your-value",
"UNTAPPD_PASSWORD": "your-value",
"UNTAPPD_CLIENT_ID": "your-value",
"UNTAPPD_CLIENT_SECRET": "your-value",
"UNTAPPD_DEVICE_ID": "your-value",
"UNTAPPD_UTV": "your-value",
"UNTAPPD_USER_AGENT": "your-value",
"UNTAPPD_TIMEZONE": "your-value",
"UNTAPPD_RATE_LIMIT_PER_HOUR": "your-value",
"UNTAPPD_PHOTO_DIR": "your-value",
"UNTAPPD_CACHE_DB": "your-value",
"UNTAPPD_CACHE_DIR": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"untappd": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"untappd-mcp"
],
"env": {
"UNTAPPD_ACCESS_TOKEN": "your-value",
"UNTAPPD_USERNAME": "your-value",
"UNTAPPD_PASSWORD": "your-value",
"UNTAPPD_CLIENT_ID": "your-value",
"UNTAPPD_CLIENT_SECRET": "your-value",
"UNTAPPD_DEVICE_ID": "your-value",
"UNTAPPD_UTV": "your-value",
"UNTAPPD_USER_AGENT": "your-value",
"UNTAPPD_TIMEZONE": "your-value",
"UNTAPPD_RATE_LIMIT_PER_HOUR": "your-value",
"UNTAPPD_PHOTO_DIR": "your-value",
"UNTAPPD_CACHE_DB": "your-value",
"UNTAPPD_CACHE_DIR": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
UNTAPPD_USERNAME envUNTAPPD_DEVICE_ID envUNTAPPD_UTV envUNTAPPD_USER_AGENT envUNTAPPD_TIMEZONE envUNTAPPD_RATE_LIMIT_PER_HOUR envUNTAPPD_PHOTO_DIR envUNTAPPD_CACHE_DB envUNTAPPD_CACHE_DIR envDiese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto chrischall bestätigt, dem das Repo gehört
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Das musst du eintragen: UNTAPPD_ACCESS_TOKEN, UNTAPPD_PASSWORD, UNTAPPD_CLIENT_ID, UNTAPPD_CLIENT_SECRET
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (2.6.1) kam vor 3 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js auf deinem Computer.
In derselben Kategorie: Context7, Codebase Memory, Exa
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
Up-to-date docs for AI agents
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
An MCP server for Untappd. It talks to Untappd's mobile (v4) API using your own account — search beers, breweries, and venues; read profiles, check-ins, wishlists, distinct beers, badges, friends, and your friend activity feed; and post check-ins, toasts, and comments.
Developed and maintained by AI (Claude Code). Use at your own discretion. This
is an unofficial client that uses Untappd's private mobile API; it is not
affiliated with or endorsed by Untappd.
Untappd's iPad/iPhone app authenticates with a username/password xauth login (POST https://api.untappd.com/v4/xauth) that returns an access token, then calls the v4 API. This server reproduces that, except where the token goes:
Authorization: Bearer header, never in the URL (the app uses an access_token query param; the API accepts both).Authorization: Bearer header (with the app's client credentials in the query), matching the app's real requests.The token is fetched on demand, cached in memory, and refreshed automatically if it goes stale.
| Variable | Required | Description |
|---|---|---|
UNTAPPD_ACCESS_TOKEN | no | An access token you already hold. Supply this and no password is needed — the xauth login is skipped entirely. |
UNTAPPD_USERNAME | if no token | Your Untappd username or login email. |
UNTAPPD_PASSWORD | if no token | Your Untappd password (used only for the xauth login that mints a token). |
UNTAPPD_CLIENT_ID | for login & writes | The Untappd mobile app client id (see below). A pre-seeded access token can read without it. |
UNTAPPD_CLIENT_SECRET | for login & writes | The Untappd mobile app client secret. |
UNTAPPD_DEVICE_ID | no | Stable device UUID the token is keyed to (a default is provided). |
UNTAPPD_UTV | no | API version param (default 4.0.0). |
UNTAPPD_USER_AGENT | no | Override the User-Agent (default mimics the app). |
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. |
UNTAPPD_PHOTO_DIR | no | The directory untappd_checkin's photo_path must be inside (several allowed, separated by :). Defaults to ~/Downloads/untappd-mcp — put a photo there to attach it. Any other file is refused, so a prompt-injected shout or comment can't publish an arbitrary image from your disk. |
UNTAPPD_CACHE_DB | no | Path to the local check-in cache SQLite file (default ~/.untappd-mcp/checkins.db). A relative path or leading ~ resolves against your home directory, never the working directory, so every host (Claude Desktop, Claude Code, …) finds the same file; the resolved path is logged to stderr at startup. The db file is always made owner-only (0600), and so are any directories the server creates plus the default ~/.untappd-mcp; a directory you point this into that already exists keeps its permissions. Local/stdio only. |
UNTAPPD_CACHE_DIR | no | Directory for the cache instead of ~/.untappd-mcp (the file is checkins.db inside it). UNTAPPD_CACHE_DB wins if both are set. |
UNTAPPD_RATE_LIMIT_PER_HOUR | no | The hourly call limit the syncs' stop-before-429 guard enforces (default 100, Untappd's documented per-token limit). Only change it if Untappd gives your token a different limit. |
Copy .env.example to .env and fill it in for local use.
Every write asks you to confirm it first. A client that can show a confirmation prompt (Claude Code) shows one (unless MCP_CONFIRM_ELICITATION=off). Elsewhere the write takes two calls: the first does nothing and returns a preview of the exact request plus a confirmToken, and only a repeat call with the same arguments and that token performs it. A token works once, for that tool and those arguments only; change anything and the call is refused with a fresh preview.
| variable | default | |
|---|---|---|
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, unless MCP_CONFIRM_ELICITATION=off. An unrecognised value is treated as refuse. |
MCP_CONFIRM_ELICITATION | on | off 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_SECONDS | 600 | How long a token stays valid. |
MCP_CONFIRM_SECRET | random per process | Signing key; set it only if tokens must survive a server restart. |
Untappd does not publish these; they live in the mobile app. Capture them from your own app's traffic with an HTTPS proxy:
POST https://api.untappd.com/v4/xauth request — its query string contains client_id and client_secret.UNTAPPD_CLIENT_ID / UNTAPPD_CLIENT_SECRET.Keep these values private; do not commit them.
Reads: untappd_search_beer, untappd_beer_info, untappd_beer_activity, untappd_search_brewery, untappd_brewery_info, untappd_brewery_beers, untappd_search_venue, untappd_venue_info, untappd_venue_activity, untappd_user_info, untappd_user_checkins, untappd_user_wishlist, untappd_user_beers, untappd_user_badges, untappd_user_friends, untappd_pending_friends, untappd_activity_feed, untappd_checkin_info, untappd_resolve, untappd_open_url, untappd_user_venues, untappd_venue_by_foursquare, untappd_trending, untappd_notifications, untappd_local_checkins, untappd_upload_slots, untappd_healthcheck.
Writes (each asks you to confirm first — see Confirmations): untappd_toast, untappd_add_comment, untappd_delete_comment, untappd_checkin, untappd_wishlist_add, untappd_wishlist_remove, untappd_delete_checkin, untappd_add_friend, untappd_accept_friend, untappd_reject_friend, untappd_remove_friend.
untappd_checkin takes one photo (JPEG or PNG, max 15 MB) through exactly one of:
UNTAPPD_PHOTO_DIR. Local installs only: on the hosted connector the server can't see your files, so a path is refused with directions to the slot flow below.{filename, contentBase64, mimeType?}. Works anywhere; fine for a small photo, but every byte rides inside the tool call.untappd_upload_slots (slots: [{filename}]) returns a signed upload URL and a ready curl per photo; PUT the photo with it, then pass the slot's blobKey. It refuses on a deployment with no blob store.Every route is checked the same way (image type, size cap, bytes that really are a JPEG/PNG), and the confirmation preview names the photo and its SHA-256 — a blob that changes between the preview and the confirmed call is refused (DRAFT_CHANGED). An uploaded blob is deleted only after the check-in and its photo succeed (photo_blob: {deleted: true}); otherwise it is kept (kept: true) so you can retry.
Check-in cache: untappd_sync_checkins, untappd_sync_user_beers, untappd_cache_has_had, untappd_cache_has_had_many, untappd_cache_not_had, untappd_cache_query, untappd_top_not_had, untappd_cache_status, untappd_cache_forget, untappd_sync_wishlist (mirrors a user's wishlist locally so picks can boost wishlisted beers), untappd_sync_brewery_likes (mirrors the breweries a user likes/follows on Untappd, as "untappd" favorites), untappd_sync_user_venues + untappd_cache_has_visited (a user's full venue history — "has this person been here?" — which pages fully for any public/friend account, unlike their check-ins).
Trip planning: untappd_trip_check takes a user (or usernames + mode) and up to 25 stops — each a venue_id, a name (+ city/state), a lat/lng, and/or a brewery_id — and returns per stop: whether they've been there (first/recent visit, total visits, the matched venues incl. Untappd's "(duplicate of …)" copies; a brewery stop is matched by the brewery's name), how many of the brewery's beers they've had, and the top N (default 4) not-had beers by Untappd global rating, with an optional style filter (out-of-production beers skipped unless asked). Visits and has-had are answered from the cache only; the one API call it may make is brewery/beer_list for a brewery whose list isn't cached or is past its 7-day TTL — at most api_budget (default 5; 0 = strictly cache-only, using a stale list flagged stale), under the rate-limit guard. Favorite venues and breweries are flagged, prefer_favorites (default true) boosts wishlisted and favorite-brewery beers (liked on Untappd, derived or manual), and a stop within near_favorite_radius_m (default 2 km) of a favorite venue gets near_favorites and a "Near a favorite: …" hint.
Group checks: untappd_cache_has_had_many and untappd_top_not_had accept usernames (up to 10) with mode: "none_had" (default — beers new to everyone) or "any_not_had" (beers at least one of them still needs); each beer says who has and hasn't had it.
What they drank at a venue (opt-in, costs calls): untappd_sync_venue_drinks fetches the beer from each cached venue's first and most-recent visit check-in (checkin/view, budgeted by max_calls, stops before the rate limit). It's a partial picture — two check-ins per venue at most — shown in untappd_cache_has_visited as drinks.
Favorites (cache only, never written to Untappd): untappd_favorites_list lists a user's favorite beers, breweries and venues, each once with its sources and a reason. Derived favorites come from the synced history — venues with ≥5 check-ins or visits spanning ≥3 distinct months; breweries with ≥5 beers had and an average rating ≥3.75, or ≥15 beers; beers rated ≥4.25 or had ≥3 times — and every threshold can be overridden per call. Manual favorites are added and removed with untappd_favorite_add / untappd_favorite_remove (local table, optional note). Results from untappd_cache_has_had, untappd_cache_has_had_many, untappd_cache_has_visited, untappd_brewery_beers, untappd_venue_menu and untappd_top_not_had carry a favorite field {is_favorite, sources, reason}, and untappd_top_not_had ranks wishlisted beers and beers from favorite breweries higher by default (prefer_favorites: false turns that off); untappd_trip_check carries the same flags and boost.
Untappd favorites (breweries only): untappd_sync_brewery_likes mirrors the breweries a user "likes" on Untappd (user/brewerylikes — the app calls them "followings"; works for another user's public/friend account, ~50 per call). Like the wishlist sync it's a full pass from the top, resumable (cursor saved every page, another_run_needed, percent), stops before the rate limit with stopped_for_rate_limit + resume info, and only drops unliked breweries once a
Nur der Anfang wird gezeigt; den Rest findest du im Repo