MCP server SnapStack
✓ VerificadoPermite que um cliente de IA recupere e gerencie capturas de tela do navegador capturadas via uma extensão complementar por meio de um MCP server local.
Também conhecido como bgaze/snapstack-server
- Stars
- 1
- Ferramentas
- 3
- Downloads, 30 dias
- —
- Versão mais recente
- 1.2.3
- Último commit
- 15 de jun. de 2026
- Licença
- MIT
O que é o MCP SnapStack?
SnapStack é um MCP server. Permite que um cliente de IA recupere e gerencie capturas de tela do navegador capturadas via uma extensão complementar por meio de um MCP server local. Ele expõe 3 ferramentas, como get_screenshots, clear_screenshots, count_screenshots.
Resumo gerado a partir do README do projeto
Sobre o MCP server de SnapStack
O servidor SnapStack atua como uma ponte entre seu navegador web e um cliente de IA, gerenciando uma coleção local de capturas de tela. Ele roda como um processo Node.js persistente que recebe capturas de imagem de uma extensão de navegador complementar e as armazena em sua máquina. Essa configuração garante que todos os dados permaneçam locais no seu dispositivo, já que o servidor escuta apenas no endereço de loopback local.
Desenvolvedores podem conectar seus clientes LLM compatíveis com MCP usando um transporte streamable HTTP ou uma conexão stdio. O servidor fornece ferramentas específicas para interagir com as imagens capturadas. Você pode usar get_screenshots para visualizar um manifesto dos arquivos disponíveis, count_screenshots para ver quantas capturas estão pendentes ou clear_screenshots para remover imagens específicas ou esvaziar todo o stack. O sistema organiza as capturas com números estáveis de dois dígitos e arquivos de metadados armazenados em um diretório local.
O que você pode fazer com ele
- 1Listar imagens capturadas do navegadorPeça à IA para mostrar uma lista de todas as capturas de tela recentes, incluindo seus metadados e caminhos de arquivo.
Escrito a partir do README do projeto. Cada caso de uso é verificado com uma citação dele.
Como instalar o MCP SnapStack
Formatos verificados em 10 nov 2026Adicionar ao CursorAdicionar ao GooseInstalar o MCP SnapStack no Claude Code
$ claude mcp add snapstack-server -- npx -y snapstack-serverInstalar o MCP SnapStack no Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"snapstack-server": {
"command": "npx",
"args": [
"-y",
"snapstack-server"
]
}
}
}Instalar o MCP SnapStack no VS Code
.vscode/mcp.json
{
"servers": {
"snapstack-server": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"snapstack-server"
]
}
}
}Instalar o MCP SnapStack no VS Code CLI
$ code --add-mcp '{"name":"snapstack-server","type":"stdio","command":"npx","args":["-y","snapstack-server"]}'Instalar o MCP SnapStack no Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"snapstack-server": {
"command": "npx",
"args": [
"-y",
"snapstack-server"
]
}
}
}Instalar o MCP SnapStack no Codex
$ codex mcp add snapstack-server -- npx -y snapstack-serverInstalar o MCP SnapStack no Codex config.toml
~/.codex/config.toml
[mcp_servers.snapstack-server] command = "npx" args = ["-y", "snapstack-server"]
Instalar o MCP SnapStack no Gemini CLI
$ gemini mcp add -s user snapstack-server npx -- -y snapstack-serverInstalar o MCP SnapStack no Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"snapstack-server": {
"command": "npx",
"args": [
"-y",
"snapstack-server"
]
}
}
}Ferramentas do MCP SnapStack 3
Detectadas a partir do READMEget_screenshotsclear_screenshotscount_screenshots
| get_screenshots | — | |
| clear_screenshots | — | |
| count_screenshots | — |
Verificações automatizadas
Executado em 15 de nov. de 2026Relatório completo →Passou em nossas verificações automatizadas. Isso não é uma auditoria de segurança: leia o código e dê ao servidor o acesso mais restrito de que ele precisa. Como as verificações funcionam
- Repositório de origem vinculado e acessívelbgaze/snapstack-server is public and reachablegithub.com/bgaze/snapstack-server ↗Passou
- O pacote indica este repositório como sua origemsnapstack-server names bgaze/snapstack-server as sourcenpmjs.com/package/snapstack-server ↗Passou
- Proveniência da build (atestação Sigstore)Sigstore attestation for snapstack-servernpmjs.com/package/snapstack-server/v/1.2.3#provenance ↗Passou
- Licença de código aberto (OSI)MITspdx.org/licenses/MIT.html ↗Passou
- Commit ou release no último anoLast commit or release 2026-06-15github.com/bgaze/snapstack-server ↗Passou
- OpenSSF ScorecardNão verificado
- Nome do pacote não é próximo a um pacote popularNo popular package one edit away from snapstack-serverPassou
- Nenhum aviso crítico no pacote ou em suas dependências99 resolved dependencies checked; no critical advisoryosv.dev ↗Passou
- Sem instruções ocultas para o modelo3 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPassou
- Ferramentas destrutivas estão rotuladasNo tool named like delete, drop or execPassou
- O endpoint remoto responde ao handshake do MCPNão verificado
README
Ver no GitHubThe SnapStack server is a single always-on Node process: it receives browser captures from the
extension, stacks them on disk, and serves them to any
MCP-capable LLM client over Streamable HTTP. It listens only on 127.0.0.1 — nothing ever leaves your machine.
New here? The full install + usage guide lives in the extension README: snapstack-extension. This page is the technical reference.
Architecture
One always-on process serves both the extension (capture) and your MCP client, decoupled by a folder on disk.
[MV3 extension] --POST /push (bytes) ┐
▼
[SnapStack server - 127.0.0.1:4123]
├─ writes → stack on disk
└─ MCP /mcp (HTTP) ← MCP client
- Capture — the extension encodes the shot as WebP (PNG fallback), downscales it, and POSTs it here.
- Stack — one image file (
.webp/.png) plus a twin.json(url, title, timestamp, dimensions) per capture, namedNN <timestamp>: a stable two-digit number (assigned in capture order, restarts at01when the stack empties) plus a timestamp, under~/.snapstack/. - Retrieval —
get_screenshotsreturns a JSON manifest (number, absolute path, dimensions, metadata — no image bytes); the client reads only the files it needs, by path. Deletion is a separate, explicitclear_screenshotsstep. Retrieval never deletes.
Requirements
- Node.js ≥ 18 (tested on Node 20). No git needed at runtime.
- An MCP-capable LLM client speaking the HTTP (Streamable HTTP) or stdio transport.
- The snapstack-extension loaded in your browser.
Install & run
On Windows, use an Administrator terminal, otherwise the global npm install and the scheduled-task registration may get rejected.
The server ships on npm and installation is straightforward on macOS, Linux and Windows:
- Install globally:
npm i -g snapstack-server - Enable background service:
snapstack enable
SnapStack auto-starts on login, restarts on crash, and updates itself on each launch.
To check its status or if an update is available, simply run snapstack in your terminal.
Available commands:
snapstack # status report: service + server health, update check
snapstack start | stop | restart # control the running service (this session)
snapstack update # update the CLI (npm i -g) + restart the server on the latest
snapstack run # run the daemon in the foreground (no auto-start)
The daemon self-updates on each (re)start/login; the global CLI (the snapstack command) does not.
Run snapstack update to bring both to the latest in one go.
The full end-to-end walkthrough (idiomatic install paths, MCP client registration, the extension) is in the extension README.
MCP
SnapStack speaks two MCP transports over the same on-disk stack — pick whichever your client supports:
// HTTP (server already running) — register http://127.0.0.1:4123/mcp; copy deploy/mcp.json
{ "type": "http", "url": "http://127.0.0.1:4123/mcp" }
// stdio (the client spawns the process)
{ "command": "npx", "args": ["-y", "-p", "snapstack-server", "snapstack", "mcp"] }
The HTTP /mcp endpoint is stateless (a fresh server + transport per request); the stdio front-end
(snapstack mcp) is spawned on demand and reads the same ~/.snapstack stack.
Capture intake (/push) always stays in the running server, independent of either MCP front-end.
Exposed tools
| Tool | Description |
|---|---|
get_screenshots |
Lists pending captures as a JSON manifest (stable number, absolute path, dimensions, metadata) — no image bytes, no deletion. Pass numbers (e.g. [1,3]) to list only those. |
clear_screenshots |
Deletes captures. Pass numbers to delete specific ones; omit to clear the whole stack. Numbering restarts at 01 once empty. |
count_screenshots |
Number of pending captures, without retrieving them. |
get_screenshots and count_screenshots are read-only; only clear_screenshots is destructive.
Configuration
Environment variables (infrastructure)
| Variable | Default | Purpose |
|---|---|---|
SNAPSTACK_DIR |
~/.snapstack |
Stack folder. |
SNAPSTACK_PORT |
4123 |
Listening port (always on 127.0.0.1). |
Capture policy (shared across your browsers)
The encoding/capture settings are owned by the server and stored in ~/.snapstack/config.json, so a single
edit applies to every browser running the extension. They are edited from the extension's options page — not
an environment variable — and fetched by the extension before each capture.
| Key | Default | Meaning |
|---|---|---|
format |
webp |
Image format: webp, png or jpg. |
quality |
0.85 |
Lossy quality (0–1; the extension UI shows it as a percentage). |
maxWidth |
1568 |
Downscale captures wider than this to this width in px (0 = no resize). |
maxSlices |
50 |
Full-page capture: hard cap on stitched slices. |
Two endpoints back it: GET /config returns the effective policy; POST /config validates and replaces it (host- +
CORS-guarded like every capture route). The file is a non-image, so a stack clear never touches it; deleting it just
restores the defaults above.
Troubleshooting
- Capture server not started message in the extension: run
snapstack start(orsnapstack runin the foreground), or check the auto-start withsnapstack. Test:curl http://127.0.0.1:4123/health. - Port already in use (
EADDRINUSE): setSNAPSTACK_PORTto another value. snapstack: command not foundafter switching Node version (nvm, fnm, volta, Laravel Herd, nvm-windows):npm i -gdrops thesnapstackcommand in the global bin of the Node version that was active at install time only, so switching versions hides it. This is how npm globals work, not a SnapStack bug — the background service is unaffected and keeps capturing; only the CLI command disappears. Fix: re-runnpm i -g snapstack-serverunder the current Node version (or switch back to the one used at install).- The client doesn't see the tools: the server must run before the MCP client starts; check the config
(
type: "http", correct URL). Direct test:curl http://127.0.0.1:4123/count. - Inspect the stack:
ls ~/.snapstack(image files + human-readable.json).
Support
- A question or an idea? → GitHub Discussions
- Found a bug? → open an issue
License
MIT — see LICENSE.
Perguntas sobre o MCP SnapStack
Como adiciono o MCP SnapStack ao Claude Code?
Execute claude mcp add snapstack-server -- npx -y snapstack-server no seu terminal. Adicione --scope user para torná-lo disponível em todos os projetos.
Como adiciono o MCP SnapStack ao Cursor?
Abra ~/.cursor/mcp.json e adicione o servidor em mcpServers, usando a configuração do Cursor mostrada na seção de instalação acima.
Quais ferramentas o MCP SnapStack oferece?
Ele expõe 3 ferramentas, incluindo get_screenshots, clear_screenshots, count_screenshots.
Como o servidor lida com privacidade e segurança de dados?
O servidor escuta apenas em 127.0.0.1, garantindo que nada saia da sua máquina local.
A recuperação de capturas de tela as deleta do stack?
Não, o processo de recuperação é apenas de leitura e não deleta nenhum arquivo.