DEV Community

Hardik Patel
Hardik Patel

Posted on

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

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

The Problem

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.

What you get

  • JuiceFS volumes mounted under one install root
  • Filebrowser on http://127.0.0.1:8080 (human UI)
  • MCP tools for AI clients: health_check, list_storage_backends, read_file, write_file, list_directory, and more
  • Path isolation — agents cannot escape the MeshDrive root
  • Optional OpenFGA for authorization (free add-on)

GitHub:vix-gateway/MeshDrive

Docs: MCP clients guide

Install on Ubuntu/Debian (.deb)

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

Enter fullscreen mode Exit fullscreen mode

Create storage (one-time)

meshdrive-tui

In the TUI: Storage → Add backend → Mount. Then open Filebrowser: http://127.0.0.1:8080

Enable the MCP add-on (free)

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.

Connect Cursor (stdio — recommended)

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"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode
  1. Cursor Settings → MCP → enable meshdrive
  2. In chat: “Use meshdrive health_check”
  3. Then: “list_storage_backends” and “list_directory /opt/meshdrive/mnt/…”

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.

Cursor on Local, MeshDrive on Remote (SSH bridge)

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

Enter fullscreen mode Exit fullscreen mode

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

Connect Claude Code (stdio)

On the MeshDrive host:

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

claude mcp list
Enter fullscreen mode Exit fullscreen mode

In a session: “Call meshdrive health_check and list_storage_backends.

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

Connect Hermes + open-source models (stdio)

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:
Enter fullscreen mode Exit fullscreen mode
mcp_servers:
  meshdrive:
    command: /opt/meshdrive/bin/meshdrive-mcp
    args: []
    env:
      MESHDRIVE_ROOT: /opt/meshdrive
      MESHDRIVE_MCP_TRANSPORT: stdio
    enabled: true
Enter fullscreen mode Exit fullscreen mode

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.

Connect Hermes + open-source models (HTTP/SSE)

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

Enter fullscreen mode Exit fullscreen mode

hermes mcp test meshdrive

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

Architecture in one sentence

    AI client (stdio) → meshdrive-mcp → isolated paths under /opt/meshdrive → JuiceFS mounts
Enter fullscreen mode Exit fullscreen mode

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

Try it

  1. Install the .deb
  2. meshdrive-tui → add storage
  3. meshdrive-addons install mcp
  4. Paste stdio config into Cursor or Claude or Hermes
  5. Ask: “Use meshdrive to list my storage backends”

Issues & feedback: GitHub Issues on that repo.

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

Top comments (0)