关于 Mahonia
Mahonia 是面向徒步者的装备清单与背包重量追踪应用,可用于规划、称重和分享清单。其远程 MCP 服务允许 AI 助手读取共享清单,并凭编辑链接修改清单,无需账户。
主要功能
- 01统计基础、穿戴和消耗品重量
- 02支持逐行单位与消耗品热量
- 03分享只读链接和协作编辑链接
- 04提供打包清单模式
- 05导入和导出多种清单格式
- 06装备目录与可复用装备库
适用场景
- 01徒步前比较背包重量
- 02与他人共同规划装备清单
- 03将清单用作出发前核对表
- 04复用装备并导入现有清单
MCP 相关
`/mcp` 上的远程 MCP 服务提供七种工具,可读取共享清单、搜索装备目录,并在提供编辑链接时修改清单。它不开放需要账户的装备库。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
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
面向徒步者的装备清单和背包重量追踪器。创建打包清单,查看重量, 然后分享。
清单无需注册:开始输入后,清单便归你所有,并由一个私密且不可猜测的链接保存。 装备库是唯一需要账户的部分,因为“我拥有的装备”必须能在不同设备间跟随你, 而不是只存在于某个浏览器中。
功能
- 称量背包。 显示基础装备、穿戴装备和消耗品的总重量,并细分穿戴装备(例如三双 袜子,其中一双穿在脚上)和随身携带的重量。重量为可选项——没有填写重量的清单 不会显示总重量。
- 精心整理的装备目录,可通过自动补全使用,条目附有引用且可以更正,并且每行的 值都可以单独覆盖。
- 每行可设置单位。 在以克为单位的清单中输入
32.5 oz,该行仍以盎司显示, 而总重量保持以克显示。 - 消耗品的卡路里,并汇总清单中的总卡路里。
- 行程日期,以日历日期记录——没有时间和时区,因此乘飞机出行也不会改变行程日期。
- 两种分享方式: 只读链接,以及用于共同规划的编辑链接。如果链接泄露,两种都可以 更换。
- 打包模式——将同一份清单显示为核对清单,方便在出发前一晚使用。
- 装备库会在你整理清单时自动填充,让你下次只需一次选择即可添加装备。
- 导入 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 服务,因此可以直接将
https://mahonia.app/mcp 交给 AI 助手作为连接器,无需安装任何内容,也无需登录。共有七个工具:将共享清单读取为数据或 Markdown、搜索目录、获取某件商品的款式,以及持有编辑链接时创建清单、添加条目并设置行程日期和路线。分享码是读取权限,编辑链接的片段令牌是写入权限;令牌到达后会经过哈希处理,且仅作为工具参数传递,因此不会引入新的信任关系。传输方式是通过 POST 进行无状态 JSON-RPC(MCP 修订版 2025-06-18 和 2025-11-25;无会话、无事件流,GET 返回 405),由 server/routes/mcp.post.ts 手工实现,工具位于 server/utils/mcp.ts;这两个文件都记录了设计理由。我的装备功能刻意不开放:它需要账户令牌,这是另一项独立决策。
将其添加到客户端:
- Claude(claude.ai、桌面版、移动版):将 Mahonia 添加为连接器 并选择“No sign-in”。在此处添加的连接器也可在 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,添加
https://mahonia.app/mcp,并选择“No Authentication”。 - 任何可读取
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:每当有内容发布时,每天发布一个版本,并以日期标记(v2026.09.12),由工作流根据下方条目生成。当变更会影响用户时,请在同一个 PR 中添加一条简单的一句话说明:
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 会不时将片段合并到其中。太平洋时间一天结束后,.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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。