内容
# 梅尔希奥 MCP
一个小型的 [模型上下文协议](https://modelcontextprotocol.io) 服务器,实时公开您 [梅尔希奥](https://compte.melchior.pro) 连接的冰箱内容给任何 MCP 兼容的客户端(Claude Code、Claude Desktop 等)。
它提供一个单独的 **只读** 工具:
| 工具 | 描述 |
| --- | --- |
| `get_fridge` | 返回您冰箱中当前的内容,按类别(菜肴 / 甜点 / 其他)分组,并显示每种物品的数量。 |
## 工作原理
服务器使用您的账户(与网站使用的相同的 Laravel CSRF + `ajax_login` 握手)登录 `compte.melchior.pro`,抓取 `/mon-frigo` 页面,并将其解析为结构化的 JSON。单个 HTTP 客户端在调用之间保持会话 cookie 存活,只有在会话过期时(约 2 小时)才重新认证。
示例输出:
```json
{
"source": "https://compte.melchior.pro/mon-frigo",
"total_items": 12,
"categories": [
{
"category": "菜肴",
"items": [
{ "name": "迷迭香鸡", "quantity": 3 },
{ "name": "咖喱鸡", "quantity": 2 }
]
}
]
}
```
## 要求
- [uv](https://docs.astral.sh/uv/)(通过 `melchior_mcp.py` 文件顶部的内联脚本元数据自动处理 Python 和依赖项)
- 梅尔希奥账户
无需手动 `pip install` — `uv run` 读取 `# /// script` 块,并在首次运行时在隔离环境中安装 `mcp`、`httpx` 和 `beautifulsoup4`。
## 配置
凭证从两个环境变量中读取 — **绝不硬编码**:
| 变量 | 描述 |
| --- | --- |
| `MELCHIOR_EMAIL` | 您的梅尔希奥账户电子邮件 |
| `MELCHIOR_PASSWORD` | 您的梅尔希奥账户密码 |
复制 `.env.example` 到 `.env` 并填写您的值(`.env` 文件被 git 忽略),或直接在 MCP 客户端配置中传递它们(参见下文)。
## 快速自测
在没有任何 MCP 传输的情况下运行服务器一次 — 它将冰箱内容作为 JSON 打印并退出:
```bash
MELCHIOR_EMAIL="you@example.com" MELCHIOR_PASSWORD="..." uv run melchior_mcp.py selftest
```
在 Windows PowerShell 上:
```powershell
$env:MELCHIOR_EMAIL="you@example.com"; $env:MELCHIOR_PASSWORD="..."; uv run melchior_mcp.py selftest
```
## 与 Claude Code 配合使用
将服务器添加到您的 MCP 配置中(调整到您克隆存储库的绝对路径):
```json
{
"mcpServers": {
"melchior": {
"type": "stdio",
"command": "uv",
"args": ["run", "--quiet", "/absolute/path/to/melchior-mcp/melchior_mcp.py"],
"env": {
"MELCHIOR_EMAIL": "you@example.com",
"MELCHIOR_PASSWORD": "your-password-here"
}
}
}
}
```
或使用 CLI:
```bash
claude mcp add melchior \
--env MELCHIOR_EMAIL=you@example.com \
--env MELCHIOR_PASSWORD=your-password-here \
-- uv run --quiet /absolute/path/to/melchior-mcp/melchior_mcp.py
```
然后询问您的助手: *"我的冰箱里有什么?"*
## 注意事项
- 本项目为非官方项目,与梅尔希奥无关。
- 它依赖于 `/mon-frigo` 的当前 HTML 布局;如果网站发生变化, `_parse_fridge()` 中的解析器可能需要更新。
## 许可证
MIT — 请参阅 [LICENSE](LICENSE)。