How to give Claude access to files

Published 2026-04-22 · 6 min read

There are three mainstream ways to give Claude access to files: upload them in the chat, run a filesystem MCP server pointing at a directory, or enrich a directory with LLMind and expose it via MCP so Claude reads structured metadata alongside raw content. Each path has its tradeoffs. This page compares them and links to the concrete setup guides.

Option 1: Upload in the chat

The default experience. Open a Claude conversation, drag a file into the chat window, and Claude processes the file for the session. You can ask questions about the file, request summaries, extract data, or compare it to other files you upload. Claude reads the file and answers immediately.

Limits: per-conversation only. If you close the chat and start a new conversation, Claude no longer has access to the file—you would need to upload it again. There are also size caps (varies by file type and platform), and privacy considerations if you are using hosted Claude rather than self-hosted or Claude Desktop.

Best for: one-off questions about a single file, quick analysis, ad-hoc data extraction. No setup required. Works everywhere Claude is available—web app, desktop, API.

Option 2: Filesystem MCP server

Claude Desktop and other MCP-compatible tools support Anthropic's reference filesystem MCP server (@modelcontextprotocol/server-filesystem). Configure Claude Desktop's claude_desktop_config.json to run the server pointed at a directory on your machine.

Once configured, Claude can read any file in that directory on demand—no re-upload needed, and the configuration persists across sessions. Claude calls the MCP server, which reads the file and returns it to Claude for processing. The file stays on your machine; Claude Desktop reads it locally (or via your network, depending on setup).

Limits: requires Claude Desktop or a local MCP-compatible tool; not available in the web app. Files are read raw—Claude parses PDFs, images, audio fresh on every query. For large corpora or files that benefit from parsing, this can be slow or expensive if Claude needs to parse the same file multiple times.

Best for: ongoing working directories, persistent access across sessions, avoiding repeated uploads. See the detailed setup guide at /mcp/claude-desktop/.

Option 3: LLMind-enriched directory + MCP

Same as Option 2, but with enriched files. Before pointing Claude at the directory, run:

llmind enrich --recursive ~/docs/

Each file in the directory now carries a signed semantic layer in its XMP metadata packet. When Claude reads a file through the MCP server, it gets both the raw content and the pre-computed metadata—description, entities, structural summary, extracted text from images/PDFs, transcriptions from audio. Rich context without re-parsing.

The semantic layer is compressed and signed with HMAC-SHA256, so it travels portably with the file. If the file changes, the signature detects staleness. If someone alters the layer, the signature fails.

Limits: requires the enrich step upfront, and the CLI works best on Unix-like machines (Linux, macOS). Once enriched, the semantic layer is read-only—updating the file's content requires re-enriching. For actively changing directories, you would need to re-enrich periodically.

Best for: structured context without a vector DB, fast agent iteration, pre-parsed content, complex file types (PDFs, images, audio where parsing is expensive or lossy). Works well with AI agents that read many files and benefit from pre-computed structure.

Which to pick

Use Option 1 (upload) for one-off questions. Fastest to get started; no configuration. Best for research, quick analysis, or single files. Works in the web app.

Use Option 2 (filesystem MCP) for an ongoing working set. You will want to access the same files repeatedly without re-uploading. Requires Claude Desktop. Good for reference directories, ongoing projects, or maintaining a knowledge base across sessions.

Use Option 3 (LLMind + MCP) when you want structured context without additional infrastructure. Especially valuable when files benefit from pre-computation: PDFs with complex layouts, scanned images, audio files, unstructured documents. Enrichment lives inside the file, travels with it, and Claude reads it automatically.

All three coexist. You can use all three in the same day: upload a file to a quick conversation (Option 1), maintain a persistent working directory via MCP (Option 2), and enrich a reference corpus that Claude queries regularly (Option 3). Pick the right tool for each use case.

How enrichment changes the equation

Without enrichment, Option 2 (filesystem MCP) scales poorly as file counts grow. Claude has to parse every file it reads, every time it reads it. For a 200-page PDF, that is eight seconds of OCR per query. For a directory of 50 PDFs, Claude reading even a few of them becomes slow.

With enrichment (Option 3), the expensive parsing happens once, upfront. Claude reads the cached layer instead of re-parsing. A 200-page PDF becomes a few milliseconds to read, because the structure, text, entities, and summary are already extracted and signed inside the file. For agents querying multiple files or asking complex questions that require reading many files, this compounds. You see 10x speedups compared to raw file reads.

For small, stable reference directories where files do not change often, enrichment pays off immediately. For actively-changing working directories, the math is different—you would be re-enriching frequently. Pick Option 3 for stable corpora, Option 2 for actively-changing directories.

FAQ

Can Claude read PDF metadata?

Yes. When the MCP server returns a file, Claude can read its XMP metadata packet. If the file is LLMind-enriched, Claude parses the semantic layer—description, entities, structural summary—alongside the raw content. It works automatically; no special configuration needed.

Does Claude re-parse my files every time?

With the default filesystem MCP server, yes—Claude reads and parses files fresh on each call. With LLMind-enriched files, the pre-computed semantic layer sits inside the file, so Claude gets both the raw bytes and pre-structured metadata. The layer is already extracted, not re-parsed.

How do I make a file readable by Claude?

Either upload it directly to the conversation (one-off, per-session), or expose a directory via an MCP server (persistent, across sessions). If you use an MCP server, enrich the directory with llmind enrich --recursive ~/docs first to add structured metadata.

Is the XMP layer private?

The XMP layer lives inside the file—its privacy is the file's privacy. If you share the file with someone, they can read the metadata. If the file stays on your machine or a private server, the layer is private. Use cases involving sensitive files should audit what metadata enrichment contains.

Explore more