find-images-mcp-bridge
This server lets an MCP client search a local network image index by visual and metadata similarity, and manage persistent tags on indexed images.
find_image – retrieve visually similar and metadata-related images across sources on the local network (cross-modal retrieval).
Search by text
query; without atarget, write a complete description of what you want.Use
target(aN, vN, iN, pN, a scratchpad filename, or absolute path) for "like this image" or style-matched edits; with a target, the query describes additions or changes.Supported filters in the query:
Model:,LoRAs:,Tag:,Tags:,Size:,Source:,Origin:,Timestamp:(hard AND filters).excludeImageignores target pixels for prompt/metadata-only similarity.includeMetadatauses target generation metadata as a corpus-wide ranking signal.retrievalLimitcaps the number of returned matches.scopeIdis reserved for the upcoming Search Scope feature and currently has no effect.
tag_image – manage persistent tags on indexed images via the configured image server.
add_tagandremove_tagaccept single strings or arrays for bothtagsandtarget, enabling bulk operations.list_tagslists all indexed tags;show_taglists an image's current tags;remove_all_tagsclears every tag from each target.Targets can be vN, iN, pN, a scratchpad filename, or an absolute image path.
Both tools require a
scratchpadFoldersession folder (obtain it viaget_scratchpad_folder), which is where downloaded previews are written and registered for later editing.Results in Bionic mode are presented via an HTML report with tool-chaining instructions (
open_url_in_app_browser/view_images/attach_file).
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@find-images-mcp-bridge find images of a red car on a highway"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
find-images-mcp-bridge
Local stdio MCP bridge between an MCP client (LM Studio Bionic, Unsloth Studio, or another MCP client) and a Find Images.app MCP server. Provides next-level image search and information retrieval based on multimodal embeddings.
What it does
The bridge exposes find_image and tag_image tools. It forwards search and tag requests to the Find Images MCP server, downloads its previews, writes them to the specified scratchpad, and registers them for later editing or processing.



Related MCP server: LM Studio MCP Bridge
Prerequisites
macOS 26 or later on Apple Silicon.
Find Images.app version
0.1.56-1or later, fully set up and verified to find images.Node.js and
npminstalled.
Installation
cd ~/.lmstudio/extensions/plugins/ceveyne
git clone https://github.com/ceveyne/find-images-mcp-bridge
cd find-images-mcp-bridge
npm install
npm run buildThis produces dist/index.js, the entrypoint referenced by args in every configuration below.
Bionic Configuration

For LM Studio Bionic. The stdio definition requires these values:
command: nodeargs: path to the find-images-mcp-bridge'sindex.js. Example:/Users/ceveyne/.lmstudio/extensions/plugins/ceveyne/find-images-mcp-bridge/dist/index.jsFIND_IMAGES_MCP_INDEXER_TOKEN: bearer token for the image server. Example:b2f4b1e2-3g0w-4c8t-3b7q-6n2b5b7x1a9d

💡 Tip: You don't need to set any of the following ENVs if you're happy with the defaults:
MCP_MADE_FOR:bionic(default).scratchpadFolderis required forfind_image/tag_image, andfind_imageresults are presented via an HTML report + tool-chaining instructions (open_url_in_app_browser/view_images/attach_file).CHAT_WORKING_DIRECTORIES: absolute base directory for all Bionic scratchpads. Default~/.lmstudio/scratchpads. Example:/Users/ceveyne/.lmstudio/scratchpadsFIND_IMAGES_MCP_INDEXER_URL: base URL of the image server. Defaulthttps://127.0.0.1:9760/mcp.FIND_IMAGES_MCP_INDEXER_CA_CERT: optional path to the image server's self-signed CA/server certificate; standard certificate validation remains active without this value. Default~/.find-images/server/server.crt, when that file exists. Example:/Users/ceveyne/.find-images/server/server.crtUSE_SKILLS: defaulttrue. Whentrue, thefind_image/tag_imagetool descriptions are minimized and point at the installed skillfind-images(see skills/find-images) for the full parameter documentation. Set tofalseto restore the original, fully inline tool descriptions instead — no skill installation needed in that case. Install the skill in Bionic viaSkills > Install a skill > Select a folder, pointing at this repo'sskills/find-imagesfolder. If the skill isn't installed yet (or the installed copy is outdated), the server copies the current version from this repo's ownskills/find-imagesfolder automatically — see "Skill delivery" below.
💡 Tip: Bionic's Settings → Skills → Use skills found in other apps is on by default, which also surfaces everything under
~/.agents/skills(shared with Unsloth Studio and VS Code Copilot) inside Bionic — including this plugin's own Unsloth-variant skill copy. Having both variants visible at once can confuse the agent about which one to read. Either disable that setting, or disable this specific skill entry under it, if you only intend to use Bionic.
{
"name": "find-images",
"enabled": true,
"connection": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/find-images-mcp-bridge/dist/index.js"],
"cwd": "/absolute/path/to/bionic-scratchpads",
"env": {
"MCP_MADE_FOR": "bionic",
"CHAT_WORKING_DIRECTORIES": "/absolute/path/to/bionic-scratchpads",
"FIND_IMAGES_MCP_INDEXER_URL": "https://find-images-server.example.com/mcp",
"FIND_IMAGES_MCP_INDEXER_TOKEN": "<bearer-token>",
"FIND_IMAGES_MCP_INDEXER_CA_CERT": "/absolute/path/to/server.crt",
"USE_SKILLS": "true"
}
}
}Env vars at a glance
Env var | Default | Required |
|
| No |
|
| No |
|
| No |
| – | Yes |
|
| No |
|
| No |
Setup for LM Studio Bionic step by step
Download and install the Find Images.app. Using the latest available version is highly recommended.
Run the guided Onboarding and verify you're set up according to the Find Images.app README.
Enter Find Images General Settings and add a bearer token to the "MCP Server Bearer Token" field. This is required to get the MCP server started.
cd ~/.lmstudio/extensions/plugins/ceveyne && git clone https://github.com/ceveyne/find-images-mcp-bridgecd ~/.lmstudio/extensions/plugins/ceveyne/find-images-mcp-bridge && npm install && npm run buildAdd a custom MCP server in your client, using
nodeas the command and the configuration for your client from the chapters above.Verify the connection reports
2 tools ready.Ask your agent to find images.
Text your friends about your gorgeous* Find Images setup.
* May or may not be gorgeous – depending on your settings.
Companion plugins
For LM Studio, use the LM Studio plugin: find-image. To generate images, use the LM Studio plugin – made for Bionic: generate-image. To analyse images, use the LM Studio plugin – made for Bionic: analyse-image. For precise, mask-based editing tasks, use the LM Studio plugin – made for Bionic: process-image.
Unsloth Configuration


For Unsloth Studio. Its agent obtains the session identifier via cat .unsloth_sandbox, which doubles as both scratchpadFolder and the local chat thread id. The stdio definition requires these values:
command: nodeargs: path to the find-images-mcp-bridge'sindex.js. Example:/Users/ceveyne/.lmstudio/extensions/plugins/ceveyne/find-images-mcp-bridge/dist/index.jsMCP_MADE_FOR:unsloth.FIND_IMAGES_MCP_INDEXER_TOKEN: bearer token for the image server. Example:b2f4b1e2-3g0w-4c8t-3b7q-6n2b5b7x1a9d

💡 Tip: You don't need to set any of the following ENVs if you're happy with the defaults:
CHAT_WORKING_DIRECTORIES: absolute base directory for all sandbox folders. Default~/.unsloth/studio/sandbox.CLIENT_DB_LOCATION: absolute path to Unsloth Studio's local chat database. Default~/.unsloth/studio/studio.db.FIND_IMAGES_MCP_INDEXER_URL: base URL of the image server. Defaulthttps://127.0.0.1:9760/mcp.FIND_IMAGES_MCP_INDEXER_CA_CERT: optional path to the image server's self-signed CA/server certificate; standard certificate validation remains active without this value. Default~/.find-images/server/server.crt, when that file exists. Example:/Users/ceveyne/.find-images/server/server.crtUSE_SKILLS: defaulttrue. Whentrue, thefind_image/tag_imagetool descriptions are minimized and point at the installed skillfind-imagesfor the full parameter documentation. Unsloth Studio can't import a skill from a folder — it only creates/edits/deletes skills in its own UI, saved under~/.agents/skills— so the skill must be copied there first:bash skills/find-images/install/install_unsloth_skills.shWindows:
skills/find-images/install/install_unsloth_skills.ps1(unverified on Windows).Installs
~/.agents/skills/find-images/SKILL.md(the Unsloth variant) plus itstools/folder. The skill is usable immediately, no Unsloth restart needed. Re-run after updating this repo. SetUSE_SKILLS=falseinstead if you'd rather skip the skill install and keep the original, fully inline tool descriptions.

{
"name": "find-images",
"enabled": true,
"connection": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/find-images-mcp-bridge/dist/index.js"],
"env": {
"MCP_MADE_FOR": "unsloth",
"CHAT_WORKING_DIRECTORIES": "/absolute/path/to/.unsloth/studio/sandbox",
"CLIENT_DB_LOCATION": "/absolute/path/to/.unsloth/studio/studio.db",
"FIND_IMAGES_MCP_INDEXER_URL": "https://find-images-server.example.com/mcp",
"FIND_IMAGES_MCP_INDEXER_TOKEN": "<bearer-token>",
"FIND_IMAGES_MCP_INDEXER_CA_CERT": "/absolute/path/to/server.crt",
"USE_SKILLS": "true"
}
}
}Env vars at a glance
Env var | Default | Required |
| – | Yes |
|
| No |
|
| No |
|
| No |
| – | Yes |
|
| No |
|
| No |
Generic Configuration
For any other MCP client. The stdio definition requires these values:
command: nodeargs: path to the find-images-mcp-bridge'sindex.js. Example:/Users/ceveyne/.lmstudio/extensions/plugins/ceveyne/find-images-mcp-bridge/dist/index.jsMCP_MADE_FOR:generic.CHAT_WORKING_DIRECTORIES: absolute base directory for all scratchpads. No default — must be set explicitly. Example:/absolute/path/to/scratchpadsFIND_IMAGES_MCP_INDEXER_URL: base URL of the image server. Defaulthttps://127.0.0.1:9760/mcp.FIND_IMAGES_MCP_INDEXER_TOKEN: bearer token for the image server. Example:b2f4b1e2-3g0w-4c8t-3b7q-6n2b5b7x1a9dFIND_IMAGES_MCP_INDEXER_CA_CERT: optional path to the image server's self-signed CA/server certificate; standard certificate validation remains active without this value. Default~/.find-images/server/server.crt, when that file exists. Example:/Users/ceveyne/.find-images/server/server.crtUSE_SKILLS: defaultfalse. It's unverified whether a given generic MCP client supports skills at all, or — if it does — whether it reads them from~/.agents/skills(the path used by both Unsloth Studio and VS Code Copilot, but not a confirmed universal convention). Only set this totrueif that's confirmed for your client, after installing the skill:bash skills/find-images/install/install_generic_skills.shWindows:
skills/find-images/install/install_generic_skills.ps1(unverified on Windows).Installs
~/.agents/skills/find-images/SKILL.md(the generic variant) plus itstools/folder.
{
"name": "find-images",
"enabled": true,
"connection": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/find-images-mcp-bridge/dist/index.js"],
"env": {
"MCP_MADE_FOR": "generic",
"CHAT_WORKING_DIRECTORIES": "/absolute/path/to/scratchpads",
"FIND_IMAGES_MCP_INDEXER_URL": "https://find-images-server.example.com/mcp",
"FIND_IMAGES_MCP_INDEXER_TOKEN": "<bearer-token>",
"FIND_IMAGES_MCP_INDEXER_CA_CERT": "/absolute/path/to/server.crt",
"USE_SKILLS": "false"
}
}
}Env vars at a glance
Env var | Default | Required |
| – | Yes |
| – | Yes |
|
| No |
| – | Yes |
|
| No |
|
| No |
Skill delivery
Unlike generate-image/process-image/analyse-image (distributed via the LM Studio Hub's file-count-limited artifact), this repo is installed via plain git clone/git pull (see "Installation" above) — the canonical skill content under skills/find-images is therefore always already present on disk, no Hub quota applies, and nothing needs to be fetched over the network.
Instead, the MCP server copies the skill's files directly from that local folder the first time it detects (via USE_SKILLS) that the client-installed copy (~/.lmstudio/skills/find-images for Bionic, ~/.agents/skills/find-images for Unsloth/generic) is missing or outdated — the exact same copy the install_*_skills.sh/.ps1 scripts under skills/find-images/install/ perform manually. The shared image-display skill (synced in locally from made-for-bionic-core, see scripts/sync-shared-skills.mjs) is kept current the same way. This runs automatically on every MCP session start — no manual re-install needed after a git pull. If the local canonical copy is somehow missing, the server falls back to a one-time note on the first tool result instead, naming the matching install script.
Development
npm install
npm run build
npm testLicense
MIT
Available Tools
2 toolsfind_imageB
Find visually similar and metadata-related images. Use this tool for cross-modal retrieval over images from several sources across the local network.
Inputs: scratchpadFolder (required), query, target, scopeId, +3 more.
tag_imageB
Manage persistent tags for indexed images through the configured image server.
Examples:
{ "action": "add_tag", "target": "p1", "tags": ["favorite"] }
{ "action": "remove_tag", "target": ["p1", "v2", "/absolute/path/image.png"], "tags": ["favorite", "reviewed"] }
Inputs: action (required), scratchpadFolder (required), tags, target.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 2 tools
find_image handles retrieval, tag_image handles tag management—two clearly distinct purposes with no overlap. Even though tag_image uses sub-actions, the tool boundary against find_image is unambiguous.
Both tools follow a clean verb_noun snake_case pattern (find_image, tag_image). Fully consistent.
Two tools is thin for an image bridge that claims cross-modal retrieval and tag management. It's borderline; the surface earns its place but feels minimal.
Only find and tag operations exist. Missing obvious lifecycle operations like indexing new images, listing indexed images, retrieving image metadata/details, or listing/querying existing tags—significant gaps for a retrieval bridge.
Maintenance
Related MCP Connectors
Search over 1.85 million captioned images using text, a reference image, or both. Upload a JPEG, PNG, or WebP image as base64, or provide a public HTTPS image URL. Find similar images from a Lightdrift asset ID and retrieve hosted file URLs, source licenses, and attribution. Connect with OAuth or an API key. Searches cost $0.005 ($5 per 1,000); image details are free. Setup: https://docs.lightdrift.ai/guides/images-mcp
MCP server exposing the YourImageShare upload API (upload/list/delete) as tools for AI agents.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Focused MCP server for OpenAI image/audio generation (v2.0.0). Wraps endpoints via HAPI CLI.
Related MCP Servers
- AlicenseDqualityDmaintenanceEnables seamless integration between MCP-compatible clients (like LM Studio) and Google Gemini API for image generation and multimodal tasks. Provides a hybrid local-cloud workflow combining local LM Studio execution with Gemini's cloud-powered image generation capabilities.13MIT
- AlicenseCqualityDmaintenanceEnables MCP clients to interact with local LLMs via LM Studio, supporting dynamic chat, vision, RAG, file interaction, and model orchestration.28MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI clients like Claude to understand, analyze, and describe local images via VL models through the MCP protocol.-
- FlicenseNot gradedqualityDmaintenanceEnables semantic image search using CLIP embeddings and visual question answering through MCP tools, allowing natural language interaction with images.-