mcpField
U
untappd

untappd

ローカル
github.com/darrenjrobinsonゲーム・エンタメ02 日前に更新

untappd について

untappd は、AI エージェントから Untappd v4 の読み取り API を利用できる MCP サーバーです。会場、醸造所、ビール、ユーザーのアクティビティを検索でき、OAuth 認証も備えています。

主な機能

  1. 01Untappd v4 読み取り API ツール
  2. 02会場、醸造所、ビールの検索
  3. 03チェックインフィードと活動の取得
  4. 04バッジ、ウィッシュリスト、友達の確認
  5. 05OAuth 認証と状態確認

活用シーン

  1. 01会場の最近の提供ビールを確認
  2. 02ユーザーの Untappd 履歴を調査
  3. 03ビールや醸造所の詳細を検索

MCP 対応

Untappd API の機能を MCP クライアント向けのツールとして公開し、トークンが必要なツールには対話型 OAuth 認証を提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"darrenjrobinson-untappd": {
"command": "npx",
"args": [
"-y",
"untappd-mcp-server"
],
"env": {
"UNTAPPD_CLIENT_ID": "<UNTAPPD_CLIENT_ID>",
"UNTAPPD_CLIENT_SECRET": "<UNTAPPD_CLIENT_SECRET>",
"UNTAPPD_ACCESS_TOKEN": "<UNTAPPD_ACCESS_TOKEN>",
"UNTAPPD_USERNAME": "<UNTAPPD_USERNAME>",
"UNTAPPD_REDIRECT_URL": "<UNTAPPD_REDIRECT_URL>",
"UNTAPPD_TOKEN_PATH": "<UNTAPPD_TOKEN_PATH>"
}
}
}
}
起動コマンドnpx -y untappd-mcp-server
設定が必要な環境変数
UNTAPPD_CLIENT_IDシークレットUntappd API Client ID
UNTAPPD_CLIENT_SECRETシークレットUntappd API Client Secret
UNTAPPD_ACCESS_TOKENシークレットUntappd OAuth access token — unlocks the friend feed tool, user-scoped rate limits, and richer /user data. Optional: can instead be obtained interactively via the authenticate_untappd tool or `npx untappd-mcp-server auth` (stored in ~/.untappd-mcp-server/token.json)
UNTAPPD_USERNAMEDefault username for authenticated user tools
UNTAPPD_REDIRECT_URLOAuth redirect URL for interactive authentication — must exactly match the Callback URL registered in your Untappd app settings; default http://localhost:8737/callback
UNTAPPD_TOKEN_PATHシークレットOverride path for the saved token file; default ~/.untappd-mcp-server/token.json

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmuntappd-mcp-server2.1.0

ツール

27

掲載時のツール一覧 · 1 日前に更新

パラメーター型必須説明
timeout_secondsintegerいいえブラウザーでユーザーの承認を待つ時間(デフォルト:180)

詳細

untappd-mcp-server

npm version npm downloads license

Untappd API を AI エージェント向けのツールとして公開する Model Context Protocol(MCP)サーバーです。Untappd v4 の読み取り API 全体をカバーする 27 個のツールに、組み込みのインタラクティブな OAuth 認証機能を備えています。店舗、醸造所、ビールの検索、チェックインフィードによるタップ中のビールの確認、ユーザーのバッジ、友達、ウィッシュリスト、飲酒履歴の閲覧、統計の集計を、あらゆる MCP 対応クライアントから利用できます。

前提条件

  • Node.js 20+
  • untappd.com/api から取得した Untappd API 認証情報(client_id と client_secret)
  • 任意:認証が必要なツールを利用するための Untappd OAuth アクセストークン。チャット内で authenticate_untappd ツールを使うか、npx untappd-mcp-server auth を実行して取得できます(インタラクティブ認証を参照)

クイックスタート

npx を使う(インストール不要)
UNTAPPD_CLIENT_ID=xxx UNTAPPD_CLIENT_SECRET=yyy npx untappd-mcp-server
PowerShell
$env:UNTAPPD_CLIENT_ID = "your_client_id"
$env:UNTAPPD_CLIENT_SECRET = "your_client_secret"
npx untappd-mcp-server
Claude Desktop

Claude Desktop の設定(claude_desktop_config.json)に追加します。

{
  "mcpServers": {
    "untappd": {
      "command": "npx",
      "args": ["untappd-mcp-server"],
      "env": {
        "UNTAPPD_CLIENT_ID": "your_client_id",
        "UNTAPPD_CLIENT_SECRET": "your_client_secret",
        "UNTAPPD_ACCESS_TOKEN": "optional_oauth_token",
        "UNTAPPD_USERNAME": "optional_default_username"
      }
    }
  }
}

ツール

🔑 token のマークが付いたツールには、アクセストークン(UNTAPPD_ACCESS_TOKEN 環境変数またはインタラクティブ認証)が必要です。

認証ツール
authenticate_untappd

OAuth を使って Untappd の認証をインタラクティブに行います。Untappd の承認ページをブラウザーで開き、一時的な localhost リスナーでリダイレクトを受信して、アクセストークンを保存します。🔑 ツールは再起動せずにすぐ使用できます。前提条件: Untappd アプリの Callback URL は http://localhost:8737/callback(または UNTAPPD_REDIRECT_URL の値)に正確に設定する必要があります。

パラメーター型必須説明
timeout_secondsintegerいいえブラウザーでの承認を待つ時間(デフォルトは 180、最大は 600)
get_auth_status

認証状態を報告します。トークンの有無、取得元(環境変数またはトークンファイル)、ファイルパス、🔑 ツールが利用可能かどうかを確認できます。デフォルトでは無料で利用できます。validate: true を指定すると、API を 1 回呼び出してトークンを検証します。

パラメーター型必須説明
validatebooleanいいえAPI を 1 回呼び出してトークンを検証します(デフォルトは false)
検索と照会
venue_search

場所を考慮した検索を必要に応じて行い、名前で店舗(醸造所、バー、レストラン)を検索します。

パラメーター型必須説明
qstringはい検索クエリ(店舗名)
latnumberいいえ場所を考慮した検索結果に使う緯度
lngnumberいいえ場所を考慮した検索結果に使う経度
search_brewery

名前で醸造所を検索します。

パラメーター型必須説明
qstringはい醸造所名の検索クエリ
offsetintegerいいえページネーションのオフセット
search_beer

名前でビールを検索します。

パラメーター型必須説明
qstringはいビール名の検索クエリ
offsetintegerいいえページネーションのオフセット
sortstringいいえ並べ替え順:checkin(デフォルト)、name、count
店舗
get_venue_info

店舗の詳細情報と最近のチェックインを取得します。

パラメーター型必須説明
venue_idintegerはいUntappd の店舗 ID
compactbooleanいいえtrue の場合、店舗情報のみを返します(チェックイン、メディア、人気のビールは含みません)
get_venue_checkins

会場の最近のチェックインフィードを取得します。現在提供されているビールを確認するための主要なツールです。最近のチェックインは、提供中のビールを示すリアルタイムの情報源になります。

パラメーター型必須説明
venue_idintegerはいUntappd の会場 ID
limitintegerいいえ結果数(最大 25、デフォルト 25)
max_idintegerいいえこのチェックイン ID より古い結果を返します
min_idintegerいいえこの ID より新しいチェックインのみを返します
get_venue_foursquare_lookup

Foursquare の会場 ID を対応する Untappd の会場に解決します。Foursquare の位置情報と Untappd の会場ツールをつなぐ機能です。

パラメーター型必須説明
foursquare_idstringはいv2 の MD5 ハッシュ形式の Foursquare 会場 ID(v3 の数値 ID は使用できません)
ビール
get_beer_info

特定のビールの詳細情報を取得します。

パラメーター型必須説明
bidintegerはいUntappd のビール ID
compactbooleanいいえtrue の場合、ビール情報のみを返します
get_beer_checkins

特定のビールの最近の公開チェックインフィードを取得します。現在、人々がそのビールについてどのように話しているか、どこで飲んでいるかを確認できます。

パラメーター型必須説明
bidintegerはいUntappd のビール ID
limitintegerいいえ1 ページあたりの結果数(最大 50、デフォルト 25)
max_idintegerいいえこのチェックイン ID より古い結果を返します
min_idintegerいいえこの ID より新しいチェックインのみを返します
get_trending_beers

世界的にトレンドになっているビールを取得します(最近のチェックイン数の伸びに基づく大手・小規模ブルワリーのリスト)。パラメーターはありません。

ブルワリー
get_brewery_info

ブルワリーの詳細情報、ビール一覧、最近のチェックインを取得します。

パラメーター型必須説明
brewery_idintegerはいUntappd のブルワリー ID
compactbooleanいいえtrue の場合、ブルワリー情報のみを返します
get_brewery_checkins

ブルワリーの最近の公開チェックインフィードを取得します。世界中でチェックインされている、そのブルワリーのすべてのビールが対象です。

パラメーター型必須説明
brewery_idintegerはいUntappd のブルワリー ID
limitintegerいいえ1 ページあたりの結果数(最大 50、デフォルト 25)
max_idintegerいいえこのチェックイン ID より古い結果を返します
min_idintegerいいえこの ID より新しいチェックインのみを返します
ユーザー
get_user_info

Untappd ユーザーのプロフィールと統計情報を取得します。

パラメーター型必須説明
usernamestringはいUntappd のユーザー名
compactbooleanいいえtrue の場合、ユーザー情報のみを返します(チェックイン、メディア、最近の醸造ビールは含まれません)
get_user_activity

ユーザーの最近のチェックインアクティビティフィードを取得します。

パラメーター型必須説明
usernamestringはいUntappd のユーザー名
limitintegerいいえ結果数(最大 25、デフォルト 25)
max_idintegerいいえこのチェックイン ID より古い結果を返します
min_idintegerいいえこの ID より新しいチェックインのみを返します
get_user_distinct_beers

ユーザーがチェックインしたビールを重複なしで取得し、柔軟な並べ替えに対応します。sort=checkin と limit=1 の組み合わせは、「最も多くチェックインしたビール」を 1 回の呼び出しで取得するパターンです。

パラメーター型必須説明
usernamestringはいUntappd のユーザー名
offsetintegerいいえページネーションのオフセット
limitintegerいいえ1 ページあたりの結果数(最大 50、デフォルト 25)
sortstringいいえdate(デフォルト)、checkin、highest_rated、lowest_rated、highest_rated_you、lowest_rated_you
get_user_wishlist

ユーザーのウィッシュリストに登録されているビールを取得します。

パラメーター型必須説明
usernamestringはいUntappd のユーザー名
offsetintegerいいえページネーションのオフセット
limitintegerいいえ1 ページあたりの結果数(最大 50、デフォルト 25)
sortstringいいえdate(デフォルト)、checkin、highest_rated、lowest_rated
get_user_badges

ユーザーが獲得したバッジを取得します(1 ページ 50 件、新しい順)。

パラメーター型必須説明
usernamestringはいUntappd のユーザー名
offsetintegerいいえページネーションのオフセット(1 ページ 50 件)
get_user_friends

ユーザーの友達リストを取得します(公開アカウントのみ)。

パラメーター型必須説明
usernamestringはいUntappd のユーザー名
offsetintegerいいえページネーションのオフセット
limitintegerいいえ1 ページあたりの結果数(最大 50、デフォルト 25)
アクティビティフィード
get_global_feed

公開されているグローバルなチェックインフィード(The Pub)を取得します。返されるデータ量に対するレート制限のコストが高いため、新しいチェックインのみを取得する min_id によるポーリングを推奨します。注意: 標準の API キーでは通常 /thepub の利用が許可されていません。キーに拡張アクセス権がない限り、Untappd は "You are not authorized to call this method from this key" を返します(get_local_feed には制限がありません)。

パラメーター型必須説明
limitintegerいいえ1 ページあたりの結果数(最大 50、デフォルト 25)
max_idintegerいいえこのチェックイン ID より古い結果を返します
min_idintegerいいえこの ID より新しいチェックインのみを返します
get_local_feed

地理的な地点の近くにある公開チェックインフィードを取得します。

パラメーター型必須説明
latnumberはい緯度
lngnumberはい経度
radiusintegerいいえ半径(マイル。デフォルト 25、最大 50)
limitintegerいいえ1 ページあたりの結果数(最大 50、デフォルト 25)
max_idintegerいいえこのチェックイン ID より古い結果を返します
min_idintegerいいえこの ID より新しいチェックインのみを返します
get_friend_feed 🔑 token

認証済みユーザーの友達のチェックインフィードを取得します。

パラメーター型必須説明
limitintegerいいえ1 ページあたりの結果数(最大 50、デフォルト 25)
max_idintegerいいえこのチェックイン ID より古い結果を返します
min_idintegerいいえこの ID より新しいチェックインのみを返します
チェックイン
get_checkin_info

バッジの獲得状況、乾杯、コメントなど、特定のチェックインの詳細情報を取得します。

パラメーター型必須説明
checkin_idintegerはいUntappd のチェックイン ID
複合/集計

これらのツールは複数の API 呼び出しを行います(スキャンするページごとに 1 回。ビール/バッジは 50 件、チェックインは 25 件)。開始前に残りのレート制限を確認し、上限に近づいた場合は早期に停止して、レスポンスの truncated: true を設定します。

get_user_stats_at_venue

ユーザーの最近のチェックインフィードをスキャンし、特定の会場でのチェックイン統計(訪問回数、最終訪問日、平均評価、人気のビール)を取得します。Untappd の API には会場履歴のエンドポイントがないため、統計の対象はスキャンした期間(max_pages × 25 件のチェックイン)に限られ、全期間ではありません。

パラメーター型必須説明
venue_idintegerはいUntappd の会場 ID
usernamestringいいえUntappd のユーザー名(デフォルトは UNTAPPD_USERNAME)
max_pagesintegerいいえ1 ページ 25 件のチェックインとしてスキャンするフィードの最大ページ数(デフォルト 5 = 125 件のチェックイン)
search_venue_then_get_user_stats

会場名で検索し、最上位の一致候補におけるユーザーのチェックイン統計を取得します。

パラメーター型必須説明
qstringはい会場の検索クエリ
usernamestringいいえUntappd のユーザー名(デフォルトは UNTAPPD_USERNAME)
latnumberいいえ位置情報に基づく検索に使用する緯度
lngnumberいいえ位置情報に基づく検索に使用する経度
max_pagesintegerいいえ25 件のチェックイン/ページでスキャンするフィードの最大ページ数(デフォルトは 5=125 件のチェックイン)
get_user_beer_stats

ユーザーの重複しないビール履歴を集計し、スタイル、醸造所、評価の内訳を取得します。上位のスタイル、上位の醸造所、個人評価と全体評価の平均、最高評価、およびチェックイン数最多のビールが含まれます。

パラメーター型必須説明
usernamestringはいUntappd のユーザー名
max_pagesintegerいいえ50 件のビール/ページでスキャンする最大ページ数(デフォルトは 10=500 件のビール)
get_user_badge_summary

ユーザーのすべてのバッジを(最後までページネーションして)取得し、構造化されたサマリーを返します。

パラメーター型必須説明
usernamestringはいUntappd のユーザー名
max_pagesintegerいいえ50 個のバッジ/ページでスキャンする最大ページ数(デフォルトは 10=500 個のバッジ)

レート制限

Untappd API では、API キーごと(認証済みの場合はアクセストークンごと)に1 時間あたり 100 回の呼び出しが許可されています。各ツールの応答には、現在のレート制限状況が含まれます。

{
  "rateLimit": {
    "limit": 100,
    "remaining": 97
  }
}

複合ツールはページネーションを開始する前に assertRateLimitSufficient を呼び出し、予算を使い切るのではなく、早期に truncated: true を付けて停止します。制限を超えると、Untappd API は 429 エラーを返し、次のように表示されます:Rate limit exceeded. Limit: 100, Remaining: 0. Resets hourly.

認証

モード環境変数利用可能になる機能
パブリックUNTAPPD_CLIENT_ID + UNTAPPD_CLIENT_SECRETすべてのパブリックツール
認証済み+ UNTAPPD_ACCESS_TOKEN(+ 任意の UNTAPPD_USERNAME)get_friend_feed、ユーザー単位のレート制限、より詳細な /user データ

アクセストークンが設定されている場合(環境変数または保存済みトークンファイル)、サーバーはすべての呼び出しでアクセストークンを優先します。レート制限はユーザー単位になり、/user エンドポイントからより詳細なデータが返されます。UNTAPPD_USERNAME を設定すると、認証済みユーザーツールで使用するデフォルトのユーザー名を指定できます。

クライアント ID とシークレットのペアもアクセストークンも設定されていない場合、サーバーは起動時に終了します。

対話型認証

アクセストークンを手動で取得する必要はありません。サーバーが Untappd の OAuth フローを実行できます。

一度だけ必要な設定: Untappd アプリの設定 untappd.com/api で、Callback URL を次の値に正確に設定してください。

http://localhost:8737/callback

(上書きする場合は UNTAPPD_REDIRECT_URL の値を設定します。localhost の http URL である必要があり、2 つの値が完全に一致しないと Untappd がフローを拒否します)。

チャットでの操作: エージェントに authenticate_untappd ツールを実行するよう依頼してください。ブラウザーで Untappd の承認ページが開き、承認するとトークンが保存され、🔑 ツールがすぐに使えるようになります。再起動は不要です。

ターミナルでの操作:

npx untappd-mcp-server auth            # run the interactive flow
npx untappd-mcp-server auth --status   # show current auth status
npx untappd-mcp-server auth --clear    # delete the saved token

(リポジトリでは npm run auth を実行します)。

保存場所と優先順位: トークンは ~/.untappd-mcp-server/token.json に保存されます(UNTAPPD_TOKEN_PATH で変更可能)。UNTAPPD_ACCESS_TOKEN が設定されている場合は、常にファイルの値より優先されます。Untappd のトークンに有効期限はありません。

セキュリティに関する注意: トークンは macOS/Linux では権限 0600 でプレーンテキスト保存されます。Windows ではユーザープロファイルの ACL によって保護されます。auth --clear を実行すれば、いつでも削除できます。ツールの出力にトークンが含まれる場合は、常にマスクされた形式になります。

開発

npm install
npm run build
npm test          # unit tests (mocked API — no rate limit cost)
npm run smoke     # live smoke test against the real API (~25 calls, ~26 with a token)

スモークテストでは UNTAPPD_* 環境変数が使用され、アクセストークンが設定されていない場合は認証済みツールがスキップされます。また、残りのレート制限が 5 未満になると中止されます。npm run smoke -- --only=tool_name を使用すると、単一のツールに絞り込めます。

MCP Inspector でのテスト
npx @modelcontextprotocol/inspector node dist/index.js

既知の制限事項

  • タップリストのデータはありません — 実際のタップリストを利用するには、Untappd for Business のサブスクリプションが必要です。会場のチェックインフィードをリアルタイムの代替として使用します。
  • 会場イベントはありません — Untappd の公開 API にはイベントエンドポイントがなく、この不足を補える可能性があった Eventbrite の検索 API も廃止されたため、v3 での対応に延期されています。
  • 会場履歴エンドポイントはありません — v4 API にはユーザーごとの会場履歴がありません。get_user_stats_at_venue は代わりに最近のチェックインフィードをスキャンするため、統計の対象は全期間ではなく、一定の期間(max_pages × 25 件のチェックイン)です。
  • レート制限:100 件/時間 — 重複する呼び出しを最小限に抑えてください。すべてのレスポンスに rateLimit.remaining が表示されます。
  • フィードの上限 — ツールで指定できる limit は最大 50 ですが、一部のフィードは API によってサーバー側で 25 件に制限されます。
  • グローバルフィードには昇格済みキーが必要です — /thepub(get_global_feed)は標準 API キーでは認証されません。ローカルフィードはどのキーでも使用できます。
  • Foursquare の検索には v2 ID が必要です — MD5 ハッシュ形式です。Foursquare v3 の数値 ID は使用できません。
  • 会場 ID が必要です — まず venue_search を使用して、会場名を ID に変換してください。
  • 公開チェックインのみ — 非公開ユーザーアカウントは表示されません。
  • 読み取り専用 — 書き込み操作(チェックイン、乾杯、コメント、ウィッシュリストの管理)は v3 での対応に延期されています。
  • MCP クライアントのタイムアウト — 一部の MCP クライアントでは、ツール呼び出しの時間制限が authenticate_untappd のデフォルトである 180s より短く設定されています。クライアント側で先にタイムアウトする場合は、より短い timeout_seconds を指定するか、代わりにターミナルで npx untappd-mcp-server auth を使用してください。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。