# snapWONDERS MCP (local)

A local MCP server that lets the assistant read a file from your disk, send it for processing and write the result back where you can find it. Useful when the media sits on your desktop instead of a cloud bucket.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI
- Author: snapWONDERS
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/snapWONDERS/snapWONDERS-MCP
- Updated: 2026-10-22
- HTML: https://affpapa.org/en/nevibecode/mcp/snapwonders-mcp-local

## What it does

The server runs on your own machine. The assistant hands over a path, the process reads the bytes there and pushes them to the snapWONDERS API over HTTPS. What comes back is a file on disk plus a note telling the model where it went, not an asset id you have to redeem yourself. Four tools are exposed: `analyse_file` inspects an image or video (A–F grade, metadata exposure, traces of manipulation, hidden content, optional face detection and OCR), `hide_file` tucks a file inside a cover image or video, `reveal_file` pulls concealed content out, `convert_file` changes the format. The session, upload, job and polling steps are wired together in Python, so the model does not have to track them on its own.

You need a snapWONDERS account and an API key from your profile page. Registration is free, yet the address has to be verified, since keys from unverified accounts are refused. The key arrives as the `SNAPWONDERS_API_KEY` environment variable rather than a tool argument, which keeps it out of the model's context. Passphrases are the exception: `hide_file` and `reveal_file` accept one per call, so it travels through the context and can land in client logs. Lost passphrases cannot be restored. `uvx` is enough to start the server, no separate install needed.

Any file the process can reach is fair game for upload — that includes `~/.ssh/id_rsa` if such a path shows up in a tool call. So the approval prompt in your MCP client is the real gate. Read the path before you click allow.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `SNAPWONDERS_API_KEY` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add mcp-local -e SNAPWONDERS_API_KEY=<SNAPWONDERS_API_KEY> -- uvx snapwonders-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from snapwonders-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add snapwonders-mcp-local --env SNAPWONDERS_API_KEY=<SNAPWONDERS_API_KEY> -- uvx snapwonders-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from snapwonders-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "snapwonders-mcp-local": {
            "command": "uvx",
            "args": [
                "snapwonders-mcp"
            ],
            "env": {
                "SNAPWONDERS_API_KEY": "<SNAPWONDERS_API_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from snapwonders-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "snapwonders-mcp-local": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "snapwonders-mcp"
            ],
            "env": {
                "SNAPWONDERS_API_KEY": "<SNAPWONDERS_API_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from snapwonders-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e SNAPWONDERS_API_KEY=<SNAPWONDERS_API_KEY> snapwonders-mcp-local uvx snapwonders-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from snapwonders-mcp <command>

## When to use it
- check a received photo for concealed content
- pack a working file into an innocent-looking image
- extract something embedded in a video
- turn a clip or still into another format without a separate converter
- see which metadata leaks along with an image you plan to publish

## Example prompts
- Analyse `~/Downloads/photo.jpg` and tell me the grade, the metadata and whether anything is hidden
- Hide `notes.txt` in `cover.png` using the passphrase from `pass.txt` and save the output next to it
- Convert `clip.mov` to mp4 and tell me where the file ended up

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 392262
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89609
- [mcp](https://affpapa.org/en/nevibecode/mcp/kubeshark-mcp.md) — MCP server · ★ 12110
- [Robin: AI-Powered Dark Web OSINT](https://affpapa.org/en/nevibecode/mcp/robin-ai-powered-dark-web-osint.md) — MCP server · ★ 7718
- [jshookmcp](https://affpapa.org/en/nevibecode/mcp/jshookmcp.md) — MCP server · ★ 2066
- [OpenOSINT](https://affpapa.org/en/nevibecode/mcp/openosint.md) — MCP server · ★ 1816

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
