# Give your AI agent a real local drive — MeshDrive 2.0 + MCP (stdio)

> Source: <https://dev.to/hardikprl94/give-your-ai-agent-a-real-local-drive-meshdrive-20-mcp-stdio-472a>
> Published: 2026-09-13 13:40:34+00:00

_ Local-first JuiceFS storage for Linux, with MCP tools for Cursor, Claude Code, and Hermes.

_

Most AI agents can read files — but only if you point them at random folders on your laptop. That’s fragile, hard to isolate, and useless when you want **durable storage** (multi-volume, quotas, web UI) that agents can use safely.

**MeshDrive** is a local-first Linux storage layer (JuiceFS + SQLite metadata) with a terminal UI, loopback Filebrowser, and a **free MCP server** so agents can list, read, and write files **only inside an isolated root** (/opt/meshdrive by default).

No cloud required for the free tier.. Your data stays on your disks.

GitHub:[vix-gateway/MeshDrive](https://github.com/Hardik94/vix-gateway/tree/master) 

Docs: [MCP clients guide](https://github.com/Hardik94/vix-gateway/blob/master/meshdrive/docs/mcp-clients.md)

**Requirements:** Ubuntu/Debian amd64, FUSE, Python 3.10+, outbound HTTPS on first install.

`curl https://github.com/Hardik94/vix-gateway/releases/download/v2.0.0/meshdrive_2.0.0_amd64.deb`

`sudo dpkg -i meshdrive_2.0.0_amd64.deb`

**Verify:**

```
meshdrive doctor
meshdrive status
sudo systemctl status meshdrive-agent
```

**Create storage (one-time)**

`meshdrive-tui`

In the TUI: **Storage → Add backend → Mount**. Then open Filebrowser: [http://127.0.0.1:8080](http://127.0.0.1:8080)

`sudo meshdrive-addons install mcp`

**Smoke test** (no LLM needed — proves MCP works):

/opt/meshdrive/venv/bin/python packaging/mcp-smoke-test.py --stdio

You should see: tools (8) and health_check → PASS.

Run **Cursor on the same machine** as MeshDrive (or use SSH — see below).

Create .cursor/mcp.json in your project (or ~/.cursor/mcp.json globally):

```
{
  "mcpServers": {
    "meshdrive": {
      "command": "/opt/meshdrive/bin/meshdrive-mcp",
      "args": [],
      "env": {
        "MESHDRIVE_ROOT": "/opt/meshdrive",
        "MESHDRIVE_MCP_TRANSPORT": "stdio"
      }
    }
  }
}
```

**Why stdio?** Cursor’s URL mode often uses Streamable HTTP. MeshDrive’s HTTP mode is legacy SSE (GET /sse + POST /messages/). **stdio avoids that mismatch entirely.**

```
{
  "mcpServers": {
    "meshdrive": {
      "command": "ssh",
      "args": [
        "user@YOUR_SERVER_IP",
        "MESHDRIVE_ROOT=/opt/meshdrive",
        "MESHDRIVE_MCP_TRANSPORT=stdio",
        "/opt/meshdrive/bin/meshdrive-mcp"
      ]
    }
  }
}
```

Set up passwordless SSH first (`ssh-copy-id`).

On the MeshDrive host:

```
claude mcp add meshdrive \
  --env MESHDRIVE_ROOT=/opt/meshdrive \
  -- /opt/meshdrive/bin/meshdrive-mcp

claude mcp list
```

In a session: “*Call meshdrive health_check and list_storage_backends.*”

Project-level config (**.mcp.json**) — same JSON as Cursor’s **mcpServers** block.

**Run Hermes on the MeshDrive machine** (same host as Ollama). Do not use HTTP/SSE for local models — many never trigger tool_calls.

```
~/.hermes/config.yaml:
mcp_servers:
  meshdrive:
    command: /opt/meshdrive/bin/meshdrive-mcp
    args: []
    env:
      MESHDRIVE_ROOT: /opt/meshdrive
      MESHDRIVE_MCP_TRANSPORT: stdio
    enabled: true
```

`hermes mcp test meshdrive`

Use a model with solid function-calling (e.g. Qwen2.5, Llama 3.1+). Set context ≥ 8192 so tool schemas aren’t truncated.

```
~/.hermes/config.yaml:
mcp_servers:
  meshdrive:
    url: "http://localhost:9000/sse"
    transport: sse
    enabled: true
    connect_timeout: 30
```

**Release message:** “*MeshDrive MCP works today with Cursor, Claude Code, and Hermes via stdio.*”

```
    AI client (stdio) → meshdrive-mcp → isolated paths under /opt/meshdrive → JuiceFS mounts
```

Humans use Filebrowser; agents use MCP. Same storage, different interfaces.

**Try it**

**Issues & feedback:** GitHub Issues on that repo.

MeshDrive 2.0 — local-first storage for the agentic era. Built by Vistrix Labs.
