Skip to main content
Glama
Pozzitron1337

fridge-mcp

README.md
# fridge-mcp

MCP-сервер: что лежит в холодильнике.

## Возможности

| Тип | Имя | Описание |
| --- | --- | --- |
| tool | `list_fridge` | Показать всё содержимое |
| tool | `add_to_fridge` | Положить продукт |
| tool | `remove_from_fridge` | Взять / съесть / выкинуть |
| tool | `check_fridge_item` | Проверить конкретный продукт |
| tool | `expiring_soon` | Что скоро испортится |
| resource | `fridge://contents` | JSON всего холодильника |
| prompt | `whats_for_dinner` | Идея ужина из того, что есть |

Данные: `data/fridge.json` (или `FRIDGE_DATA_PATH`).

## Локально

```bash
npm install
npm run build
```

### Stdio (Cursor / Claude Desktop)

```json
{
  "mcpServers": {
    "fridge": {
      "command": "node",
      "args": ["/absolute/path/to/fridge-mcp/dist/index.js", "--stdio"]
    }
  }
}
```

### HTTP (локально)

```bash
npm run start:http
```

- Health: `GET http://localhost:3000/`
- MCP: `POST http://localhost:3000/mcp`

## Render

В Web Service:

| Поле | Значение |
| --- | --- |
| Build Command | `npm install && npm run build` |
| Start Command | `node ./dist/index.js` |
| Instance | Free ок |

`PORT` Render выставит сам — сервер поднимет HTTP автоматически.

После деплоя отдай разработчику:

```
URL:   https://<твой-сервис>.onrender.com/mcp
Token: <значение MCP_ACCESS_TOKEN>
Header: Authorization: Bearer <token>
```

В Render → Environment добавь:

```
MCP_ACCESS_TOKEN=твой_секретный_токен
```

Клиент (пример):

```ts
new StreamableHTTPClientTransport(new URL("https://....onrender.com/mcp"), {
  requestInit: {
    headers: { Authorization: `Bearer ${token}` },
  },
});
```

Клиент должен говорить по **Streamable HTTP MCP**, не по обычному REST.

На Free инстанс засыпает без трафика; диск не персистентный — правки холодильника могут сброситься после рестарта.

TDQS

A4.1/5.0

Scored across 5 tools

Disambiguation5/5

Each tool performs a distinct operation: listing all items, adding, removing, checking existence, and getting expiring items. There is no meaningful overlap between them, and even the similar list/check pair is clearly differentiated by scope.

Naming Consistency5/5

All tool names use consistent snake_case with clear verb-first patterns (list_, add_, remove_, check_) plus the query-style expiring_soon. The naming style is uniform and predictable.

Tool Count5/5

With 5 tools, the server is well-scoped for a fridge inventory domain. Each tool serves a core need without bloat, making the set easy to navigate and use.

Completeness4/5

The set covers the main lifecycle: add (create), list/check/expiring (read), and remove (delete). The only notable gap is the lack of an update operation for product details like expiration date, which can be worked around by re-adding.

Maintenance

ActivityStale
ResponsivenessNo issues