MCP Screenshot Server
범용 스크린샷 MCP
AI 어시스턴트에게 스크린샷 기능을 제공하는 MCP (Model Context Protocol) 서버입니다. Puppeteer를 통한 웹 페이지 캡처와 기본 OS 도구를 사용한 크로스 플랫폼 시스템 스크린샷 기능을 모두 지원합니다.
기능
웹 페이지 스크린샷 — 헤드리스 Chromium 브라우저를 사용하여 모든 공개 URL 캡처
크로스 플랫폼 시스템 스크린샷 — 기본 OS 도구(macOS
screencapture, Linuxmaim/scrot/gnome-screenshot등, Windows PowerShell+.NET)를 사용하여 전체 화면, 창 또는 영역 캡처보안 우선 설계 — SSRF 방지, 경로 탐색 보호, DNS 리바인딩 방어, 명령 주입 방지 및 DoS 제한
MCP 네이티브 — Claude Desktop, Cursor 및 모든 MCP 호환 클라이언트와 직접 통합
Related MCP server: Webpage Screenshot MCP Server
요구 사항
Node.js >= 18.0.0
Chromium은 첫 실행 시 Puppeteer에 의해 자동으로 다운로드됩니다.
take_system_screenshot을 위한 플랫폼별 요구 사항
플랫폼 | 필수 도구 | 참고 |
macOS |
| 추가 설치 불필요 |
Linux | 다음 중 하나: | 전체 기능 지원을 위해 |
Windows |
| .NET |
Linux 설치 예시
# Ubuntu/Debian (recommended)
sudo apt install maim xdotool
# Fedora
sudo dnf install maim xdotool
# Arch Linux
sudo pacman -S maim xdotool
# Wayland (Sway, etc.)
sudo apt install grim설치 후 다음 명령어로 설정을 확인할 수 있습니다:
npx universal-screenshot-mcp --doctor이 명령은 호스트를 탐색하고 감지된 배포판에 맞춰 누락된 도구에 대한 복사/붙여넣기 가능한 설치 명령을 출력합니다.
빠른 시작
npm에서 설치
npm install -g universal-screenshot-mcp또는 npx로 직접 실행:
npx universal-screenshot-mcp소스에서 설치
git clone https://github.com/sethbang/mcp-screenshot-server.git
cd mcp-screenshot-server
npm install
npm run buildMCP 클라이언트 구성
MCP 클라이언트 구성에 서버를 추가하세요. Claude Desktop의 경우 ~/Library/Application Support/Claude/claude_desktop_config.json을 편집합니다:
{
"mcpServers": {
"screenshot-server": {
"command": "npx",
"args": ["-y", "universal-screenshot-mcp"]
}
}
}소스에서 설치한 경우:
{
"mcpServers": {
"screenshot-server": {
"command": "node",
"args": ["/absolute/path/to/mcp-screenshot-server/build/index.js"]
}
}
}Claude Code의 경우 claude mcp add 명령으로 서버를 등록합니다:
# Project scope (current directory only)
claude mcp add screenshot-server -- npx -y universal-screenshot-mcp
# User scope (available across all projects)
claude mcp add --scope user screenshot-server -- npx -y universal-screenshot-mcp소스에서 설치한 경우:
claude mcp add screenshot-server -- node /absolute/path/to/mcp-screenshot-server/build/index.jsclaude mcp list로 서버 등록을 확인하거나, 세션 내에서 /mcp를 사용하여 실시간 상태를 확인하세요.
Cursor 또는 기타 MCP 클라이언트의 경우 해당 문서에서 동일한 구성을 참조하세요.
도구
서버는 두 가지 MCP 도구를 노출합니다:
take_screenshot
헤드리스 Puppeteer 브라우저를 통해 웹 페이지(또는 특정 요소)를 캡처합니다.
매개변수 | 유형 | 필수 | 설명 |
| string | ✅ | 캡처할 URL (http/https만 가능) |
| number | — | 뷰포트 너비 (1–3840) |
| number | — | 뷰포트 높이 (1–2160) |
| boolean | — | 전체 스크롤 가능한 페이지 캡처 |
| string | — | 특정 요소를 캡처하기 위한 CSS 선택자 |
| string | — | 캡처 전 해당 선택자를 대기 |
| number | — | 밀리초 단위 지연 (0–30000) |
| string | — | 출력 파일 경로 (기본값: |
예시 프롬프트:
1920x1080 크기로 https://example.com 스크린샷을 찍어줘
take_system_screenshot
기본 OS 도구를 사용하여 데스크톱, 특정 애플리케이션 창 또는 화면 영역을 캡처합니다. macOS, Linux, Windows에서 작동합니다.
매개변수 | 유형 | 필수 | 설명 |
| enum | ✅ |
|
| number | — | 창 모드를 위한 창 ID |
| string | — | 창 모드를 위한 앱 이름 (예: |
| object | — | 영역 모드를 위한 |
| number | — | 다중 모니터 설정을 위한 디스플레이 번호 |
| boolean | — | 캡처에 마우스 커서 포함 |
| enum | — |
|
| number | — | 초 단위 캡처 지연 (0–10) |
| string | — | 출력 파일 경로 (기본값: |
크로스 플랫폼 기능 지원
기능 | macOS | Linux | Windows |
전체 화면 | ✅ | ✅ | ✅ |
영역 | ✅ | ✅ (maim, scrot, grim, import) | ✅ |
이름별 창 | ✅ | ⚠️ X11 + xdotool | ⚠️ 최선 노력 |
ID별 창 | ✅ | ✅ X11 전용 | ⚠️ HWND |
다중 디스플레이 | ✅ | ⚠️ 도구 의존적 | ✅ |
커서 포함 | ✅ | ⚠️ 도구 의존적 | ⚠️ |
지연 | ✅ | ✅ | ✅ |
예시 프롬프트:
Safari 창의 시스템 스크린샷을 찍어줘
구성
환경 변수
변수 | 기본값 | 설명 |
|
|
|
|
|
|
출력 디렉토리
스크린샷은 기본적으로 ~/Documents/screenshots에 저장됩니다(SCREENSHOT_OUTPUT_DIR을 통해 구성 가능). 사용자 지정 출력 경로는 허용된 디렉토리 중 하나로 확인되어야 합니다:
디렉토리 | 설명 |
| 기본 출력 위치 (구성 가능) |
| 원래 기본 위치 |
| 사용자 다운로드 폴더 |
| 사용자 문서 폴더 |
| 시스템 임시 디렉토리 |
보안
이 서버는 다중 보안 강화 계층을 구현합니다:
ID | 위협 | 완화 조치 |
SEC-001 | SSRF / DNS 리바인딩 | 차단된 IP 범위에 대해 URL 검증; |
SEC-003 | 명령 주입 | 모든 하위 프로세스는 |
SEC-004 | 경로 탐색 |
|
SEC-005 | 서비스 거부 | 세마포어를 통해 동시 Puppeteer 인스턴스를 3개로 제한 |
자세한 내용은 docs/security.md를 참조하세요.
개발
스크립트
명령 | 설명 |
| TypeScript를 |
| 파일 변경 시 재컴파일 |
| 단위 테스트 (빠름, 완전히 모의됨) |
| 통합 테스트 (실제 DNS/파일시스템) |
| E2E 테스트 (실제 Puppeteer/기본 도구) |
| 모든 테스트 계층 통합 |
| Docker를 통한 Linux e2e (Docker 필요) |
| 감시 모드에서 테스트 실행 |
| 커버리지 보고서와 함께 테스트 실행 |
| ESLint로 소스 린트 |
| 디버깅을 위한 MCP Inspector 실행 |
프로젝트 구조
src/
├── index.ts # Entry point — stdio transport
├── server.ts # MCP server factory
├── config/
│ ├── index.ts # Static constants (limits, allowed dirs)
│ └── runtime.ts # Singleton semaphore, default directory
├── tools/
│ ├── take-screenshot.ts # Web page capture tool
│ └── take-system-screenshot.ts # macOS system capture tool
├── types/
│ └── index.ts # Shared TypeScript interfaces
├── utils/
│ ├── helpers.ts # Response builders, file utilities
│ ├── screenshot-provider.ts # Cross-platform provider interface + factory
│ ├── macos-provider.ts # macOS: screencapture wrapper
│ ├── linux-provider.ts # Linux: maim/scrot/gnome-screenshot/etc.
│ ├── windows-provider.ts # Windows: PowerShell + .NET System.Drawing
│ ├── macos.ts # Window ID lookup via CoreGraphics
│ └── semaphore.ts # Async concurrency limiter
└── validators/
├── path.ts # Output path validation (SEC-004)
└── url.ts # URL/SSRF validation (SEC-001)테스트
테스트는 Vitest를 사용하여 세 계층으로 수행됩니다:
단위 (
npm test) — 전체 의존성 주입, 실제 I/O 없음. 빠른 피드백 루프.통합 (
npm run test:integration) — 실제 DNS 확인, 임시 디렉토리가 있는 실제 파일시스템, 로컬 HTTP 서버에 대한 실제 Puppeteer.E2E (
npm run test:e2e) — 실제 기본 스크린샷 도구. macOS 테스트는 네이티브로 실행; Linux 테스트는npm run test:linux를 통해 Docker에서 실행.
npm test # Unit tests (~300ms)
npm run test:linux # Linux provider tests in Docker
npm run test:all # EverythingMCP Inspector로 디버깅
npm run inspector이 명령은 빌드된 서버에 연결된 MCP Inspector를 실행하여 도구를 대화형으로 호출할 수 있게 합니다.
라이선스
Apache-2.0 — Copyright 2026 Seth Bang
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseAqualityDmaintenanceA lightweight Model Context Protocol (MCP) server that enables your LLM to capture screenshots of any specified URL and return only the access URL for the captured image. This tool simplifies the process of generating and sharing webpage snapshots, making it perfect for integrating visual capture ca12
- AlicenseAqualityDmaintenanceCaptures screenshots of web pages using Puppeteer, allowing AI agents to visually verify web applications and see their progress when generating web apps.557MIT
- AlicenseAqualityDmaintenanceEnables browser automation using Puppeteer through the MCP interface. Allows launching browsers, creating pages, and executing arbitrary JavaScript for web scraping, testing, and debugging tasks.51502MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI coding assistants to control and inspect a live Chrome browser through Chrome DevTools. Provides browser automation, performance analysis, debugging capabilities, and network request monitoring.2,211,10449,751Apache 2.0
Related MCP Connectors
Screenshot and HTML render MCP server for AI agents
Screenshot, diff, audit and sitemap-capture any web page — 5 MCP tools for AI agents.
Generate images, GIFs, and PDFs from HTML, URLs, or templates — from your AI agent.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sethbang/mcp-screenshot-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server