image-tiler-mcp-server
Utilizes headless Chrome to capture full-page and mobile-responsive screenshots, supporting features like lazy-load triggering and retina scaling for high-resolution analysis.
Provides specialized tiling configurations for OpenAI vision models like GPT-4o, ensuring high-resolution images are processed within native tile patch limits to preserve fine details.
image-tiler-mcp-server
MCP server that gives LLMs full-resolution vision by tiling large images and capturing full web pages before details are lost to automatic downscaling.
What You Can Do
Visual QA for web pages. Capture a URL, tile it, and let the LLM spot misaligned elements, wrong colors, and broken layouts at full resolution. Fix the code, re-capture, and verify the fix visually.
Mobile responsive testing. Capture at any viewport width with mobile emulation, retina scaling, and a real mobile user agent. The LLM reviews the full mobile layout tile by tile, catching responsive breakpoint issues that only appear on small screens.
Full-resolution image analysis. Diagrams, infographics, and design mockups lose critical details when LLMs downscale them. A 3,600 x 20,220px full-page capture that Claude would crush to ~279 x 1,568 becomes 76 analyzable tiles, each at native resolution.
Token-efficient tile inspection. Each tile gets entropy-based content classification: blank, low-detail, mixed, or high-detail. The LLM skips blank tiles entirely and focuses tokens on what matters.
Iterative visual workflow. Capture, analyze, fix, re-capture. Versioned output directories (
_v1,_v2, ...) preserve each iteration so you can compare before and after without overwriting previous results.
Related MCP server: mcp-eyes
Quick Start
Claude Code
claude mcp add image-tiler -- npx -y image-tiler-mcp-server
image-tileris a local alias. You can name it anything you like.image-tiler-mcp-serveris the npm package that gets downloaded and run.
See Claude Code MCP docs for more info.
codex mcp add image-tiler -- npx -y image-tiler-mcp-serverOr add to ~/.codex/config.toml:
[mcp_servers.image-tiler]
command = "npx"
args = ["-y", "image-tiler-mcp-server"]Add to your VS Code MCP settings:
{
"image-tiler": {
"command": "npx",
"args": ["-y", "image-tiler-mcp-server"]
}
}Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"image-tiler": {
"command": "npx",
"args": ["-y", "image-tiler-mcp-server"]
}
}
}Add to your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"image-tiler": {
"command": "npx",
"args": ["-y", "image-tiler-mcp-server"]
}
}
}Restart Claude Desktop after editing.
npm install -g image-tiler-mcp-serverThen use the simpler config in any client:
{
"command": "image-tiler-mcp-server"
}git clone https://github.com/keiver/image-tiler-mcp-server.git
cd image-tiler-mcp-server
npm install
npm run buildThen point your MCP config to the built file:
{
"command": "node",
"args": ["/absolute/path/to/image-tiler-mcp-server/dist/index.js"]
}Build the image:
git clone https://github.com/keiver/image-tiler-mcp-server.git
cd image-tiler-mcp-server
docker build -t image-tiler-mcp-server .The image includes Chromium for URL capture. Chrome's --no-sandbox flag is enabled by default in the image because Docker containers don't provide the user namespaces that Chrome's sandbox requires. The container itself provides process isolation. To re-enable the sandbox (e.g. with --privileged or user-namespace support), pass -e CHROME_NO_SANDBOX=0.
{
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "/path/to/your/images:/data",
"-e", "TILER_ALLOWED_DIRS=/data",
"image-tiler-mcp-server"
]
}The -i flag is required (stdio transport). Mount a volume for any directories the server needs to read from or write to, and set TILER_ALLOWED_DIRS to restrict file access to those mounts.
To disable URL capture entirely (no Chrome, no network access):
{
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "TILER_DISABLE_URL_CAPTURE=1",
"-v", "/path/to/your/images:/data",
"-e", "TILER_ALLOWED_DIRS=/data",
"image-tiler-mcp-server"
]
}Usage
Tile an image
tile ~/source.png and analyze content
The server reads image dimensions and generates an interactive HTML preview with per-model tabs showing grid overlays, tile counts, and token estimates. Pick the model that matches your use case, and the server tiles and returns batches for analysis.
Capture a web page
capture full page screenshot of https://tomotv.app
The server launches headless Chrome, scrolls through the page to trigger lazy-loaded images (loading="lazy"), then captures a full-page screenshot (scroll-stitching pages over 16,384px). Your assistant receives each section at full resolution and can identify layout issues, misaligned elements, or broken styling that downscaling would hide.
To get only the screenshot without tiling, just ask for a screenshot and stop after the comparison step.
Test a mobile layout
capture https://tomotv.app in mobile view
This is responsive QA, not just a different viewport. The server captures with mobile: true, which sets a 390px viewport, 2x retina scale, and a mobile Safari user agent. Sites that check for mobile UA or touch capability serve their mobile layout, so the LLM reviews exactly what a real phone user sees.
Customize tiling
What | Example prompt |
Target a specific model | "Tile hero.png for OpenAI" |
Keep full resolution | "Tile banner.png at full resolution, no downscaling" |
PNG output | "Tile diagram.png as lossless PNG" |
Tile from URL | "Download and tile https://keiver.dev/source.png" |
Tile from base64 | "Tile this base64 image: iVBORw0KGgo..." |
Presets
Preset | Default tile | Tokens/tile | Max tile | ID |
Claude | 1092px | 1590 | 1568px |
|
OpenAI (GPT-4o/o-series) | 768px | 765 | 2048px |
|
Gemini | 768px | 258 | 768px |
|
Gemini 3 | 1536px | 1120 | 3072px |
|
OpenAI note: The
openaiconfig targets the GPT-4o / o-series vision pipeline (512px tile patches). GPT-4.1 uses a fundamentally different pipeline (32x32 pixel patches) and is not currently supported. It would require a separate model config with a different calculation approach.
Gemini 3 note: Gemini 3 uses a fixed token budget per image (1,120 tokens regardless of dimensions). Tiling increases total token cost but preserves fine detail. For cases where detail isn't critical, consider sending a single image instead.
Why Tile?
You screenshot a full page, paste it into Claude, and Claude crushes it to a thumbnail. Any image with a long edge over 1,568 pixels gets auto-downscaled to fit within ~1.15 megapixels. A 3,600 x 20,220px full-page capture becomes ~279 x 1,568, losing over 99% of its pixels before the model even sees it.
GPT-4o is more forgiving but still destructive: it scales your image to fit within 2,048px, then scales the shortest side down to 768px, then tiles internally. An 8,192px-wide NASA panorama becomes ~1,456 x 768 before GPT-4o's own tiling even begins.
Gemini 1.5/2.0 handles large images natively at 768px tiles without downscaling. Gemini 3, however, caps each image at a fixed token budget (1,120 tokens) regardless of size. Tiling gives each piece its own budget.
Each tile stays within the model's sweet spot, so the LLM processes it at full resolution.
What Happens Without Tiling
Using assets/portrait.png (3,600 x 20,220, a full-page National Geographic capture) as an example:
Model | What happens | Impact |
Claude | Auto-downscaled to ~279 x 1,568 | ~0.6% of original pixels survive |
GPT-4o | Downscaled to ~365 x 2,048, then internally tiled | ~1% of original pixels survive the downscale |
Gemini 3 | Capped at 1,120 tokens per image (default) | Fixed token budget regardless of image size |
Gemini 1.5/2.0 tiles large images natively at 768px without downscaling. For Gemini 3, tiling multiplies the total token budget by sending each tile as a separate image.
With Tiling
Model | Tiles | Result |
Claude | 76 tiles at 1,092px | Every tile within 1,568px sweet spot, no downscaling |
GPT-4o | 135 tiles at 768px | Every tile under 2,048px, no pre-downscale needed |
Gemini 3 | 42 tiles at 1,536px | Each tile gets its own 1,120-token budget |
Using assets/landscape.png (8,192 x 4,320, NASA image gallery):
Model | Without tiling | With tiling |
Claude | Auto-downscaled to ~1,568 x 827 (~3.7% of pixels survive) | 32 tiles at 1,092px, full analysis |
GPT-4o | Downscaled to ~1,456 x 768 (~3% of pixels survive) | 66 tiles at 768px, full resolution |
Gemini 3 | Capped at 1,120 tokens | 18 tiles at 1,536px, 18x token budget |
Based on published model vision documentation as of Feb 2026: Claude vision limits · OpenAI vision guide · Gemini image understanding · Gemini media resolution
How It Works
This MCP server:
Reads the image dimensions and the target model's vision config
Generates an interactive HTML preview with per-model tabs showing grid overlays, tile numbering, and token estimates
Calculates an optimal grid that keeps every tile within the model's sweet spot
Extracts tiles as individual images (WebP default, PNG optional) and saves them to disk
Returns a metadata summary (grid layout, file paths, token cost, per-tile content hints)
Serves tiles on demand: call with
tilesDir+start/endto retrieve batches of up to 5 tiles
Web capture pipeline. For URLs, the server launches headless Chrome, triggers lazy-loaded images by scrolling the page, captures a full-page screenshot (scroll-stitching pages over 16,384px), then feeds the screenshot into the same tiling pipeline.
Auto-downscaling. Images over 10,000px on their longest side are automatically downscaled before tiling (configurable via maxDimension). This keeps tile counts reasonable and improves LLM comprehension by increasing content density per tile. Set maxDimension=0 to disable, or pass a custom value (e.g., maxDimension=5000) for more aggressive downscaling.
tiler
One unified tool that handles all image tiling operations. The mode is auto-detected from the parameters you provide:
tilesDirpresent → Tile retrieval mode (read-only pagination)urlorscreenshotPathpresent → URL capture mode (screenshot + tile)filePath,sourceUrl,dataUrl, orimageBase64present → Tile-image mode
Mode priority: When multiple mode params are present, the tool resolves by priority:
tilesDir>url/screenshotPath>filePath/sourceUrl/dataUrl/imageBase64. Avoid passing params from different modes in the same call.
Workflow:
The tool uses a two-step process to let you choose the right model before tiling:
Compare - Call with only the image source. Returns a comparison table showing tile counts and token estimates for each supported model, plus an interactive HTML preview.
Tile - Call again with the chosen
preset+outputDirfrom step 1, plus:Image sources: re-include your original source param (
filePath,sourceUrl, etc.)Captures: use
screenshotPathfrom step 1 (not the originalurl)
Skip the comparison step: Provide
presetandoutputDiron the first call to tile immediately.
Interactive model picker: Clients that support MCP elicitation get a dropdown picker instead of the comparison table.
Parameters - Image Source (tile-image mode)
Parameter | Type | Required | Default | Description |
| string | no* | - | Absolute or relative path to the image file |
| string | no* | - | URL to download the image from (max 50MB, 30s timeout). |
| string | no* | - | Data URL with base64-encoded image |
| string | no* | - | Raw base64-encoded image data |
*At least one image source is required for tile-image mode.
Parameters - URL Capture (capture mode)
Parameter | Type | Required | Default | Description |
| string | no | - | URL of the web page to capture. Requires Chrome/Chromium installed (or |
| string | no | - | Path to a previously captured screenshot. Skips URL capture when provided. |
| number | no |
| Browser viewport width in pixels (320-3840) |
| boolean | no |
| Whether to emulate a mobile device. When true, defaults |
| number | no |
| Device pixel ratio (0.1-5). Use |
| string | no | - | Custom user agent string. Auto-set to a mobile Safari UA when |
| string | no |
| When to consider the page loaded: |
| number | no |
| Additional delay in ms after page load (max 30000) |
Supports scroll-stitching for pages taller than 16,384px. Automatically triggers lazy-loaded images (loading="lazy") before capture by scrolling through the page. Pages without lazy images are unaffected.
Parameters - Tile Retrieval (pagination mode)
Parameter | Type | Required | Default | Description |
| string | no | - | Path to tiles directory (returned by a previous tiling call as |
| number | no |
| Start tile index (0-based, inclusive) |
| number | no | start + 4 | End tile index (0-based, inclusive). Max 5 tiles per batch. |
| boolean | no |
| Skip blank tiles and return a text annotation instead of an image. Set to |
Parameters - Tiling Config (shared across modes)
Parameter | Type | Required | Default | Description |
| string | no | Auto (cheapest) | Target vision preset: |
| number | no | Model default | Tile size in pixels. Clamped to model's supported range with a warning if out of bounds. |
| number | no |
| Max dimension in px (0 to disable, or 256-65536). Values 1-255 are silently clamped to 256. Pre-downscales the image so its longest side fits within this value before tiling. |
| string | no | See below | Directory to save tiles. Defaults: for |
| number | no |
| Tile page to return (0 = first 5, 1 = next 5, etc.) |
| string | no |
| Output format: |
| boolean | no |
| Analyze each tile using image stats and return content classification (blank, low-detail, mixed, high-detail) plus |
| string | no | - | Deprecated. Use |
Prompts
Guided workflows for clients that support MCP prompts:
Prompt | Arguments | Description |
|
| Walks through tiling a local image and analyzing each tile at full resolution. The |
|
| Walks through capturing a web page screenshot and analyzing it tile by tile. |
Resources
Static references for clients that support MCP resources:
URI | Format | Description |
| JSON | All supported vision model presets with tile sizes, min/max bounds, and per-tile token rates. |
| Plain text | Quick reference covering the tiling workflow, preset summary, and usage tips. |
Behaviors
Source conflict: Multiple image source params → highest-precedence source is used with a warning (
filePath>sourceUrl>dataUrl>imageBase64).Re-entry: If
outputDiralready has a preview from the comparison step, the server skips straight to tiling.Elicitation cancellation: Cancelling the model picker returns
"Tiling cancelled by user."without tiling.Versioned output: Repeated tiling of the same source creates
_v1,_v2, ...,_vNdirectories to avoid overwriting.Tile naming:
tile_ROW_COL.{format}with zero-padded 3-digit indices (e.g.,tile_000_003.webp), row-by-row, left-to-right.
Supported Formats
PNG, JPEG, WebP, TIFF, GIF
Troubleshooting
"Command not found" - Make sure Node.js 20+ is installed: node --version
"File not found" - Use absolute paths. Relative paths resolve from the MCP server's working directory.
"MCP tools not available" - Restart your MCP client after config changes. In Claude Code, run /mcp to check server status.
"Chrome not found" - Install Google Chrome or set the CHROME_PATH environment variable to the Chrome executable (must be an absolute path).
Running as root - Chrome's sandbox is automatically disabled when running as root. For non-root containers (e.g. Docker), set CHROME_NO_SANDBOX=1. The official Docker image already sets this.
Security
Transport: stdio only. The server is a single-session local process spawned by the MCP client. It never listens on a network socket.
URL download protection (always-on)
https: sourceUrl downloads use request-filtering-agent, which blocks requests to private IP ranges before they are made:
RFC 1918 (10.x, 172.16-31.x, 192.168.x)
Loopback (127.x, ::1)
Link-local / IMDS (169.254.x, fe80::/10) including IPv4-mapped IPv6 (
::ffff:169.254.169.254)CGNAT (100.64.x), ULA (fc00::/7)
HTTP redirects are followed up to 5 hops. Each hop re-applies SSRF filtering for https: URLs, so a redirect to a private IP is blocked even if the initial URL was public. https: to http: downgrades are blocked. http: downloads bypass SSRF filtering, intended for local dev servers (localhost, LAN IPs). Use https: for all remote/production URLs.
Limitation: DNS rebinding is mitigated but not fully prevented at the application layer.
Path containment (opt-in via TILER_ALLOWED_DIRS)
Set TILER_ALLOWED_DIRS to a comma-separated list of absolute paths to restrict all file I/O to those directories:
TILER_ALLOWED_DIRS=/app/uploads,/tmp/tiler-workWhen set:
filePathandtilesDirinputs are checked viafs.realpath()(resolves symlinks) before access.outputDirwrites are checked against the nearest existing ancestor to prevent path traversal through non-existing directories.Any path outside the allowed list is rejected with an
[TILER_ALLOWED_DIRS]error.
When unset, no path restriction is applied (preserves backward-compatible local behaviour).
Chrome URL capture kill switch
Chrome headless can reach any network address the host can reach. Application-level IP checks cannot reliably constrain it. For cloud deployments without a NetworkPolicy or equivalent, disable URL capture entirely:
TILER_DISABLE_URL_CAPTURE=1Any call with a url parameter will return an error instead of spawning Chrome.
Docker example:
# CHROME_NO_SANDBOX=1 is set by default in the Docker image
TILER_ALLOWED_DIRS=/app/uploads
TILER_DISABLE_URL_CAPTURE=1 # remove only if Chrome is network-isolatedRequirements
Node.js 20+
Compatible MCP client (Claude Code, Codex CLI, VS Code, Cursor, Claude Desktop)
Contributing
See CONTRIBUTING.md for how to report bugs, suggest changes, and submit PRs.
Acknowledgments
Built with the help of Claude Code as an AI assistant for code drafting, testing, and documentation.
License
MIT
Links
Available Tools
1 tooltilerImage Tiler for LLM VisionA
Split images into optimally-sized tiles for LLM vision analysis, or capture web page screenshots and tile them.
MANDATORY two-phase workflow — DO NOT skip Phase 1:
Phase 1 (REQUIRED first): Provide ONLY the image source (filePath, sourceUrl, url, etc). DO NOT include preset, tileSize, or outputDir. Returns a model comparison table with token estimates and an outputDir. You MUST present this table to the user and ask which preset they prefer. DO NOT select a preset yourself — the user decides. If you must auto-select, always use the cheapest option.
Phase 2: Call again with the user's chosen preset + the outputDir from Phase 1. Re-include your original image source (filePath, sourceUrl, etc.). For captures, use screenshotPath from Phase 1 instead of url. Returns tile summary with metadata and content hints (no tile images). Use tilesDir + start/end to fetch only the tiles you need.
Stop after Phase 1 if you only need the screenshot (capture mode) or comparison data.
4 tiling presets available:
"claude": 1092px tiles, ~1590 tokens/tile
"openai": 768px tiles, ~765 tokens/tile
"gemini3": 1536px tiles, ~1120 tokens/tile
"gemini": 768px tiles, ~258 tokens/tile
Supports: local files (filePath), remote images (sourceUrl), data URLs, base64, and web page capture (url — Chrome required). Tiles saved as WebP (default) or PNG. Auto-downscales images over 10000px by default.
TOKEN COST NOTE: The get-tiles mode returns image tiles as inline base64, consuming significantly more tokens than typical text-only MCP tools. Each tile costs ~258-1590 tokens depending on preset. Use the Phase 2 summary and tile hints to fetch only non-blank, relevant tiles.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End tile index (0-based, inclusive). Defaults to start + 4. Max 5 tiles per batch to stay within MCP response limits. | |
| url | No | URL of the web page to capture. Requires Chrome/Chromium installed. | |
| page | No | Tile page to return (0 = first 5, 1 = next 5, etc.). Default: 0 | |
| delay | No | Additional delay in ms after the page is loaded, before capturing (default: 3000) | |
| model | No | Deprecated: use "preset" instead. Accepted for backward compatibility. Available: "claude" (1092px tiles, ~1590 tokens/tile), "openai" (768px tiles, ~765 tokens/tile), "gemini3" (1536px tiles, ~1120 tokens/tile), "gemini" (768px tiles, ~258 tokens/tile). | |
| start | No | Start tile index (0-based, inclusive). Used with tilesDir for pagination. | |
| format | No | Output format for tiles: "webp" (smaller, default) or "png" (lossless) | webp |
| mobile | No | Whether to emulate a mobile device. When true, defaults viewportWidth to 390, deviceScaleFactor to 2, and sets a mobile user agent if not explicitly provided. | |
| preset | No | DO NOT provide on Phase 1 (first call). Only specify on Phase 2 after the user has chosen from the comparison table. Available: "claude" (1092px tiles, ~1590 tokens/tile), "openai" (768px tiles, ~765 tokens/tile), "gemini3" (1536px tiles, ~1120 tokens/tile), "gemini" (768px tiles, ~258 tokens/tile). Auto-selects cheapest when omitted on Phase 2. | |
| dataUrl | No | Data URL with base64-encoded image (e.g. "data:image/png;base64,...") | |
| filePath | No | Absolute or relative path to the image file | |
| tileSize | No | Tile size in pixels. If omitted, uses the model's optimal default (Claude: 1092, OpenAI: 768, Gemini 3: 1536, Gemini: 768). Values outside the model's supported range are automatically clamped with a warning. | |
| tilesDir | No | Path to the tiles directory (returned as outputDir from a previous tiling call). When provided, returns tiles as base64 images for pagination. | |
| outputDir | No | Directory to save tiles. Defaults to tiles/{name}_vN/ next to source for filePath; {base}/tiles/tiled_{ts}_{hex}/ for URL/base64 sources; {base}/tiles/capture_{ts}_{hex}/ for captures. | |
| sourceUrl | No | URL to download the image from (max 50MB, 30s timeout). SSRF filtering active on https:. Set TILER_DENY_HTTP_PRIVATE=1 to block private IPs on http: | |
| userAgent | No | Custom user agent string | |
| waitUntil | No | When to consider the page loaded: "load" (default), "networkidle", or "domcontentloaded" | load |
| imageBase64 | No | Raw base64-encoded image data (no data URL prefix) | |
| maxDimension | No | Max dimension in px (0 to disable, or 256-65536). When set, the image is resized so its longest side fits within this value before tiling. Reduces token consumption for large images. Defaults to 10000px. Set to 0 to disable auto-downscaling. | |
| viewportWidth | No | Browser viewport width in pixels. Defaults to 1280 for desktop, 390 when mobile is true. | |
| screenshotPath | No | Path to a previously captured screenshot. When provided and accessible, skips URL capture. | |
| skipBlankTiles | No | Skip blank tiles in get-tiles mode, returning text annotations instead of images. Set to false to include all tiles. Default: true. | |
| includeMetadata | No | Analyze each tile and return content hints (blank, low-detail, mixed, high-detail) and brightness stats. Enabled by default; set to false to skip. | |
| deviceScaleFactor | No | Device pixel ratio (e.g., 2 for retina). Defaults to 1 for desktop, 2 when mobile is true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate openWorldHint=true, and the description adds context like auto-downscaling, token consumption notes, and file output behavior. While it could mention more side effects, it does not contradict annotations and adds useful behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but well-structured with clear headings and numbered phases. Every sentence adds value, though minor trimming could improve conciseness. It front-loads the critical workflow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (24 parameters, no output schema), the description covers the workflow, token costs, supported sources, and parameter timing comprehensively. It is complete and leaves no major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds significant value by explaining the two-phase workflow, which parameters are for which phase, and token costs. This goes beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool splits images into tiles for LLM vision analysis or captures web page screenshots and tiles them. It provides a specific verb and resource, and the detailed workflow distinguishes it from any potential siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly outlines a mandatory two-phase workflow with step-by-step instructions, when to stop, and which parameters to use in each phase. It also provides token cost comparisons for presets, aiding the agent in selecting the appropriate mode.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v1.2.0- Removed
tiler
1 tool update
- Added
tiler
TDQS
Scored across 1 tool
With only one tool, there is no risk of confusion between tools. The single tool is distinctly named and described.
The single tool name 'tiler' is clear and consistent with the server's purpose. Naming within the tool description follows a predictable pattern.
One tool for an image tiling server is on the low end, but the tool's complexity (two-phase workflow, multiple presets) justifies a single entry. It feels slightly thin but not inappropriate.
The tool covers the core domain of image tiling for LLMs, supporting various sources and presets. Minor gaps might include lack of tool-specific helper functions, but the workflow is complete.
Maintenance
Related MCP Connectors
MCP server for Qwen Image 3 AI image generation
OCR, transcription, file extraction, and image generation for AI agents via MCP.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Related MCP Servers
- AlicenseAqualityAmaintenanceCaptures high-quality screenshots of web pages with automatic resolution limiting and tiling optimized for Claude Vision API and other AI models.3362 npm109MIT
- AlicenseNot gradedqualityDmaintenanceA drop-in MCP server that pairs long-context reasoning LLMs with vision models in description-only mode, enabling any reasoning model to 'see' images without the vision model giving advice or solutions.1MIT
- FlicenseNot gradedqualityBmaintenanceMCP server that enables LLMs to understand images without native vision by converting image regions into text encodings (ASCII art, grayscale grids, color stats) and supporting progressive zoom, OCR, and overview summaries. Users can load images, get chunk overviews, crop and encode specific regions, and extract text using normalized coordinates.-
- AlicenseNot gradedqualityBmaintenanceMCP server that gives text-only LLMs vision capabilities by using a free multimodal model to perceive images, audio, and video, returning text for the main model to reason with.32 npm2MIT