MCP server for scraping and downloading images with background removal and image processing capabilities
Server has 6 tools with explicit schemas and descriptions, but quality is inconsistent. All tools have basic descriptions (10-80 chars), but most are too terse to guide LLM selection effectively. Schemas are present but lack parameter descriptions for nested objects (e.g., 'options' in process_images has no description). No output schemas documented. Error handling is minimal, catch blocks return generic JSON without recovery guidance. Tool naming is reasonable (verb_noun pattern) but lacks clarity on distinctions (scrape_images vs scrape_products vs scrape_product_detail_images are semantically similar). No parameter validation hints, no enum constraints, no pagination support. Security concern: download_images and process_images accept arbitrary file paths without sanitization, risking path traversal attacks.
Download images from a list of URLs to a local directory.
Process images (remove background, sharpen).
Process images using Google Colab GPU backend (better quality, faster).
Scrape image URLs from a given web page URL.
Scrape high-quality product images from a product detail page.
Scrape product details (title, price, image) from a web page.
Nested parameter 'options' lacks description in process_images and process_images_colab. LLM cannot infer what removeBg, sharpen, sharpenStrength control or when to use them.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract structured data from responses. scrape_images should document it returns {urls: string[]}; download_images should document success/failure per URL.
Three scraping tools (scrape_images, scrape_products, scrape_product_detail_images) have overlapping names and unclear distinctions. LLM cannot determine which to call without trial-and-error. Descriptions do not explain when to use each.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 41 | 2026-07-28+ | v2 |
download_images and process_images accept arbitrary file paths (imagePaths, outputDir) without validation or sanitization. Risk of path traversal attacks (e.g., '../../../etc/passwd'). No description warns of constraints.
Error handling in CallToolRequestSchema catch blocks returns generic JSON without recovery guidance. E.g., 'Invalid URL' tells LLM nothing about what to try next. No error classification (retryable vs user-fixable vs fatal).