Skip to main content

snapWONDERS MCP Server

snapWONDERS — Expose what's hidden. Hide what's yours.

snapWONDERS MCP

A local MCP server that lets an AI assistant work on files on your own machine — hide a file inside a photo, reveal hidden content, run forensic analysis, or convert between formats.

Claude Desktop ──stdio──▶ snapwonders-mcp ──HTTPS──▶ snapwonders.com/api
   (your machine)          (your machine)

Why this exists

snapWONDERS already has a remote MCP server at https://snapwonders.com/mcp, and for orchestration it works well. But it runs on our servers — so it cannot see your files, and MCP tool calls carry JSON rather than bytes. An assistant with a photo on your desktop could create a session and then have nowhere to put the file.

This server runs where your files are. You give it a path, it reads the file locally and uploads it over HTTPS alongside the conversation. That is the whole difference, and it is what makes snapWONDERS usable from Claude Desktop, which has no terminal for an assistant to fall back on.

Results come back the same way: a hide, reveal or convert writes the output to your disk and tells the assistant where it landed — not an asset id you would need a separate HTTP client to redeem.

Install

You need an API key from https://snapwonders.com/profile/api-keys (free account, and the address must be verified — an unverified account's keys are always rejected).

Nothing to install ahead of time if your client can run uvx:

uvx snapwonders-mcp

Or install it properly:

pip install snapwonders-mcp

Configure your client

Claude Desktop

%APPDATA%\Claude\claude_desktop_config.json on Windows, ~/Library/Application Support/Claude/claude_desktop_config.json on macOS:

{
  "mcpServers": {
    "snapwonders": {
      "command": "uvx",
      "args": ["snapwonders-mcp"],
      "env": { "SNAPWONDERS_API_KEY": "sw_your_key_here" }
    }
  }
}

Claude Code

claude mcp add snapwonders --env SNAPWONDERS_API_KEY=sw_your_key_here -- uvx snapwonders-mcp

Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (project):

{
  "mcpServers": {
    "snapwonders": {
      "command": "uvx",
      "args": ["snapwonders-mcp"],
      "env": { "SNAPWONDERS_API_KEY": "sw_your_key_here" }
    }
  }
}

The key is read from the environment, never taken as a tool argument — so it does not pass through the model's context, where it would end up in transcripts and logs.

Passwords are different, and you should know it. hide_file and reveal_file take the passphrase as a tool argument, because only the user can supply it and it changes per call. That means it does pass through the model's context and may appear in client logs and transcripts. There is no way around that in an assistant-driven flow — but the care taken with the API key does not extend to the passphrase, so treat anything you hide through an assistant accordingly.

This server can upload any file you can read. That is the point of it — an assistant asks for a path and the file is sent to snapWONDERS for processing. It also means a request like "analyse ~/.ssh/id_rsa" would do exactly that, and an assistant following instructions from a web page or document it has read could try to use it that way. Your MCP client's tool-approval prompt is the real gate: read the path in the tool call before approving it.

Tools

Tool What it does
analyse_file Forensic analysis of a local image or video — A–F grade, metadata exposure, manipulation evidence, hidden content. Optional face detection and OCR.
hide_file Conceal a file inside a cover image or video, and save the result to disk.
reveal_file Extract content hidden in an image or video, and save it to disk.
convert_file Convert an image or video to another format, and save the output to disk.

Four tools, each a whole task. The REST API underneath is a session → upload → job → poll → results sequence; exposed one call per step, a model has to carry five-step state and will sometimes get it wrong. The orchestration lives here in Python instead, where it is deterministic.

Passwords for hide_file are not recoverable. They are never stored, and there is no reset. Be sure the user knows the passphrase before hiding something with it.

When you would use the remote server instead

https://snapwonders.com/mcp needs no install and is right when the files are already somewhere the server can reach, or when you only want session and job orchestration. Use this local server when the files are on the user's machine — which, for a desktop assistant, is almost always.

Which upload it uses

Whichever fits, and you never choose: the Python SDK sends anything under the server-reported cap (currently 95 MB) as a single direct upload, and falls back to the resumable TUS protocol above it.

Licence

MIT — see LICENSE. The licence covers this server only; the snapWONDERS API it calls is proprietary.

Metadata

Release files for snapwonders-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for snapwonders-mcp 0.1.1
File Size Uploaded
snapwonders_mcp-0.1.1.tar.gz 110.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for snapwonders-mcp 0.1.1
File Interpreter ABI Platform
snapwonders_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 120.9 kB

Release files / snapwonders_mcp-0.1.1.tar.gz

Download URL snapwonders_mcp-0.1.1.tar.gz
Size 110.8 kB
Tags Source
SHA-256 checksum
How to use checksums
e9edc4119f6c16f8b0798bc9601cd389524b04d3fab963d87044cff06bdc6af3
BLAKE2b-256 checksum
How to use checksums
c0f5d01ae5481f9faa3f397124ed6c0bff00f573e28b2a604461d1fc7671f56d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release files / snapwonders_mcp-0.1.1-py3-none-any.whl

Download URL snapwonders_mcp-0.1.1-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ad7810f09ecd241def0933e6c0a9543ad3c1c573bc20dc8f3cc8857eee876acd
BLAKE2b-256 checksum
How to use checksums
9f980fd39da59a189ea4f390a8d40cf696418ac08bf4560981755bca1eaf9178
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.9

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page