TL;DR: Milvus Lite needs a URI ending in `.db` whose parent directory already exists. `mkdir -p` the parent, use an absolute path ending in `.db`, and the server starts.

```text
Error: Milvus Lite URI must end with .db / parent directory does not exist
```

## Fix it

1. Create the parent directory first:

```bash
mkdir -p [HOME]/...
```

2. Set the URI to an absolute path ending in `.db`:

```json
{
  "env": {
    "MILVUS_URI": "[HOME]/..."
  }
}
```

3. Restart the MCP client.

   Expected: the server starts with Milvus Lite. The first call creates the collection.

## When to use this

- Using Milvus Lite (no server, no cloud) and the server fails at startup.
- The URI is relative or missing the `.db` suffix.

## When NOT to use this

- `MILVUS_URI` points at `http://` or `https://`. That is server/cloud mode; Lite rules do not apply.
- Permission denied on an existing Lite path. That is filesystem permissions.

## Compatibility

- zilliztech/mcp-server-milvus with Milvus Lite (pymilvus + milvus-lite).
- macOS and Linux. Windows cannot run Milvus Lite; connect to a remote deployment instead.

## Why it happens

Milvus Lite is an embedded library, not a server, so the URI is really a filesystem path with conventions: the `.db` suffix tells pymilvus it is a Lite path, and the parent must exist because Lite will not create it. The naming is misleading since the path becomes a directory tree (collections/, databases/, LOCK), not one file.

## Edge cases

- Do not point two processes at the same Lite path concurrently. Lite locking is not multi-process safe.
- Back up the whole directory tree, not just a file. The data spans several subdirectories.
- Milvus Lite ignores the database name setting (no named databases in Lite). Leave MILVUS_DB at default.