Skip to main content

MCP server that gives AI clients direct access to your local filesystem — save, find, and organize files using natural language

Project description

Vault — MCP File Server

An MCP (Model Context Protocol) server that gives any AI client — Claude Desktop, Claude Code, ChatGPT, etc. — direct access to your local filesystem. Save AI-generated content, copy files between folders, download from URLs, and organize your machine using natural language.

What makes it different

Most MCP file tools require you to know and type exact paths. Vault's find_folder tool lets you say "save this to my distributed systems folder" and Claude finds the right path itself — no copy-paste required.


Quickstart

1. Install

# Zero-install (recommended) — runs directly from PyPI
uvx ai-vault-mcp

# Or install permanently
pip install ai-vault-mcp

2. Add to your MCP client

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on Mac):

{
  "mcpServers": {
    "vault": {
      "command": "uvx",
      "args": ["ai-vault-mcp"]
    }
  }
}

Claude Code:

claude mcp add vault -- uvx ai-vault-mcp

HTTP mode (for remote clients or Docker):

uvx ai-vault-mcp --transport http --host 0.0.0.0 --port 8000

3. First-run setup

The first time you ask Claude to do anything with files, it'll say:

"Where would you like to save your files? You can point me to an existing folder (e.g. ~/Documents) or I can create a fresh ~/Documents/Vault folder just for AI-generated files."

Answer in plain English. Claude calls configure under the hood, saves your choice to ~/.ai-vault-mcp/config.json, and never asks again.


Tool reference

Tool What it does
configure First-run setup — sets allowed roots and default save location
find_folder Find a folder by name without knowing the exact path
save_content Save text, markdown, or code to a file
save_binary Save base64-encoded binary content (images, zips)
download_file Download any URL to a local folder
copy_file Copy a file from anywhere on the machine into your vault
move_file Move or rename a file
list_files Browse a directory (with optional glob filter)
create_directory Create a new folder
read_file Read a text file's contents
get_file_info File metadata: size, hash, MIME type, timestamps
get_server_config Show current configuration

Configuration

Variable Default Description
VAULT_LOG_LEVEL INFO Logging verbosity (DEBUG, INFO, WARNING, ERROR)
VAULT_RATE_LIMIT_PER_MINUTE 60 Max tool calls per tool per minute
MCP_FILE_SERVER_MAX_SIZE_MB 500 Max download size in MB
MCP_FILE_SERVER_ALLOWED_ROOTS (from config file) Override allowed roots (colon-separated paths)
MCP_FILE_SERVER_BASE_DIR (from config file) Override default save location
PORT 8000 Port for HTTP transport (read automatically in cloud environments)

Env vars take priority over ~/.ai-vault-mcp/config.json.


Security model

  • Sandboxed writes — all file operations are restricted to paths within your configured allowed roots
  • Path traversal protection — every path is resolved and validated before use; ../ escapes are blocked
  • Blocked extensions.exe, .bat, .ps1, .cmd, .msi, .js, and other dangerous types are always rejected
  • No silent overwritessave_content and copy_file refuse to overwrite existing files
  • No delete tool — file deletion must be done manually; Claude cannot delete files
  • Rate limiting — configurable per-tool call rate limit prevents runaway loops
  • Unrestricted source readscopy_file and move_file can read from anywhere on the machine; only the destination is sandboxed

Docker

docker build -t vault .
docker run -p 8000:8000 \
  -e VAULT_RATE_LIMIT_PER_MINUTE=30 \
  -v ~/.ai-vault-mcp:/home/vault/.ai-vault-mcp \
  vault

Point your MCP client to http://localhost:8000/mcp. Health check: GET http://localhost:8000/health.


Development

# Clone and set up
git clone https://github.com/yashderasari/vault.git
cd vault
uv sync

# Run tests
uv run pytest tests/ -v

# Inspect logs (logs go to stderr)
uv run python server.py 2>vault.log

# MCP Inspector
uv run mcp dev server.py

Trust

This server can be submitted to the MCP Trust Framework for an independent security assessment once you're ready to ship publicly.


License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ai_vault_mcp-0.1.2.tar.gz (14.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ai_vault_mcp-0.1.2-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file ai_vault_mcp-0.1.2.tar.gz.

File metadata

  • Download URL: ai_vault_mcp-0.1.2.tar.gz
  • Upload date:
  • Size: 14.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ai_vault_mcp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 e15c8d04f28358137a42b3b8f48d9a952cc6eae16895e4f0368aff24fb9271ac
MD5 85ce246ed9ff7b32d931e7ae3732cec9
BLAKE2b-256 0790368225d95f22e9b635c5200b2d1976abddaa889618e0c57eadc530791837

See more details on using hashes here.

File details

Details for the file ai_vault_mcp-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: ai_vault_mcp-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.16 {"installer":{"name":"uv","version":"0.11.16","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for ai_vault_mcp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 661c80a1a3bbdb1b88084fc470a84478fb20c12fdb929448dff2df848413c3f6
MD5 0c3d5f89961f0a37d0a498ae12ee92fc
BLAKE2b-256 b659c774866191ce8bd6acabe63727daf8f9afefae8f064f428f5755333528e6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page