Virtual Fs vs Anymd

A side-by-side look at the Virtual Fs and Anymd MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Virtual Fs logoVirtual FsFile Systems · Local subprocess (stdio)PostgreSQL-backed virtual filesystem for AI agents with persistent, session-isolated storage.51GoodAuth: not declaredAnymd logoAnymdFile Systems · Local subprocess (stdio)Any file → clean Markdown for AI agents: PDF, Office, EPUB, HTML, images. Local Rust MCP server.73GreatAuth: no auth required

Verdict: choose Virtual Fs for file systems work as a local process; choose Anymd for file systems as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Virtual Fs logoChoose Virtual Fs when

  • You need dedicated capabilities in the File Systems domain.
  • You prefer a local stdio subprocess transport.
  • You have the keys it needs: DATABASE_URL.
  • You want tools like read, write, append.
Explore Virtual Fs

Anymd logoChoose Anymd when

  • You need dedicated capabilities in the File Systems domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: No auth required.
  • You want tools like inspect, outline, read.
Explore Anymd

Feature & specification comparison

Rows where the two servers differ are marked.

SpecVirtual Fs logoVirtual FsAnymd logoAnymd
CategoryFile SystemsFile Systems
Quality signal51/100 · Good73/100 · Great
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNot declaredNo auth required
PricingNot declaredFree
Required env varsDATABASE_URLNone listed
Verified ownerCommunity listingCommunity listing
GitHub stars31,051
Directory activity 1 views 0 installs 0 upvotes 5 views 0 installs 0 upvotes
Tools114

Tools & capabilities

Virtual Fs tools 11

  • readRead file contents
  • writeWrite file (creates parents automatically)
  • appendAppend to file (creates if missing)
  • statCheck existence and get metadata
  • lsList directory (dirs first, then alphabetical)
  • mkdirCreate directory and parents (mkdir -p)
  • rmRemove file or directory recursively
  • mvMove/rename file or directory
  • globFind files by glob (e.g., `**/*.ts`, `**/*.{js,ts}`)
  • grepSearch file contents by regex
  • storesList all persistent store names

Anymd tools 4

  • inspectDocument and media evidence when Markdown is not enough. video_timeline (bounded scene/cue timeline) and render_frame (actual decoded frames), and cite_check (quote/location support, not semantic truth), are anymd Pro; PDF operations: inspect (page facts, metadata), render_page (PNG images), extract_regions (crop bounding boxes), ocr_pages / analyze_regions (configured OCR or vision provider), structure (JSON with document map, elements, geometry; profile quality|research adds trust and accessibility reports), compare (page-level diff of sources[0] vs sources[1]).
  • outlineReturn a document heading tree with stable node ids, title paths, page/slide/chapter ranges and Markdown byte ranges. PDF bookmarks or detected headings, Word headings, PowerPoint slides, EPUB chapters and headings, HTML and Markdown. format json (default) or tree. Pass a node id to read to fetch that section.
  • readRead any document as clean Markdown: PDF, Word (DOCX), PowerPoint (PPTX), Excel (XLSX/XLS/ODS), CSV, EPUB, HTML or a web URL, Markdown/text, images (metadata + OCR), audio/video (metadata, chapters, subtitles). Pages/slides/sheets carry <!-- page N --> style markers for citation. Long documents stop at max_tokens (default 20000) and end with a cursor to continue; choose pages with pages: "1-5,8". A directory returns its readable files.
  • searchSearch documents for text: one file, many files, whole directories (recursive, .gitignore aware), or URLs, across every format read supports. Returns each hit as file + page/slide/sheet + a snippet with the match in bold. mode auto (default) finds the exact phrase and falls back to BM25-ranked passages when there is none; literal or ranked force one. Narrow directories with glob, e.g. "*.pdf".

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Virtual Fs

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "virtual-fs": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-virtual-fs"
      ],
      "env": {
        "DATABASE_URL": "YOUR_DATABASE_URL_HERE"
      }
    }
  }
}

Anymd

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "anymd": {
      "command": "npx",
      "args": [
        "-y",
        "@sylphx/anymd"
      ]
    }
  }
}

Frequently asked questions

Virtual Fs is categorized under File Systems and uses a local stdio subprocess. Anymd belongs to File Systems and uses a local stdio subprocess. Pick Virtual Fs for file systems work and Anymd for file systems.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Virtual Fs has no declared pricing — check the project's own site. Anymd is listed as free. Auth: no auth required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add virtual-fs and anymd as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Virtual Fs has a quality signal of 51/100 (Good) with 1 views, 0 installs and 3 GitHub stars. Anymd has 73/100 (Great) with 5 views, 0 installs and 1,051 GitHub stars.