Mahonia について
Mahoniaは、ハイカー向けの装備リスト・パック重量管理アプリです。リモートMCPサーバーにより、AIアシスタントは共有リストを読み取り、編集リンクがあればアカウントなしで変更できます。
主な機能
- 01ベース・着用・消耗品の重量を集計
- 02行ごとの単位と消耗品のカロリーに対応
- 03閲覧専用リンクと共同編集リンクを共有
- 04パッキングチェックリストモード
- 05複数形式でリストをインポート・エクスポート
- 06装備カタログと再利用できる装備庫
活用シーン
- 01登山前にパック重量を比較する
- 02他の人と装備リストを共同作成する
- 03出発前のチェックリストとして使う
- 04装備を再利用し既存リストを取り込む
MCP 対応
`/mcp`のリモートMCPサーバーは、共有リストの読み取り、装備カタログの検索、編集リンクを使ったリスト変更のための7つのツールを提供します。アカウントが必要な装備庫にはアクセスできません。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mahonia.app/mcpclaude mcp add --transport http app-mahonia-mahonia https://mahonia.app/mcp{"mcpServers":{"app-mahonia-mahonia":{"type":"http","url":"https://mahonia.app/mcp"}}}Cursor で開く{"servers":{"app-mahonia-mahonia":{"type":"http","url":"https://mahonia.app/mcp"}}}VS Code で開く{"mcpServers":{"app-mahonia-mahonia":{"type":"http","url":"https://mahonia.app/mcp"}}}{"mcpServers":{"app-mahonia-mahonia":{"serverUrl":"https://mahonia.app/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
7| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| share_code | string | はい | リストの共有コードまたは共有リンク(mahonia.app/s/CODE)。編集リンクは指定できません。 |
詳細
Mahonia
ハイカー向けのギアリストとパック重量のトラッカーです。パッキングリストを作成して、重量を確認し、共有できます。
リストの作成にサインアップは不要です。入力を始めた時点で自分のリストになり、推測できない非公開リンクで保持されます。ギアボルトだけはアカウントが必要です。「自分が持っているギア」は、ひとつのブラウザーに保存されるのではなく、デバイスをまたいで使える必要があるためです。
機能
- パックの重量を確認。 ベース、着用、消耗品の合計に加え、着用分の内訳(靴下3足のうち、1足は着用中)と携行重量を確認できます。重量の入力は任意です。重量を入力しないリストでは、合計は表示されません。
- オートコンプリートで使える厳選されたギアカタログ。出典が明記され、修正も可能で、各行の値を上書きできます。
- 行ごとの単位。 グラム単位のリストに
32.5 ozと入力すると、その行はオンスのまま、合計はグラムで表示されます。 - 消耗品のカロリーを入力し、リスト全体の合計を確認できます。
- 旅行の日程はカレンダーの日付として扱います。時刻やタイムゾーンはないため、飛行機で移動しても日程がずれることはありません。
- 2つの方法で共有: 読み取り専用リンクと、共同計画用の編集リンクです。どちらも漏洩した場合は新しいリンクに置き換えられます。
- パッキングモード — 前夜に使えるチェックリスト形式で、同じリストを表示します。
- リストの作成とともに内容が追加されるギアボルトがあるため、次回はワンタップで自分のギアを選べます。
- LighterPack(共有リンクまたは CSV)や JSON バックアップからインポートでき、CSV、JSON、Markdown でエクスポートできます。
- 復元ポイントがあるため、誤って削除しても、通知が消えた後から取り消せます。
ローカルで実行
Node 24(固定バージョン。.nvmrc を参照)が必要です。
npm install
npm run seed # load the gear catalog into a local database
npm run dev # http://localhost:3000
環境変数を設定しない場合、アプリはローカルの PGlite データベースを使って、すべての処理をマシン上で実行します。.env.example を .env にコピーすると、本番環境へのデプロイ用に実際の Postgres(Neon)と Redis(Upstash)を指定できます。
マシンの外部に送られる処理はスキップされるのではなく、コンソール出力に切り替わります。そのため、初回チェックアウト後からアプリを利用できます。
| 未設定の変数 | ローカルでの動作 |
|---|---|
RESEND_API_KEY | サインインリンクはメールで送信されず、サーバーコンソールに出力されます。 |
GITHUB_FEEDBACK_TOKEN / _REPO | 「フィードバックを送信」(エディターのアクションメニュー内)はコンソールに出力され、送信されなかったことが通知されます。 |
どちらも、本番環境では入力を受け付けながら行き先がない状態にするのではなく、明確にエラーになります。
技術スタック
Nuxt 4 · Vue 3 · TypeScript · Drizzle ORM · Vercel にデプロイ
MCP コネクター
このアプリは /mcp でリモート MCP サーバーを提供しているため、インストールもサインインも不要で、AI アシスタントにコネクターとして
https://mahonia.app/mcp を渡せます。7 つのツールで、共有リストをデータまたは Markdown として読み取る、カタログを検索する、商品のバリエーションを 1 つ取得するほか、編集リンクがあれば、リストの作成、行の追加、旅行の日程とトレイルの設定ができます。共有コードは読み取り権限、編集リンクのフラグメントトークンは書き込み権限として機能します。受信時にハッシュ化され、ツールの引数としてのみ渡されるため、新たに信頼されるものはありません。トランスポートは POST によるステートレスな JSON-RPC(MCP リビジョン 2025-06-18 および 2025-11-25、セッションなし、イベントストリームなし、GET は 405 を返します)で、server/routes/mcp.post.ts に手書きで実装され、ツールは server/utils/mcp.ts にあります。どちらのファイルにも、その設計に至った理由が記されています。My Gear は意図的に対象外です。アカウントトークンが必要になるため、別途判断が必要です。
クライアントに追加する方法:
- Claude(claude.ai、Desktop、モバイル):Mahonia をコネクターとして追加 し、「サインインなし」を選択します。ここで追加したコネクターは Claude Code でも利用できます。
- Claude Code:
claude mcp add --transport http --scope user mahonia https://mahonia.app/mcp - Gemini CLI:
gemini mcp add --transport http mahonia https://mahonia.app/mcp - ChatGPT: Settings、Developer mode の順に開き、「No Authentication」を指定して
https://mahonia.app/mcpを追加します。 mcp.jsonを読み込むクライアント:{"mcpServers":{"mahonia":{"url":"https://mahonia.app/mcp"}}}- stdio のみを扱うクライアント:
npx mcp-remote https://mahonia.app/mcpでブリッジします。
このサーバーは公式 MCP レジストリに
app.mahonia/mahonia として登録されています。server.json が登録情報で、ドメインの DNS 証明を用いて
mcp-publisher により公開されています。
変更履歴
変更履歴は GitHub Releases です。何かをリリースする日ごとに 1 件のリリースを作成し、日付(v2026.09.12)をタグに付けて、以下の項目からワークフローで生成します。ユーザー向けの変更を行う場合は、同じ PR の一部として、簡潔な 1 文の項目を追加してください。
npm run changelog -- --added "Sort folders by weight."
npm run changelog -- --fixed "…" --changed "…"
項目は Added/Changed/Fixed に分類し、実装方法ではなく、目に見える変更について説明します。
各実行では content/changelog.d/ の下に専用ファイルを書き込むため、同時期にオープンしている PR の項目が競合することはありません。確定済みのアーカイブは content/changelog.json で、npm run changelog:compact をときどき実行して、断片をまとめます。1 日が終わると(太平洋時間)、.github/workflows/releases.yml がリリースを作成します。遅れて追加された項目は、その日のリリースノートを更新します。
ユーザー向けの変更があるのに項目がない PR には、PR コメントでリマインドします。ただし自動入力は行わないため、項目は必ず手書きの文章(簡潔で、内容を吟味したもの)になります。項目なしで PR がマージされた場合、その日のリリースから変更が省かれ、後から追記されるまで掲載されません。ユーザー向けではない作業の場合は、PR タイトルに接頭辞(refactor:、chore:、ci:、test:、docs:、build:)を付けるか、skip-changelog のラベルを付けてください。perf: と style: は訪問者が気づく変更なので対象外です。
ライセンス
コードはMITライセンスです。seed/ 内のギアカタログデータは別のライセンスで提供されています。詳しくは
seed/LICENSE.md をご覧ください。
クライアントに同梱されているライブラリに関するサードパーティのライセンス表記は、
public/licenses.txt に記載されており、/licenses.txt で配信されます。このファイルがあるのは、Mahonia が依存関係を CDN から読み込まずに同梱しているためです(CDN の
<script> は、location.hash からリストの編集トークンを読み取る可能性があります)。そのため、サイトの配信はこれらのコードの再配布にあたります。また、ミニファイアーによって、これらのライブラリが著作権表示を記載しているバナーコメントが削除されます。依存関係のコードがブラウザーに届くようになったら、項目を追加してください。サーバー専用のパッケージは再配布されないため、記載しません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。