DSH Plugins Marketplace

DSH Plugins

Plugins

/

Tools & Capabilities

/

dsh-image-gen-mcp

b

dsh-image-gen-mcp

Manifest valid

DeepSeek Harness plugin: image generation through a configurable, provider-agnostic backend. It mounts the bundled stdio MCP server behind an NDJSON bridge, exposing mcp__image_generation__image_generate and mcp__image_generation__image_config_status, and registers the bundled image-generation skill.

hasBundlePatch

image-gen-mcp

Configurable, provider-agnostic image generation, as a DeepSeek Harness plugin. Point it at any OpenAI-compatible /v1/images/generations endpoint and the model gains image_generate and image_config_status — plus a bundled skill that tells it when to use them.

A Codex plugin that exposes image generation tools through MCP with a configurable base URL and API key.

Install

DeepSeek Harness Desktop — open Plugins in the sidebar, choose Add plugin, and enter:

https://github.com/bauerelizabeth07139/image-gen-mcp

Then switch the new dsh-image-gen-mcp bundle on, and give it a backend (see Configuration — without a base URL and key the plugin deliberately mounts nothing and says so).

dsh CLI — install it into the profile you actually boot:

dsh plugin --profile web add bauerelizabeth07139/image-gen-mcp

No git on the machine? pnpm resolves a git shorthand with git ls-remote, which fails with 'git' is not recognized when git is missing. Use the tarball instead — that path is plain HTTPS:

dsh plugin --profile web add https://codeload.github.com/bauerelizabeth07139/image-gen-mcp/tar.gz/master

The same address works in the Desktop Add plugin dialog. Replace master with a commit SHA to pin an exact revision (/tar.gz/<sha>).

Uninstall with dsh plugin --profile web remove dsh-image-gen-mcp.

Requirements

  • Node.js ≥ 22 — the harness itself; the server is plain Node with no npm dependencies, so there is nothing to install.
  • A backend: a base URL that answers POST {baseUrl}/v1/images/generations and an API key for it. The base URL must not include /v1.

Tools

ToolWhat it does
mcp__image_generation__image_generateGenerates an image from a prompt. Parameters: prompt (required), model, size, n.
mcp__image_generation__image_config_statusReports whether the base URL and key are configured — ask this first when a generation fails for configuration reasons.

Bundled skill

skills/image-generation/SKILL.md is registered by the plugin, so the model knows the workflow: check image_config_status, generate with image_generate, return the artifact or an actionable error. It is adapted from the repository's original Codex skill — same workflow, harness tool names, plus a note about base64 payloads.

Configuration

KeyEnvironment variableDefaultMeaning
baseUrlIMAGE_GEN_BASE_URL(none — required)backend base URL, without /v1
apiKeyIMAGE_GEN_API_KEY(none — required)credential for that backend
modelIMAGE_GEN_DEFAULT_MODEL(empty)default model; the server picks dall-e-3 in openai mode and gpt-image-1 in generic mode when this is empty
providerIMAGE_GEN_PROVIDERgenericgeneric (URL response) or openai (base64 response)
timeoutMsIMAGE_GEN_TIMEOUT_MS30000the server's own HTTP budget
toolCallTimeoutMs—120000DSH's per-call budget
env—{}raw environment passthrough

Example loader row:

- id: dsh-image-gen-mcp
  name: 'dsh-image-gen-mcp'
  config:
    baseUrl: 'https://api.example.com'
    apiKey: 'sk-...'
    model: 'gpt-image-1'
    provider: 'generic'

The credential is forwarded explicitly: the harness scrubs credential-shaped variables (KEY, TOKEN, SECRET, PASSWORD) out of the environment a child would inherit, so an exported IMAGE_GEN_API_KEY is read at load time and written into the child's environment by the plugin.

Why this plugin ships a bridge

The server frames its stdio transport the LSP way — Content-Length: <n> followed by a blank line — while the MCP client inside DeepSeek Harness reads newline-delimited JSON. Mounted directly, the handshake would simply time out. bridge.mjs translates in both directions: NDJSON in from the harness, Content-Length frames to the server, and the reverse on the way back. Message bodies are reframed byte for byte, never re-parsed.

How it is mounted

index.js registers the skill, then mounts scripts/server.mjs through the bridge over stdio with failOnStartupError: true. If baseUrl or apiKey is missing it logs a warning and mounts nothing — a server that exits at startup would otherwise fail the whole bundle load — while still registering the skill, so the model can tell the user exactly what to configure.

Development

npm test

Four suites, all Harness-free: the manifest and card metadata (test/plugin.test.mjs), the bridge's framing and round trip (test/bridge.test.mjs), the stdio mount and credential forwarding (test/mount.test.mjs), and the bundled skill's registration (test/skill.test.mjs). The repository's own Python validators still work: python scripts/validate_plugin.py ., python scripts/test_server.py, python tests/test_provider_modes.py.

Repository layout

PathPurpose
index.jsthe DSH plugin: skill provider + stdio mount
bridge.mjsNDJSON ↔ Content-Length translation
cordis.patch.ymlthe loader row that activates the plugin
skills/image-generation/the bundled skill, adapted from the original
locale/{en,zh}.json, assets/icon.svgcard title, description and artwork
scripts/server.mjsthe MCP server, unchanged
scripts/server.py, scripts/test_server.pythe original Python HTTP debug server and its test, unchanged
scripts/validate_plugin.py, tests/the original Codex-plugin validators and tests, unchanged
.mcp.json, .codex-plugin/the original Codex plugin manifest, unchanged
README.opencode.mdthe repository's original README, verbatim

Other hosts (unchanged)

{
  "mcpServers": {
    "image-generation": {
      "command": "node",
      "args": ["scripts/server.mjs"],
      "env": {
        "IMAGE_GEN_BASE_URL": "${IMAGE_GEN_BASE_URL}",
        "IMAGE_GEN_API_KEY": "${IMAGE_GEN_API_KEY}"
      }
    }
  }
}

Two caveats carried over from the original setup: the relative scripts/server.mjs needs the repository root as the working directory, and a host that frames with newline-delimited JSON (like DSH) needs the bridge: node bridge.mjs -- node scripts/server.mjs.

License

MIT — the repository's own licence file, unchanged.

Comments

Loading…

From the same category

reactive-resume

DeepSeek Harness plugin for Reactive Resume: bridges your resumes and job applications into a Harness session over MCP.

Tools & CapabilitiesManifest valid

★ 41.7k

↓ 143/wk

MIT

Aug 24, 2026

dsh plugin --profile web add dsh-plugin-reactive-resume

by Tencent

Let AI agents use your real, logged-in browser without interrupting your work. CLI + extension for browser automation across any shell-capable AI agent.

Tools & CapabilitiesManifest valid

★ 8.5k

↓ 5.9k/wk

MIT

TypeScript

Oct 10, 2026

dsh plugin --profile terminal add @wxg-prc-cpg/browser-skill-dsh-plugin

by yjh051108

dsh-routing-suite — injector + router-standard kit: install the runtime injector first, then the task-aware reasoning-mode router preset (measured P1-P23).

Tools & CapabilitiesManifest valid

★ 7k

MIT

JavaScript

Sep 18, 2026

dsh plugin --profile web add @dsh-external/dsh-super-injector

by Q00

Agent OS: the agent gets smarter on its own. We just hold the line: Interview-gated, staged evaluation, budgeted evolution loop. MCP server, 14 runtimes: Claude Code, Codex CLI, Gemini CLI, OpenCode,

Tools & CapabilitiesManifest valid

★ 6.2k

MIT

Python

Oct 7, 2026

Index only — not installable

by dsh-market

The plugin market inside DeepSeek Harness — browse, search, one-click install · DSH 可视化插件市场

Tools & CapabilitiesManifest valid

★ 6k

↓ 95.5k/wk

MIT

TypeScript

Oct 9, 2026

dsh plugin --profile web add dshmarket

by superdesigndev

OpenRouter for agent tools. Join community here: https://discord.gg/6mQYYfFMAn

Tools & CapabilitiesManifest valid

★ 4.9k

NOASSERTION

Python

Oct 10, 2026

dsh plugin --profile web add treg-dsh