Claude Local Files banner
runekaagaard runekaagaard

Claude Local Files

Development community

Description

Serve local files to Claude Desktop via HTTPS for use in code artifacts.

Installation

This entry records only its repository, not the path inside it, so there is no exact command to give. Open the source below and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

README

Claude Local Files

Artifacts in Claude Desktop can only access cdn.jsdelivr.net/pyodide/* due to Content Security Policy restrictions. This app bypasses that restriction and allows Claude Desktop artifact and analysis tools to fetch local files and use them for calculations, UI's, etc.

I use it with [mcp-alchemy](https://github.com/runekaagaard/mcp-alchemy/) to have Claude Desktop generate UI reports for database result sets that are way too large for an LLM to read.

How it works

  1. Adds a line in /etc/hosts that points cdn.jsdelivr.net to 127.0.0.1
  2. Uses mkcert to generate a valid local SSL certificate for cdn.jsdelivr.net
  3. Starts a caddy server that proxies all other requests than to a specfic url folder to Fastly
  4. Files in the ./files directory are served at https://cdn.jsdelivr.net/pyodide/claude-local-files/[FILENAME]
  5. Removes the line in /etc/hosts on exit

Installation

Ubuntu/Debian

# Install dependencies
sudo apt update
sudo apt install mkcert caddy

macOS

# Install dependencies
brew install mkcert caddy

Windows

Run in an elevated powershell (as administrator):

# Install dependencies
winget install CaddyServer.Caddy
winget install FiloSottile.mkcert

# Run the script
./claude-local-files.ps1

Usage

  1. Clone and enter the repository:
git clone https://github.com/runekaagaard/claude-local-files.git
cd claude-local-files
  1. Start the server:
./claude-local-files.sh
  1. Add your files to the `files/` directory

  2. Ask Claude Desktop to use the content of the file in a code artifact, e.g. https://cdn.jsdelivr.net/pyodide/claude-local-files/test.json

Testing

Test that the local server works:

curl -v https://cdn.jsdelivr.net/pyodide/claude-local-files/test.json

Test that CDN passthrough works:

curl -v https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js

Generating URLs

To serve a file:

  1. Place it in the files/ dire