Model Context Protocol
Expose ScreenshotDEV as an MCP tool server. Any MCP-compatible client — Claude Desktop, Cursor, Windsurf, or custom agents — can discover and use screenshot capabilities through the standard protocol.
Install, configure, and start capturing.
Create an MCP tool server that exposes a screenshot tool. The tool definition follows the standard MCP schema.
{
"name": "screenshot",
"description": "Capture a website screenshot",
"inputSchema": {
"type": "object",
"properties": {
"url": { "type": "string" },
"format": {
"type": "string",
"enum": ["png", "jpeg", "webp"]
},
"full_page": { "type": "boolean" }
},
"required": ["url"]
}
}When the tool is called, make a request to the ScreenshotDEV API and return the result.
server.setRequestHandler(
CallToolRequestSchema,
async (request) => {
const { url, ...opts } = request.params.arguments;
const params = new URLSearchParams({
url,
access_key: process.env.SSDEV_KEY,
format: opts.format || "webp",
...opts
});
const res = await fetch(
`https://api.screenshotdev.com/v1/screenshot?${params}`
);
const data = await res.json();
return {
content: [{
type: "text",
text: JSON.stringify(data, null, 2)
}]
};
}
);Add the tool server to your MCP client's configuration file (e.g. Claude Desktop's claude_desktop_config.json).
{
"mcpServers": {
"screenshotdev": {
"command": "node",
"args": ["./screenshot-mcp-server.js"],
"env": {
"SSDEV_KEY": "ak_live_your_key_here"
}
}
}
}Any MCP-compatible client now has screenshot capabilities. Just ask it to capture a page.
> Capture acme.com in dark mode
Agent calls tool "screenshot":
{ "url": "https://acme.com", "full_page": true }
→ {
"url": "https://cdn.ssdev.io/s/mcp01.webp",
"width": 1280,
"height": 2340
}import { Server } from "@modelcontextprotocol/sdk/server";
import { StdioServerTransport } from
"@modelcontextprotocol/sdk/server/stdio";
const server = new Server({
name: "screenshotdev",
version: "1.0.0",
});
// List available tools
server.setRequestHandler(
ListToolsRequestSchema,
async () => ({
tools: [{
name: "screenshot",
description: "Capture a website screenshot",
inputSchema: {
type: "object",
properties: {
url: { type: "string" },
format: { type: "string" },
full_page: { type: "boolean" },
dark_mode: { type: "boolean" },
block_ads: { type: "boolean" }
},
required: ["url"]
}
}]
})
);
// Handle tool calls
server.setRequestHandler(
CallToolRequestSchema,
async (request) => {
const { url, ...opts } = request.params.arguments;
const params = new URLSearchParams({
url, access_key: process.env.SSDEV_KEY,
format: opts.format || "webp",
...Object.fromEntries(
Object.entries(opts)
.filter(([k]) => k !== "format")
.map(([k, v]) => [k, String(v)])
)
});
const res = await fetch(
`https://api.screenshotdev.com/v1/screenshot?${params}`
);
const data = await res.json();
return {
content: [{
type: "text",
text: JSON.stringify(data, null, 2)
}]
};
}
);
const transport = new StdioServerTransport();
await server.connect(transport);Pro tip: Publish your MCP server as an npm package so anyone on your team can add screenshot capabilities to their AI tools with a single config line.
No credit card required
Add screenshot capabilities to Claude Desktop. Ask it to capture any page and analyze the visual content.
Use with Cursor or Windsurf to capture your app during development. Debug visual issues without leaving your editor.
Combine the screenshot tool with other MCP tools — capture a page, analyze it, write results to a database, all in one flow.
Deploy one MCP server and every team member's AI tools get screenshot capabilities. Centralized API key management.
100 free API calls per month. No credit card. No complex setup.