The photo preservation notebookIndependent guides. Primary sources.
Photo Archive Notes

One purpose · on your device

Photo storage planner extension and local MCP

Plan photo-copy capacity from numbers you enter. No photos, files, browser tabs or cloud accounts are accessed.

Extension 1.0.0 · Calculation rule 2026-11-05.2 · Guide updated

One calculation, three local interfaces

Enter the photo count, average file size in MB or MiB, total number of complete copies and optional planning headroom. The result distinguishes logical capacity for one complete copy, all copies together, and capacity including the stated headroom. Decimal GB and binary GiB stay separately labelled. Copies includes the original if you count it as a retained complete copy.

The website, extension popup and MCP tool use the same versioned pure calculation. This is an estimate from your inputs. It neither scans storage nor creates a backup, and capacity alone cannot establish independent copies, successful backup or recoverability.

Permissions and input handling

The Manifest V3 extension requests no Chrome permissions and no host permissions. It has no service worker or content script. The popup has no file picker, account login, network request, analytics or persistent storage. Input numbers are processed locally and disappear when the popup closes. It does not read tabs, browsing history, cookies, photographs or cloud accounts.

All executable code is bundled in the package. The extension uses a self-only script policy with no remote code, inline JavaScript or eval. Opening this guide is ordinary browser navigation, not permission for the extension to inspect a site.

Install as an unpacked Chrome extension

  1. Download and extract the versioned ZIP into a folder you will keep. The selected extension folder must contain manifest.json, the popup files and the bundled vendor directory.
  2. Open chrome://extensions in Chrome and enable Developer mode.
  3. Choose Load unpacked and select that extracted folder. Do not select the ZIP itself.
  4. Open the extension from Chrome’s Extensions menu, optionally pin it, and enter your planning numbers.

This is a developer-mode package. No Chrome Web Store listing or automatic update channel is claimed. For an update, extract the new package and use the extension’s reload control or load the new folder. Chrome’s official unpacked-install instructions describe the process.

Manual checks before relying on an estimate

  1. Enter 1,000 photos, 5 MB each, two complete copies and 10% headroom. Expect 5 GB logical per copy, 10 GB logical total, 5.5 GB planned per copy and 11 GB planned total. The total is about 10.244548 GiB.
  2. Change MB to MiB and verify that the separately labelled capacity changes. Clear optional headroom to use zero.
  3. Try a negative count, a fractional copy count, a blank required size and an oversized plan. Confirm a clear error rather than a valid result.
  4. Use the keyboard to submit and reset, verify labels and focus, and confirm that an edit clears the old result.
  5. Inspect the extension’s permissions and popup developer console. Local automated tests do not claim that these manual Chrome checks were performed.

Use the local MCP server

The source repository includes a real MCP server with two allowed tools: photo_storage_plan and get_photo_tool_manifest. It has no file, URL, shell, cloud-account or write tool. Install the pinned dependencies from the repository and connect a trusted local MCP client using an absolute path:

{
  "mcpServers": {
    "photo-storage-planner": {
      "command": "node",
      "args": ["/absolute/path/overseas-web-lab/mcp/server.mjs"]
    }
  }
}

The default transport is stdio: only MCP protocol messages go to stdout. The calculation arguments are numbers, not file paths:

{"photo_count":1000,"average_size":5,"size_unit":"MB","copies":2,"headroom_percent":10}

The public tool manifest documents the same schemas, source links and calculation rule. It contains no Google search data, credentials or private evidence.

Optional HTTP transport is not a hosted service

HTTP is disabled by default. For a local checkout, first configure a random MCP_HTTP_TOKEN of at least 32 characters in your environment, then run npm run mcp:http. The explicit Streamable HTTP endpoint defaults to http://127.0.0.1:3333/mcp. Set the same token in the trusted MCP client’s Authorization bearer header. Do not put it into the extension, a URL or this public guide. A session ID is never authentication.

MCP_HTTP_HOST, MCP_HTTP_PORT and MCP_MAX_REQUEST_BYTES configure the local listener; the default request ceiling is 16,384 bytes. Follow mcp/README.md for Origin/Host validation and client examples. The CLI refuses external binding. A separate reviewed deployment adapter must provide TLS and audience-bound OAuth verification before an external listener can be enabled; the local shared token is not a complete remote OAuth implementation.

This project has not opened a tunnel, provisioned a remote service or deployed a public MCP endpoint. MCP transports and MCP authorization explain the official requirements.

Calculation scope and primary guidance

Mean size is an assumption: exports, metadata, videos, edits and duplicate handling may require extra capacity. Headroom is a user-chosen planning percentage, not measured usage. No purchase, storage-provider recommendation or recovery guarantee follows from this result.

All Photo Archive Notes tools