README_MCP.md
README_MCP.md
Looking for the LM Studio settings? https://lmstudio.ai/ceveyne/analyse-image/files/README.md
Local stdio MCP entrypoint living inside the analyse-image LM Studio plugin repo. Provides agentic image metadata extraction, visual analysis, and object detection via a Vision API — usable by LM Studio Bionic, Unsloth Studio, or any generic MCP client. See the preset chapters below for client-specific configuration.
The server exposes analyse_image, detect_object and annotate_image tools. All of them call the same Vision API tool logic the LM Studio plugin uses. detect_object and annotate_image write their annotated result image to disk and register it as an iN record for later editing or processing; analyse_image never writes a new file — it only reads the target image and returns its embedded metadata and/or a visual description.
Each detect_object/annotate_image result always includes, per annotated file: an http:// link (only if a local HTTP server is reachable) and a file:// link to the original, plus a one-line usage hint naming the iN identifier to reuse in follow-up calls. analyse_image results instead carry the extracted PNG metadata JSON and/or the visual description text. Whether an inline base64 JPEG preview is also included depends on the preset — see its own chapter below.
qwen/qwen3-vl-8b). analyse_image metadata extraction (no prompt) works without the model; visual descriptions, detect_object, and annotate_image require it.The stdio definition requires these values:
💡 Tip: You don't need to set any of the following ENVs if you're happy with the defaults:
| Env var | Default | Required |
|---|---|---|
MCP_MADE_FOR_BIONIC | true | No |
CHAT_WORKING_DIRECTORIES | ~/.lmstudio/scratchpads | No |
VISION_API | bionic | No |
VISION_API_BASE_URL | http://127.0.0.1:1234/v1 | No |
VISION_API_KEY | – | No |
QWEN3_VL_MODEL | qwen/qwen3-vl-8b | No |
EMBED_PNG_METADATA | true | No |
INCLUDE_GENERATION_METADATA | true | No |
args at start-mcp.mjs.Connected • 3 tools ready.analyse-image setup.* May or may not be gorgeous – depending on your settings.
This MCP entrypoint lives in the same repository as the LM Studio plugin analyse-image. For LM Studio, use the plugin directly — no MCP setup needed there.
To not only analyse images, generate and edit them mask-based, and find them at the end, you can use these plugins from our tool ecosystem:
For Unsloth Studio. The stdio definition requires these values:
command: nodeargs: path to analyse-image's start-mcp.mjs. Example: /Users/ceveyne/.lmstudio/extensions/plugins/ceveyne/analyse-image/start-mcp.mjsMCP_MADE_FOR: unsloth.💡 Tip: You don't need to set any of the following ENVs if you're happy with the defaults:
| Env var | Default | Required |
|---|---|---|
MCP_MADE_FOR | – | Yes |
CHAT_WORKING_DIRECTORIES | ~/.unsloth/studio/sandbox | No |
CLIENT_DB_LOCATION | ~/.unsloth/studio/studio.db | No |
VISION_API | llama-server | No |
QWEN3_VL_MODEL | unsloth/Qwen3-VL-8B-Instruct-GGUF | No |
LLAMA_SERVER_BINARY | ~/.unsloth/llama.cpp/llama-server | No |
LLAMA_SERVER_PORT | 8099 | No |
EMBED_PNG_METADATA | true | No |
INCLUDE_GENERATION_METADATA | true | No |
For any generic MCP client that isn't LM Studio Bionic or Unsloth Studio. The stdio definition requires these values:
| Env var | Default | Required |
|---|---|---|
MCP_MADE_FOR | – | Yes |
CHAT_WORKING_DIRECTORIES | ~/Pictures | No |
VISION_API | llama-server | No |
VISION_API_BASE_URL | http://127.0.0.1:1234/v1 | No |
VISION_API_KEY | – | No |
QWEN3_VL_MODEL | qwen/qwen3-vl-8b | No |
LLAMA_SERVER_BINARY | ~/.lmstudio/extensions/backends/qwen3-vl-embedding/llama-server | No |
LLAMA_SERVER_PORT | 8099 | No |
EMBED_PNG_METADATA | true | No |
INCLUDE_GENERATION_METADATA | true | No |
MIT
Looking for the LM Studio settings? https://lmstudio.ai/ceveyne/analyse-image/files/README.md
Local stdio MCP entrypoint living inside the analyse-image LM Studio plugin repo. Provides agentic image metadata extraction, visual analysis, and object detection via a Vision API — usable by LM Studio Bionic, Unsloth Studio, or any generic MCP client. See the preset chapters below for client-specific configuration.
The server exposes analyse_image, detect_object and annotate_image tools. All of them call the same Vision API tool logic the LM Studio plugin uses. detect_object and annotate_image write their annotated result image to disk and register it as an iN record for later editing or processing; analyse_image never writes a new file — it only reads the target image and returns its embedded metadata and/or a visual description.
Each detect_object/annotate_image result always includes, per annotated file: an http:// link (only if a local HTTP server is reachable) and a file:// link to the original, plus a one-line usage hint naming the iN identifier to reuse in follow-up calls. analyse_image results instead carry the extracted PNG metadata JSON and/or the visual description text. Whether an inline base64 JPEG preview is also included depends on the preset — see its own chapter below.
qwen/qwen3-vl-8b). analyse_image metadata extraction (no prompt) works without the model; visual descriptions, detect_object, and annotate_image require it.The stdio definition requires these values:
💡 Tip: You don't need to set any of the following ENVs if you're happy with the defaults:
| Env var | Default | Required |
|---|---|---|
MCP_MADE_FOR_BIONIC | true | No |
CHAT_WORKING_DIRECTORIES | ~/.lmstudio/scratchpads | No |
VISION_API | bionic | No |
VISION_API_BASE_URL | http://127.0.0.1:1234/v1 | No |
VISION_API_KEY | – | No |
QWEN3_VL_MODEL | qwen/qwen3-vl-8b | No |
EMBED_PNG_METADATA | true | No |
INCLUDE_GENERATION_METADATA | true | No |
args at start-mcp.mjs.Connected • 3 tools ready.analyse-image setup.* May or may not be gorgeous – depending on your settings.
This MCP entrypoint lives in the same repository as the LM Studio plugin analyse-image. For LM Studio, use the plugin directly — no MCP setup needed there.
To not only analyse images, generate and edit them mask-based, and find them at the end, you can use these plugins from our tool ecosystem:
For Unsloth Studio. The stdio definition requires these values:
command: nodeargs: path to analyse-image's start-mcp.mjs. Example: /Users/ceveyne/.lmstudio/extensions/plugins/ceveyne/analyse-image/start-mcp.mjsMCP_MADE_FOR: unsloth.💡 Tip: You don't need to set any of the following ENVs if you're happy with the defaults:
| Env var | Default | Required |
|---|---|---|
MCP_MADE_FOR | – | Yes |
CHAT_WORKING_DIRECTORIES | ~/.unsloth/studio/sandbox | No |
CLIENT_DB_LOCATION | ~/.unsloth/studio/studio.db | No |
VISION_API | llama-server | No |
QWEN3_VL_MODEL | unsloth/Qwen3-VL-8B-Instruct-GGUF | No |
LLAMA_SERVER_BINARY | ~/.unsloth/llama.cpp/llama-server | No |
LLAMA_SERVER_PORT | 8099 | No |
EMBED_PNG_METADATA | true | No |
INCLUDE_GENERATION_METADATA | true | No |
For any generic MCP client that isn't LM Studio Bionic or Unsloth Studio. The stdio definition requires these values:
| Env var | Default | Required |
|---|---|---|
MCP_MADE_FOR | – | Yes |
CHAT_WORKING_DIRECTORIES | ~/Pictures | No |
VISION_API | llama-server | No |
VISION_API_BASE_URL | http://127.0.0.1:1234/v1 | No |
VISION_API_KEY | – | No |
QWEN3_VL_MODEL | qwen/qwen3-vl-8b | No |
LLAMA_SERVER_BINARY | ~/.lmstudio/extensions/backends/qwen3-vl-embedding/llama-server | No |
LLAMA_SERVER_PORT | 8099 | No |
EMBED_PNG_METADATA | true | No |
INCLUDE_GENERATION_METADATA | true | No |
MIT
analyse-image and made-for-bionic-core set up side by side (siblings), e.g. both under ~/.lmstudio/extensions/plugins/ceveyne/.command: node
args: path to analyse-image's start-mcp.mjs. Example: /Users/ceveyne/.lmstudio/extensions/plugins/ceveyne/analyse-image/start-mcp.mjs
⚠️ Do not point
argsatdist-mcp/mcp/index.jsdirectly.start-mcp.mjsmust stay the entrypoint soprocess.argv[1]resolves to the project root — otherwise path resolution relative to the project root (config, logs, model settings) silently breaks.
MCP_MADE_FOR_BIONIC: default true (selects this preset). A context-aware tool-chain is generated as the tool result. Annotated files from detect_object/annotate_image are always written to disk (scratchpad folder) and the tool result always includes the file's http:// link (if a local server is reachable) and its file:// link; no inline base64 preview is included.
CHAT_WORKING_DIRECTORIES: absolute base directory for all Bionic scratchpads. Default ~/.lmstudio/scratchpads.
VISION_API: which kind of vision server this entrypoint expects behind VISION_API_BASE_URL — bionic, generic, unsloth, or llama-server. Default bionic here; override only if your server doesn't actually match this preset's usual kind.
VISION_API_BASE_URL: Vision API server URL. Defaults to a local LM Studio server, where existing /v1 or /api/v1 suffixes are normalized away before internal /api/v1 calls; any OpenAI-compatible vision endpoint can be configured instead. Default http://127.0.0.1:1234/v1.
VISION_API_KEY: optional API key if the server requires it. Default empty.
QWEN3_VL_MODEL: LM Studio model key for Qwen3-VL, not a filesystem path. Default qwen/qwen3-vl-8b.
EMBED_PNG_METADATA: embed analysis provenance and detected bounding boxes as Draw Things-compatible XMP metadata into PNGs saved by detect_object/annotate_image. Default true.
INCLUDE_GENERATION_METADATA: append Draw Things generation parameters (prompt, model, seed, ...) embedded in the source PNG to each analyse_image result. Default true.
💡 Tip: If you notice a timeout error such as:
try increasing the
Request timeout (seconds)value in the Bionic MCP configuration until the error goes away. Bionic apparently doesn't supportnotifications/progressyet and pins theresetTimeoutOnProgressparameter tofalse.
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.
VISION_API: which kind of vision server this entrypoint expects behind VISION_API_BASE_URL — bionic, generic, unsloth, or llama-server. Default llama-server here; override to unsloth only if you want to talk to Unsloth Studio's own API directly instead of a separately-managed router-mode llama-server. This NOT recommended at the moment since the Unsloth API cannot handle more than one llama-server instance in parallel.
VISION_API_BASE_URL: Vision API server URL. Default http://127.0.0.1:8888/v1 (Unsloth Studio's own OpenAI-compatible server).
VISION_API_KEY: optional API key if the server requires it. Default empty.
QWEN3_VL_MODEL: Unsloth Studio model key for Qwen3-VL, not a filesystem path. Default unsloth/Qwen3-VL-8B-Instruct-GGUF.
LLAMA_SERVER_BINARY: absolute path to the llama-server binary used only by VISION_API=llama-server — that mode spawns and manages its own standalone router-mode llama-server process, entirely independent of Unsloth Studio's own agent model process (works around Unsloth Studio's single-model-slot eviction, see the Unsloth limitations note below). Default ~/.unsloth/llama.cpp/llama-server.
LLAMA_SERVER_PORT: local port the VISION_API=llama-server router listens on — independent of VISION_API_BASE_URL, which stays Unsloth Studio's own fixed address (8888). Default 8099.
EMBED_PNG_METADATA: embed analysis provenance and detected bounding boxes as Draw Things-compatible XMP metadata into PNGs saved by detect_object/annotate_image. Default true.
INCLUDE_GENERATION_METADATA: append Draw Things generation parameters (prompt, model, seed, ...) embedded in the source PNG to each analyse_image result. Default true.
💡 Unsloth Desktop settings: without a
VISION_API_KEY, this only works if Unsloth Studio's API access is opened up beyond keyless "inference only" (e.g. "everything else") — otherwise set a real Unsloth API key viaVISION_API_KEYinstead. Assign8,192 contextto the vision model (unsloth/Qwen3-VL-8B-Instruct-GGUF) in Unsloth Studio's model settings.
command: nodeargs: path to analyse-image's start-mcp.mjs. Example: /Users/ceveyne/.lmstudio/extensions/plugins/ceveyne/analyse-image/start-mcp.mjsMCP_MADE_FOR: generic. Produces a generic tool result: detect_object/annotate_image responses include an inline base64 JPEG preview of the annotated file. Annotated files are always written to disk and the tool result always includes the file's http:// link (if a local server is reachable) and its file:// link.CHAT_WORKING_DIRECTORIES: absolute base directory for all working folders. Default ~/Pictures.VISION_API: which kind of vision server this entrypoint expects behind VISION_API_BASE_URL — bionic, generic, unsloth, or llama-server. Default llama-server here; override to generic only if VISION_API_BASE_URL already points at a ready-to-use OpenAI-compatible server you manage yourself.VISION_API_BASE_URL: Vision API server URL. Default http://127.0.0.1:1234/v1.VISION_API_KEY: optional API key if the server requires it. Default empty.QWEN3_VL_MODEL: model key/id for Qwen3-VL as reported by your server's /v1/models, not a filesystem path. Default qwen/qwen3-vl-8b.LLAMA_SERVER_BINARY: absolute path to the llama-server binary used only by VISION_API=llama-server — that mode spawns and manages its own standalone router-mode llama-server process, entirely independent of any other model loading. Default ~/.lmstudio/extensions/backends/qwen3-vl-embedding/llama-server.LLAMA_SERVER_PORT: local port the VISION_API=llama-server router listens on — independent of VISION_API_BASE_URL, which stays the real Vision API's own fixed address. Default 8099.EMBED_PNG_METADATA: embed analysis provenance and detected bounding boxes as Draw Things-compatible XMP metadata into PNGs saved by detect_object/annotate_image. Default true.INCLUDE_GENERATION_METADATA: append Draw Things generation parameters (prompt, model, seed, ...) embedded in the source PNG to each analyse_image result. Default true.{
"name": "analyse-image",
"enabled": true,
"connection": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/analyse-image/start-mcp.mjs"],
"env": {
"MCP_MADE_FOR_BIONIC": "true",
"CHAT_WORKING_DIRECTORIES": "/absolute/path/to/bionic-scratchpads",
"VISION_API_BASE_URL": "http://127.0.0.1:1234/v1",
"QWEN3_VL_MODEL": "qwen/qwen3-vl-8b",
"EMBED_PNG_METADATA": "true",
"INCLUDE_GENERATION_METADATA": "true"
}
}
}
{
"name": "analyse-image",
"enabled": true,
"connection": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/analyse-image/start-mcp.mjs"],
"env": {
"MCP_MADE_FOR": "unsloth",
"CHAT_WORKING_DIRECTORIES": "/absolute/path/to/.unsloth/studio/sandbox",
"CLIENT_DB_LOCATION": "/absolute/path/to/.unsloth/studio/studio.db",
"LLAMA_SERVER_BINARY": "/absolute/path/to/.unsloth/llama.cpp/llama-server",
"LLAMA_SERVER_PORT": "8099",
"QWEN3_VL_MODEL": "unsloth/Qwen3-VL-8B-Instruct-GGUF",
"EMBED_PNG_METADATA": "true",
"INCLUDE_GENERATION_METADATA": "true"
}
}
}
{
"name": "analyse-image",
"enabled": true,
"connection": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/analyse-image/start-mcp.mjs"],
"env": {
"MCP_MADE_FOR": "generic",
"CHAT_WORKING_DIRECTORIES": "/absolute/path/to/pictures",
"VISION_API_BASE_URL": "http://127.0.0.1:1234/v1",
"QWEN3_VL_MODEL": "qwen/qwen3-vl-8b",
"EMBED_PNG_METADATA": "true",
"INCLUDE_GENERATION_METADATA": "true"
}
}
}
npm run typecheck # plugin + MCP
npm run build # LM Studio plugin
npm run build:mcp # MCP entrypoint
npm run test:mcp # unit tests + stdio smoke test
analyse-image and made-for-bionic-core set up side by side (siblings), e.g. both under ~/.lmstudio/extensions/plugins/ceveyne/.command: node
args: path to analyse-image's start-mcp.mjs. Example: /Users/ceveyne/.lmstudio/extensions/plugins/ceveyne/analyse-image/start-mcp.mjs
⚠️ Do not point
argsatdist-mcp/mcp/index.jsdirectly.start-mcp.mjsmust stay the entrypoint soprocess.argv[1]resolves to the project root — otherwise path resolution relative to the project root (config, logs, model settings) silently breaks.
MCP_MADE_FOR_BIONIC: default true (selects this preset). A context-aware tool-chain is generated as the tool result. Annotated files from detect_object/annotate_image are always written to disk (scratchpad folder) and the tool result always includes the file's http:// link (if a local server is reachable) and its file:// link; no inline base64 preview is included.
CHAT_WORKING_DIRECTORIES: absolute base directory for all Bionic scratchpads. Default ~/.lmstudio/scratchpads.
VISION_API: which kind of vision server this entrypoint expects behind VISION_API_BASE_URL — bionic, generic, unsloth, or llama-server. Default bionic here; override only if your server doesn't actually match this preset's usual kind.
VISION_API_BASE_URL: Vision API server URL. Defaults to a local LM Studio server, where existing /v1 or /api/v1 suffixes are normalized away before internal /api/v1 calls; any OpenAI-compatible vision endpoint can be configured instead. Default http://127.0.0.1:1234/v1.
VISION_API_KEY: optional API key if the server requires it. Default empty.
QWEN3_VL_MODEL: LM Studio model key for Qwen3-VL, not a filesystem path. Default qwen/qwen3-vl-8b.
EMBED_PNG_METADATA: embed analysis provenance and detected bounding boxes as Draw Things-compatible XMP metadata into PNGs saved by detect_object/annotate_image. Default true.
INCLUDE_GENERATION_METADATA: append Draw Things generation parameters (prompt, model, seed, ...) embedded in the source PNG to each analyse_image result. Default true.
💡 Tip: If you notice a timeout error such as:
try increasing the
Request timeout (seconds)value in the Bionic MCP configuration until the error goes away. Bionic apparently doesn't supportnotifications/progressyet and pins theresetTimeoutOnProgressparameter tofalse.
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.
VISION_API: which kind of vision server this entrypoint expects behind VISION_API_BASE_URL — bionic, generic, unsloth, or llama-server. Default llama-server here; override to unsloth only if you want to talk to Unsloth Studio's own API directly instead of a separately-managed router-mode llama-server. This NOT recommended at the moment since the Unsloth API cannot handle more than one llama-server instance in parallel.
VISION_API_BASE_URL: Vision API server URL. Default http://127.0.0.1:8888/v1 (Unsloth Studio's own OpenAI-compatible server).
VISION_API_KEY: optional API key if the server requires it. Default empty.
QWEN3_VL_MODEL: Unsloth Studio model key for Qwen3-VL, not a filesystem path. Default unsloth/Qwen3-VL-8B-Instruct-GGUF.
LLAMA_SERVER_BINARY: absolute path to the llama-server binary used only by VISION_API=llama-server — that mode spawns and manages its own standalone router-mode llama-server process, entirely independent of Unsloth Studio's own agent model process (works around Unsloth Studio's single-model-slot eviction, see the Unsloth limitations note below). Default ~/.unsloth/llama.cpp/llama-server.
LLAMA_SERVER_PORT: local port the VISION_API=llama-server router listens on — independent of VISION_API_BASE_URL, which stays Unsloth Studio's own fixed address (8888). Default 8099.
EMBED_PNG_METADATA: embed analysis provenance and detected bounding boxes as Draw Things-compatible XMP metadata into PNGs saved by detect_object/annotate_image. Default true.
INCLUDE_GENERATION_METADATA: append Draw Things generation parameters (prompt, model, seed, ...) embedded in the source PNG to each analyse_image result. Default true.
💡 Unsloth Desktop settings: without a
VISION_API_KEY, this only works if Unsloth Studio's API access is opened up beyond keyless "inference only" (e.g. "everything else") — otherwise set a real Unsloth API key viaVISION_API_KEYinstead. Assign8,192 contextto the vision model (unsloth/Qwen3-VL-8B-Instruct-GGUF) in Unsloth Studio's model settings.
command: nodeargs: path to analyse-image's start-mcp.mjs. Example: /Users/ceveyne/.lmstudio/extensions/plugins/ceveyne/analyse-image/start-mcp.mjsMCP_MADE_FOR: generic. Produces a generic tool result: detect_object/annotate_image responses include an inline base64 JPEG preview of the annotated file. Annotated files are always written to disk and the tool result always includes the file's http:// link (if a local server is reachable) and its file:// link.CHAT_WORKING_DIRECTORIES: absolute base directory for all working folders. Default ~/Pictures.VISION_API: which kind of vision server this entrypoint expects behind VISION_API_BASE_URL — bionic, generic, unsloth, or llama-server. Default llama-server here; override to generic only if VISION_API_BASE_URL already points at a ready-to-use OpenAI-compatible server you manage yourself.VISION_API_BASE_URL: Vision API server URL. Default http://127.0.0.1:1234/v1.VISION_API_KEY: optional API key if the server requires it. Default empty.QWEN3_VL_MODEL: model key/id for Qwen3-VL as reported by your server's /v1/models, not a filesystem path. Default qwen/qwen3-vl-8b.LLAMA_SERVER_BINARY: absolute path to the llama-server binary used only by VISION_API=llama-server — that mode spawns and manages its own standalone router-mode llama-server process, entirely independent of any other model loading. Default ~/.lmstudio/extensions/backends/qwen3-vl-embedding/llama-server.LLAMA_SERVER_PORT: local port the VISION_API=llama-server router listens on — independent of VISION_API_BASE_URL, which stays the real Vision API's own fixed address. Default 8099.EMBED_PNG_METADATA: embed analysis provenance and detected bounding boxes as Draw Things-compatible XMP metadata into PNGs saved by detect_object/annotate_image. Default true.INCLUDE_GENERATION_METADATA: append Draw Things generation parameters (prompt, model, seed, ...) embedded in the source PNG to each analyse_image result. Default true.{
"name": "analyse-image",
"enabled": true,
"connection": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/analyse-image/start-mcp.mjs"],
"env": {
"MCP_MADE_FOR_BIONIC": "true",
"CHAT_WORKING_DIRECTORIES": "/absolute/path/to/bionic-scratchpads",
"VISION_API_BASE_URL": "http://127.0.0.1:1234/v1",
"QWEN3_VL_MODEL": "qwen/qwen3-vl-8b",
"EMBED_PNG_METADATA": "true",
"INCLUDE_GENERATION_METADATA": "true"
}
}
}
{
"name": "analyse-image",
"enabled": true,
"connection": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/analyse-image/start-mcp.mjs"],
"env": {
"MCP_MADE_FOR": "unsloth",
"CHAT_WORKING_DIRECTORIES": "/absolute/path/to/.unsloth/studio/sandbox",
"CLIENT_DB_LOCATION": "/absolute/path/to/.unsloth/studio/studio.db",
"LLAMA_SERVER_BINARY": "/absolute/path/to/.unsloth/llama.cpp/llama-server",
"LLAMA_SERVER_PORT": "8099",
"QWEN3_VL_MODEL": "unsloth/Qwen3-VL-8B-Instruct-GGUF",
"EMBED_PNG_METADATA": "true",
"INCLUDE_GENERATION_METADATA": "true"
}
}
}
{
"name": "analyse-image",
"enabled": true,
"connection": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/analyse-image/start-mcp.mjs"],
"env": {
"MCP_MADE_FOR": "generic",
"CHAT_WORKING_DIRECTORIES": "/absolute/path/to/pictures",
"VISION_API_BASE_URL": "http://127.0.0.1:1234/v1",
"QWEN3_VL_MODEL": "qwen/qwen3-vl-8b",
"EMBED_PNG_METADATA": "true",
"INCLUDE_GENERATION_METADATA": "true"
}
}
}
npm run typecheck # plugin + MCP
npm run build # LM Studio plugin
npm run build:mcp # MCP entrypoint
npm run test:mcp # unit tests + stdio smoke test
!Tool call failed
Error calling analyse_image: MCP error -32001: Request timed out
!Tool call failed
Error calling analyse_image: MCP error -32001: Request timed out