Extract the images embedded in a PDF document into one ZIP file, right in the chat.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Use this when the user wants to extract, save or download the images or photos embedded in a PDF. Takes one attached PDF, optional pages (e.g. "2-5"), optional minimum width and height in pixels to skip icons, and dedupe (default true), and returns one ZIP: JPEG images copied as they are stored, other images as PNG (with transparency from a soft mask), and manifest.csv with page, pixel size, colour space and compression of each image. The ZIP is re-opened and each file is checked against its reported size before the link is given. Images in unsupported formats are listed with the reason. Does not open password-protected PDFs, does not render pages or vector drawings as pictures, and does not run OCR.
The PDF whose images you want, e.g. brochure.pdf.
Pages to read, e.g. "all" (default) or "1-3, 8, 10-end".
true (default): an image that appears more than once (same image data) is kept once and its repeats are listed as duplicates. false: list and extract each use.
Image numbers on one page, as list_pdf_images shows them ("image_on_page"), e.g. "4-end" or "2, 5". Use together with pages set to one page. Default: all images.
Leave out images narrower than this many pixels, e.g. 100 to skip small icons. Default 1 (keep all).
Leave out images shorter than this many pixels, e.g. 100. Default 1 (keep all).
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http pdf-images https://pdf-images.zovo.one/mcp
Use this when the user wants to extract, save or download the images or photos embedded in a PDF. Takes one attached PDF, optional pages (e.g. "2-5"), optional minimum width and height in pixels to skip icons, and dedupe (default true), and returns one ZIP: JPEG images copied as they are stored, other images as PNG (with transparency from a soft mask), and manifest.csv with page, pixel size, colour space and compression of each image. The ZIP is re-opened and each file is checked against its reported size before the link is given. Images in unsupported formats are listed with the reason. Does not open password-protected PDFs, does not render pages or vector drawings as pictures, and does not run OCR.
| Argument | Type | Description |
|---|---|---|
| file* | object | The PDF whose images you want, e.g. brochure.pdf. |
| pages | string | Pages to read, e.g. "all" (default) or "1-3, 8, 10-end". |
| dedupe | boolean | true (default): an image that appears more than once (same image data) is kept once and its repeats are listed as duplicates. false: list and extract each use. |
| images | string | Image numbers on one page, as list_pdf_images shows them ("image_on_page"), e.g. "4-end" or "2, 5". Use together with pages set to one page. Default: all images. |
| min_width | integer | Leave out images narrower than this many pixels, e.g. 100 to skip small icons. Default 1 (keep all). |
| min_height | integer | Leave out images shorter than this many pixels, e.g. 100. Default 1 (keep all). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file"
],
"properties": {
"file": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "ChatGPT file id, e.g. file_abc123."
},
"file_name": {
"type": "string",
"description": "Original file name if known, e.g. statement.pdf."
},
"mime_type": {
"type": "string",
"description": "Media type if known, e.g. application/pdf."
},
"download_url": {
"type": "string",
"description": "Temporary download link for the file, supplied by ChatGPT."
}
},
"description": "The PDF whose images you want, e.g. brochure.pdf."
},
"pages": {
"type": "string",
"maxLength": 400,
"description": "Pages to read, e.g. \"all\" (default) or \"1-3, 8, 10-end\"."
},
"dedupe": {
"type": "boolean",
"description": "true (default): an image that appears more than once (same image data) is kept once and its repeats are listed as duplicates. false: list and extract each use."
},
"images": {
"type": "string",
"maxLength": 100,
"description": "Image numbers on one page, as list_pdf_images shows them (\"image_on_page\"), e.g. \"4-end\" or \"2, 5\". Use together with pages set to one page. Default: all images."
},
"min_width": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Leave out images narrower than this many pixels, e.g. 100 to skip small icons. Default 1 (keep all)."
},
"min_height": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Leave out images shorter than this many pixels, e.g. 100. Default 1 (keep all)."
}
}
}Use this when the user wants to know which images a PDF contains, how many images are on each page, or their pixel sizes, before extracting them. Takes one attached PDF, optional pages (e.g. "1-3, 8"), optional minimum width and height in pixels, and dedupe (default true), and returns each embedded image with page, pixel size, colour space, bits, compression, whether it will be a JPEG or PNG file, duplicates, and skipped images with the reason. Makes no file. Does not open password-protected PDFs, does not run OCR, and does not render pages or vector drawings as images. Do not use when the user wants the image files (use extract_pdf_images).
| Argument | Type | Description |
|---|---|---|
| file* | object | The PDF whose images you want, e.g. brochure.pdf. |
| pages | string | Pages to read, e.g. "all" (default) or "1-3, 8, 10-end". |
| dedupe | boolean | true (default): an image that appears more than once (same image data) is kept once and its repeats are listed as duplicates. false: list and extract each use. |
| images | string | Image numbers on one page, as list_pdf_images shows them ("image_on_page"), e.g. "4-end" or "2, 5". Use together with pages set to one page. Default: all images. |
| min_width | integer | Leave out images narrower than this many pixels, e.g. 100 to skip small icons. Default 1 (keep all). |
| min_height |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 8, 2026.
| integer |
| Leave out images shorter than this many pixels, e.g. 100. Default 1 (keep all). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"file"
],
"properties": {
"file": {
"type": "object",
"required": [
"download_url",
"file_id"
],
"properties": {
"file_id": {
"type": "string",
"description": "ChatGPT file id, e.g. file_abc123."
},
"file_name": {
"type": "string",
"description": "Original file name if known, e.g. statement.pdf."
},
"mime_type": {
"type": "string",
"description": "Media type if known, e.g. application/pdf."
},
"download_url": {
"type": "string",
"description": "Temporary download link for the file, supplied by ChatGPT."
}
},
"description": "The PDF whose images you want, e.g. brochure.pdf."
},
"pages": {
"type": "string",
"maxLength": 400,
"description": "Pages to read, e.g. \"all\" (default) or \"1-3, 8, 10-end\"."
},
"dedupe": {
"type": "boolean",
"description": "true (default): an image that appears more than once (same image data) is kept once and its repeats are listed as duplicates. false: list and extract each use."
},
"images": {
"type": "string",
"maxLength": 100,
"description": "Image numbers on one page, as list_pdf_images shows them (\"image_on_page\"), e.g. \"4-end\" or \"2, 5\". Use together with pages set to one page. Default: all images."
},
"min_width": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Leave out images narrower than this many pixels, e.g. 100 to skip small icons. Default 1 (keep all)."
},
"min_height": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Leave out images shorter than this many pixels, e.g. 100. Default 1 (keep all)."
}
}
}