DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
S

dsh-simple-image

Simple Image

DeepSeek Harness 插件:通过兼容 StepFun 的 /images/generations 端点实现文本生成图像。它通过一个小型 NDJSON 桥接器挂载内置的零依赖 stdio MCP 服务器,并公开 mcp__simple_image__simple_image。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:bauerelizabeth07139/mcp-simple-image#dd0743035dd263860522e3ed9dbbd3c203293bea
README兼容性版本

兼容性与来源证明

Simple Image 以 dsh-simple-image 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/10/4

版本

0.1.0stable
2026/10/4

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/10/8
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
Simple Image — DeepSeek Harness 插件(DSH Plugin)

相关插件

继续浏览 vision-media 分类下经过校验的插件。

Modlens@liustack/modlens面向仅支持文本的 LLM 的插件视觉能力,由免费的 Antigravity CLI 提供支持Tool Describe Image@linxin666/dsh-tool-describe-image面向模型的 describe_image 工具,用于 dsh Web GUI:通过在兼容 OpenAI 的端点调用视觉语言模型,为文本模型提供图像理解能力,以描述一张图像(本地路径、http(s) URL 或附件引用)。可热插拔 —Vision Routerdsh-vision-router为仅支持文本的 DeepSeek Harness agents 提供视觉能力:内置免费视觉链路和像素级工具。除非配置为严格仅限本地使用,否则远程视觉提供商(包括默认的免费回退服务)会接收图像内容。Vision Toolkit@anionex/dsh-vision-toolkit面向 Harness 原生集成的 DeepSeek 与 agent-vision-toolkit:图像问答、OCR、定位、UI 还原、像素差异、Artifacts 和 Web UI。

README

mcp-simple-image

One tool, one endpoint. simple_image posts a prompt to a StepFun-compatible /images/generations API and returns the resulting image URLs — no SDK, no third-party packages.

一个工具、一个端点:把提示词发给 StepFun 兼容的图片生成 API,拿回图片 URL。

As a DeepSeek Harness plugin: the MCP server ships inside the bundle, so installing one plugin is the whole setup — no mcpServers file to hand-edit.

Install

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

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

Then switch the new dsh-simple-image bundle on. The Desktop app boots the reserved desktop profile, so that is where it has to be enabled.

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

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

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/mcp-simple-image/tar.gz/main

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

Uninstall with dsh plugin --profile web remove dsh-simple-image.

Requirements

  • Python ≥ 3.8 on PATH, or pointed at with python.
  • No third-party packages — the server is pure standard library.
  • A StepFun-compatible API key in STEP_API_KEY (or config.apiKey). Without one the server exits at startup with ERROR: STEP_API_KEY is not set.
  • An endpoint that already includes /v1 — the server appends /images/generations itself and hardcodes response_format: url.

Tools

The server registers tool(s). DSH namespaces them automatically, so the model calls them as :

1
mcp__simple_image__<tool>
ToolWhat it does
simple_imageCalls POST {STEP_API_BASE}/images/generations and returns the image URLs as text. Parameters: prompt (required), model, size (default 1024x1024), n (1–4).

Configuration

KeyEnvironment variableDefaultMeaning
python—discoveredinterpreter that runs the server
apiKeySTEP_API_KEY(empty)required; the server refuses to start without it
baseUrlSTEP_API_BASEhttps://api.stepfun.com/step_plan/v1API base, including /v1
modelSTEP_MODELstep-image-edit-2model id
toolCallTimeoutMs—300000DSH's per-call budget; the server's own HTTP timeout is 120 s
env—{}raw environment passthrough (for example STEP_CONFIG, STEP_SIZE, STEP_N)

Every field is optional and lives in the loader row. For example, in cordis.patch.yml:

- id: dsh-simple-image
  name: 'dsh-simple-image'
  config:
    apiKey: 'sk-...'
    baseUrl: 'https://api.stepfun.com/step_plan/v1'
    model: 'step-image-edit-2'

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 time out with no error worth reading. bridge.mjs sits between the two: NDJSON in from the harness, Content-Length frames to the server, and the reverse on the way back.

Messages are never re-encoded, only reframed, and the parser tolerates a \r\r\n\r\r\n header — which is what this server emits on Windows, where Python's text mode turns each \n into \r\n.

Notes

  • config.json wins over the environment. If config.json (or STEP_CONFIG) exists next to the server, its api_key / api_base / model values are read first. Do not leave a copied config.example.json in place: its placeholder key is truthy, so the server starts with a bogus credential.
  • Results are URLs, not files. The endpoint is asked for response_format: url, so the tool returns links that expire; nothing is written to disk.
  • The base URL must already contain /v1. The server appends /images/generations verbatim, so an OpenAI-style base URL without /v1 produces a 404.

How it is mounted

index.js resolves a Python interpreter (the configured python, then python3/python on PATH), hands the server its argv and working directory, and mounts it as a stdio MCP server through @deepseek-ai/dsh-mcp-client with failOnStartupError: true, so a server that cannot start is a visible error rather than a silently missing tool.

Credentials are forwarded explicitly. The harness scrubs credential-shaped variables (KEY, TOKEN, SECRET, PASSWORD) out of the environment a child process inherits, so config.apiKey — falling back to the variable the server documents — is written into the child's environment by the plugin itself. That means both of these work:

config:
  apiKey: '<your key>'
export STEP_API_KEY='<your key>'   # picked up at load time

Development

No build step and no runtime dependencies — @deepseek-ai/cordis and @deepseek-ai/dsh-mcp-client are peers supplied by the Harness.

npm test    # node >= 22: manifest checks + the stdio mount, both Harness-free

The mount test loads index.js with @deepseek-ai/dsh-mcp-client stubbed and asserts the exact stdio configuration the plugin produces, including the credential forwarding above.

Repository layout

PathPurpose
index.jsthe DSH plugin: resolves the interpreter and mounts the server
cordis.patch.ymlthe loader row that activates the plugin
locale/{en,zh}.jsoncard title and description for the plugin lists
assets/icon.svgcard artwork
test/npm test: manifest composition and the mount contract
server.pythe MCP server, unchanged
bridge.mjsNDJSON ↔ Content-Length translation for the harness
config.example.jsonthe server's own configuration template, unchanged
package.upstream.jsonthe repository's original npm manifest, kept verbatim

Other hosts (unchanged)

The server is a plain stdio MCP server and still works anywhere else. The repository's original README is kept verbatim as README.opencode.md, and the launch stanza from it keeps working:

STEP_API_KEY=sk-... python server.py                       # any MCP host that
                                                           # frames with
                                                           # Content-Length
node bridge.mjs -- python server.py                        # …or line-delimited
                                                           # JSON, through the
                                                           # bridge

License

MIT — the repository declared MIT in package.json and its README but shipped no licence file; this plugin's release adds one.