image-reader-mcp
# Image Reader MCP Server
A simple MCP server built with FastMCP that provides tools to:
- List image files in a specified directory.
- Read a specific image file and return its content.
## Tools
This server provides the following tools:
### `list_images`
* **Description:** List image files in a specified directory.
* **Parameters:**
* `directoryPath` (string): The absolute path to the directory to scan for images.
* **Returns:** A list of image filenames found in the directory or a message indicating no images were found.
* **Supported Extensions:** `.jpg`, `.jpeg`, `.png`, `.gif`, `.bmp`, `.webp`, `.svg`
### `read_image`
* **Description:** Reads a specific image file and returns its content as base64.
* **Parameters:**
* `filePath` (string): The absolute path to the image file to read.
* **Returns:** An object containing the image content suitable for display (using `imageContent` helper from `fastmcp`).
* **Supported Extensions:** `.jpg`, `.jpeg`, `.png`, `.gif`, `.bmp`, `.webp`, `.svg`
### Setup
To configure an MCP client, add the `imageReader` entry to the `mcpServers` object. It should look something like this:
```json
{
"mcpServers": {
// ... other servers might be here ...
"imageReader": {
"command": "npx",
"args": ["image-reader-mcp"],
"env": {}
}
}
}
```
**Important Note:** When using this server with Cursor, it currently seems to function only when Claude Sonnet is selected (other models don't seem to have vision enabled).
TDQS
Scored across 2 tools
list_images and read_image are clearly distinct: one discovers images in a directory, the other retrieves the content of a specific image. There is no overlap or ambiguity between them.
Both tool names follow a verb_noun pattern (list_images, read_image), using snake_case consistently. The naming is predictable and easy to infer.
With only two tools, the server feels minimal, which is borderline for a tool set. However, for an image reader, listing and reading are the essential operations, so the count is appropriate for the narrow scope, but still falls into the 'thin' category.
The server's purpose is to read images, and it provides the two core operations: enumerating available images and reading a specific one. There are no obvious gaps for this use case; it covers the full lifecycle of reading (discover then retrieve).