SnapStack MCP server
✓ 인증됨로컬 MCP server를 통해 브라우저 확장 프로그램으로 캡처한 브라우저 스크린샷을 AI 클라이언트가 가져오고 관리할 수 있게 합니다.
다른 이름 bgaze/snapstack-server
- 스타
- 1
- Tools
- 3
- 다운로드, 30일
- —
- 최신 버전
- 1.2.3
- 마지막 커밋
- 2026년 6월 15일
- 라이선스
- MIT
SnapStack MCP란?
SnapStack은(는) MCP server입니다. 로컬 MCP server를 통해 브라우저 확장 프로그램으로 캡처한 브라우저 스크린샷을 AI 클라이언트가 가져오고 관리할 수 있게 합니다. 3개 도구를 제공합니다. 예: get_screenshots, clear_screenshots, count_screenshots.
프로젝트 README에서 생성된 요약
SnapStack MCP server 정보
SnapStack server는 로컬 스크린샷 컬렉션을 관리하여 웹 브라우저와 AI 클라이언트 사이의 가교 역할을 합니다. 이 서버는 지속적인 Node.js 프로세스로 실행되며, 전용 브라우저 확장 프로그램으로부터 이미지 캡처를 전달받아 로컬 머신에 저장합니다. 서버가 로컬 루프백 주소에서만 리스닝하므로 모든 데이터는 사용자의 장치에 로컬로 유지됩니다.
개발자는 streamable HTTP 전송 방식이나 stdio 연결을 사용하여 MCP 지원 LLM 클라이언트를 연결할 수 있습니다. 서버는 캡처된 이미지와 상호작용할 수 있는 특정 도구를 제공합니다. get_screenshots를 사용하여 사용 가능한 파일 목록을 확인하거나, count_screenshots로 대기 중인 캡처 개수를 파악할 수 있으며, clear_screenshots로 특정 이미지를 제거하거나 전체 스택을 비울 수 있습니다. 시스템은 캡처된 이미지를 안정적인 두 자리 숫자와 로컬 디렉토리에 저장된 메타데이터 파일로 정리합니다.
활용 사례
- 1캡처된 브라우저 이미지 목록 조회AI에게 메타데이터와 파일 경로를 포함한 최근 스크린샷 전체 목록을 보여달라고 요청합니다.
프로젝트의 README를 바탕으로 작성되었습니다. 모든 활용 사례는 해당 내용의 인용문과 대조하여 확인합니다.
SnapStack MCP 설치 방법
형식 확인: 2026년 11월 10일Cursor에 추가Goose에 추가Claude Code에 SnapStack MCP 설치
$ claude mcp add snapstack-server -- npx -y snapstack-serverCursor에 SnapStack MCP 설치
~/.cursor/mcp.json
{
"mcpServers": {
"snapstack-server": {
"command": "npx",
"args": [
"-y",
"snapstack-server"
]
}
}
}VS Code에 SnapStack MCP 설치
.vscode/mcp.json
{
"servers": {
"snapstack-server": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"snapstack-server"
]
}
}
}VS Code CLI에 SnapStack MCP 설치
$ code --add-mcp '{"name":"snapstack-server","type":"stdio","command":"npx","args":["-y","snapstack-server"]}'Claude Desktop에 SnapStack MCP 설치
claude_desktop_config.json
{
"mcpServers": {
"snapstack-server": {
"command": "npx",
"args": [
"-y",
"snapstack-server"
]
}
}
}Codex에 SnapStack MCP 설치
$ codex mcp add snapstack-server -- npx -y snapstack-serverCodex config.toml에 SnapStack MCP 설치
~/.codex/config.toml
[mcp_servers.snapstack-server] command = "npx" args = ["-y", "snapstack-server"]
Gemini CLI에 SnapStack MCP 설치
$ gemini mcp add -s user snapstack-server npx -- -y snapstack-serverGemini settings.json에 SnapStack MCP 설치
~/.gemini/settings.json
{
"mcpServers": {
"snapstack-server": {
"command": "npx",
"args": [
"-y",
"snapstack-server"
]
}
}
}SnapStack MCP 도구 3
README에서 감지됨get_screenshotsclear_screenshotscount_screenshots
| get_screenshots | — | |
| clear_screenshots | — | |
| count_screenshots | — |
자동 검사
2026년 11월 15일에 실행됨전체 보고서 →자동 검사를 통과했습니다. 이는 보안 감사가 아닙니다. 코드를 직접 읽고 서버에 필요한 최소한의 권한만 부여하십시오. 검사 방식
- 소스 저장소 연결 및 접근 가능bgaze/snapstack-server is public and reachablegithub.com/bgaze/snapstack-server ↗통과
- 패키지가 이 저장소를 소스로 명시snapstack-server names bgaze/snapstack-server as sourcenpmjs.com/package/snapstack-server ↗통과
- 빌드 출처(Sigstore 증명)Sigstore attestation for snapstack-servernpmjs.com/package/snapstack-server/v/1.2.3#provenance ↗통과
- 오픈 소스 라이선스 (OSI)MITspdx.org/licenses/MIT.html ↗통과
- 최근 1년 내 커밋 또는 릴리스Last commit or release 2026-06-15github.com/bgaze/snapstack-server ↗통과
- OpenSSF Scorecard검사되지 않음
- 패키지 이름이 인기 패키지와 유사하지 않음No popular package one edit away from snapstack-server통과
- 패키지 및 해당 종속성에 중요한 보안 권고 없음99 resolved dependencies checked; no critical advisoryosv.dev ↗통과
- 모델에 대한 숨겨진 지침 없음3 tool descriptions and the README read; no override phrases, credential paths or hidden characters통과
- 파괴적인 도구에 라벨 표시됨No tool named like delete, drop or exec통과
- 원격 엔드포인트가 MCP 핸드셰이크에 응답검사되지 않음
README
GitHub에서 보기The 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.
SnapStack MCP 질문
SnapStack MCP를 Claude Code에 추가하려면 어떻게 하나요?
터미널에서 claude mcp add snapstack-server -- npx -y snapstack-server를 실행합니다. 모든 프로젝트에서 사용할 수 있게 하려면 --scope user를 추가합니다.
SnapStack MCP를 Cursor에 추가하려면 어떻게 하나요?
~/.cursor/mcp.json를 열고 mcpServers 아래에 서버를 추가합니다. 위 설치 섹션에 표시된 Cursor 구성을 사용합니다.
SnapStack MCP는 어떤 도구를 제공하나요?
3개 도구를 제공합니다. 예: get_screenshots, clear_screenshots, count_screenshots.
서버는 개인정보 보호와 데이터 보안을 어떻게 처리하나요?
서버는 127.0.0.1에서만 리스닝하므로 데이터가 로컬 머신 외부로 유출되지 않습니다.
스크린샷을 가져오면 스택에서 삭제되나요?
아니요, 가져오기 프로세스는 읽기 전용이며 파일을 삭제하지 않습니다.