| author | copyright | version |
|---|---|---|
Jerry Jackson (Uncle Tallest) |
© 2026 Jerry Jackson. All rights reserved. |
v0.3.1 |
Local filesystem access for claude.ai browser users.
The Claude Desktop app can read and write your local files through MCP filesystem tools. If you use claude.ai in a browser tab, you don't get those tools by default.
Aperture fixes that. It runs a local bridge on your computer and exposes it to claude.ai via a secure public tunnel -- no Desktop app required.
claude.ai (browser) → HTTPS → Serveo tunnel → Aperture MCP server → Your filesystem
Three components run on your machine:
aperture.py-- HTTP bridge on localhost:8765, handles filesystem operationsaperture-mcp-server.py-- MCP SSE server on localhost:10000, translates MCP protocol to bridge calls- Serveo tunnel -- SSH-based tunnel, gives claude.ai a public HTTPS URL to reach your machine
Claude gets seven filesystem tools: read_file, write_file, list_directory, create_directory, move_file, get_file_info, list_allowed_directories.
Security: localhost-only bridge, session tokens, explicit directory allowlist. You control exactly what Claude can access.
bash install-aperture.shThe installer handles everything: dependency checks, Python packages, directory setup, subdomain configuration, and optional systemd autostart. Takes 2-3 minutes.
Requirements: Python 3.10+, pip, SSH client
# Install Python dependencies
pip install flask flask-cors mcp httpx starlette uvicorn --break-system-packages
# Start the bridge
python3 aperture.py start --allow ~/Documents/claude-work
# In another terminal, start the MCP server
python3 aperture-mcp-server.py --port 10000
# In another terminal, start the tunnel
ssh -R aperture-myname-myhostname:80:localhost:10000 serveo.netAfter install, aperture-start.sh manages everything:
# Start (reads config from ~/.aperture.conf)
aperture-start.sh
# Check status and get current connector URL
aperture-start.sh --status
# Stop all processes
aperture-start.sh --stop
# Start with specific directories
aperture-start.sh --allow ~/Documents --allow ~/ProjectsOn startup, Aperture prints the connector URL to paste into claude.ai:
┌─────────────────────────────────────────────────────┐
│ Aperture is running │
├─────────────────────────────────────────────────────┤
│ Connector URL (paste into claude.ai): │
│ https://aperture-yourname-yourhostname.serveo.net/sse
└─────────────────────────────────────────────────────┘
Register in claude.ai: Settings → Connectors → + → Custom MCP Server → paste URL.
Config lives at ~/.aperture.conf (created by installer):
SUBDOMAIN="aperture-yourname-yourhostname"
ALLOW_DIRS=(
"/home/yourname/Documents"
"/home/yourname/Projects"
)Edit this file to change allowed directories or subdomain, then restart Aperture.
- Bridge binds to
127.0.0.1only -- not accessible from your network - Session tokens are 32-byte cryptographically random values, 24-hour expiry
- All filesystem operations validated against the allowlist before execution
- Serveo tunnel is outbound SSH only -- no inbound ports opened on your machine
- CORS restricted to
claude.aiandlocalhostorigins
Connector URL not connecting:
aperture-start.sh --status
curl http://localhost:10000/healthInvalid token errors:
Token is regenerated each time the bridge starts. If the MCP server has a stale token, restart everything with aperture-start.sh.
Serveo subdomain taken:
Edit ~/.aperture.conf and change SUBDOMAIN to something unique, then restart.
Port already in use:
aperture-start.sh --stop
aperture-start.shLogs:
~/.aperture-logs/bridge.log
~/.aperture-logs/mcp.log
~/.aperture-logs/tunnel.logAperture is a tool in the Continuity Bridge ecosystem. If you're using Continuity Bridge, Aperture gives web instances the same filesystem access that Desktop app instances have natively.
Install path in Continuity Bridge: Tools/aperture/
| Platform | Status |
|---|---|
| Linux | Supported |
| macOS | Should work, untested |
| Windows | Not yet supported |
| Android | Not applicable |
Same license as Continuity Bridge. See LICENSE in the main repository.
Architecture & implementation: Uncle Tallest (Jerry Jackson) & Vector (Claude instances)
Part of: Continuity Bridge