Other harness setup
Use the guided installer by default. This page covers the desktop-app UI used by WorkBuddy, QoderWork, and QwenWork, plus direct Skill + MCP registration alternatives.
Desktop-app UI
| Product | Installation path |
|---|---|
| CodeBuddy | Guided installer |
| WorkBuddy | Plugins page below |
| Qoder | Guided installer |
| QoderWork | In-app task below |
| Qwen Code | Guided installer |
| QwenWork | In-app task below |
WorkBuddy (Plugins page)
WorkBuddy reads the repository's .claude-plugin/marketplace.json and installs each plugin as one
bundle. Open Plugins, click +, add
https://github.com/QwenLM/Qwen-MM-Plugins.git, then install the desired qwen-mm-plugins-*
plugins from that marketplace. Use the same page to update or uninstall them.
QoderWork and QwenWork (in-app task)
Start a task in the app, provide the repository URL and desired capability names, and ask it to install the complete Skill + MCP bundle. For example:
Install qwen-mm-plugins-core from https://github.com/QwenLM/Qwen-MM-Plugins.
Keep its Skill and MCP server on the same released tag, then verify that the MCP tools are online.
Review the resulting entries in the app's Skills and MCP/Connectors panels. To update, repeat the
task with the current release; to uninstall, remove both entries in those panels. edu-agent has
only a Skill entry.
Direct Skill + MCP registration
For the direct Skill + MCP registrations below, replace <cap> with core, api, search,
video-memory, omni-memory, omni-video2note, video-edit, omni-chatcut, blender, or freecad. edu-agent is Skill-only. Use one immutable
tag for both the Skill and MCP command:
qwen-mm-plugins-<cap>-v<version>
Claude Code
ln -s /path/to/tagged-checkout/src/capabilities/<cap>/skill \
~/.claude/skills/qwen-mm-plugins-<cap>
claude mcp add qwen-mm-plugins-<cap> -- \
uvx --from \
"qwen-mm-plugins[<cap>] @ git+https://github.com/QwenLM/Qwen-MM-Plugins.git@qwen-mm-plugins-<cap>-v<version>" \
qwen-mm-plugins-<cap>
For local source, replace the Git package spec with /path/to/Qwen-MM-Plugins[<cap>].
opencode
Copy the Skill to ~/.config/opencode/skills/qwen-mm-plugins-<cap> and add:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"qwen-mm-plugins-<cap>": {
"type": "local",
"command": [
"uvx", "--from",
"qwen-mm-plugins[<cap>] @ git+https://github.com/QwenLM/Qwen-MM-Plugins.git@qwen-mm-plugins-<cap>-v<version>",
"qwen-mm-plugins-<cap>"
],
"enabled": true
}
}
}
Use ~/.config/opencode/opencode.json or a project-level opencode.json.
DeepSeek Harness (developer preview)
Validated with @deepseek-ai/dsh 0.1.0-rc.6. DSH loads Skills from $DSH_HOME/skills (normally
~/.dsh/skills) and connects stdio MCP servers through its bundled @deepseek-ai/dsh-mcp-client;
it currently requires manual registration. The guided installer's Configure and Verify
actions remain usable because they do not depend on harness-specific registration.
Install and start DSH once to create the web profile:
npm install --global @deepseek-ai/dsh@0.1.0-rc.6
dsh --profile web
DSH filters credential-like variables from MCP child environments, so write provider settings to the shared config file first:
bash install.sh configure
Copy the Skill from the tag used by the MCP command:
dsh_home=${DSH_HOME:-"$HOME/.dsh"}
mkdir -p "$dsh_home/skills"
cp -R /path/to/tagged-checkout/src/capabilities/<cap>/skill \
"$dsh_home/skills/qwen-mm-plugins-<cap>"
Add the MCP row to $DSH_HOME/profiles/web/cordis.patch.yml (normally
~/.dsh/profiles/web/cordis.patch.yml). Replace an initial [], or merge the row into the existing
array:
- insert:
- id: mcp-qwen-mm-plugins-<cap>
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: qwen-mm-plugins-<cap>
transport: stdio
command: uvx
args:
- '--from'
- 'qwen-mm-plugins[<cap>] @ git+https://github.com/QwenLM/Qwen-MM-Plugins.git@qwen-mm-plugins-<cap>-v<version>'
- 'qwen-mm-plugins-<cap>'
cwd: !!js process.cwd()
Add one child row per capability. Save the file, restart DSH, and open a new session:
dsh --profile web
Compatibility: DSH 0.1.0-rc.6 preserves MCP text and structured results but replaces image,
audio, and resource blocks with content discarded. Text results from vision_chat, OCR, ASR, and
search remain usable; workflows that depend on media returned by MCP are incomplete. See the
upstream
dsh-mcp-client limitation.
Hermes Agent
Validated with Hermes Agent v0.19.0. The Hermes installation must include MCP support
(hermes-agent[mcp] or hermes-agent[all]). Copy the complete Skill directory from the same
immutable tag used by the MCP command. Do not use the URL-based Skill installer here: Hermes v0.19
may omit runtime files from referenced directories.
hermes_home=${HERMES_HOME:-"$HOME/.hermes"}
mkdir -p "$hermes_home/skills"
skill_target="$hermes_home/skills/qwen-mm-plugins-<cap>"
[ ! -e "$skill_target" ] || \
mv "$skill_target" "$hermes_home/qwen-mm-plugins-<cap>.bak.$(date +%Y%m%d%H%M%S)"
cp -R /path/to/tagged-checkout/src/capabilities/<cap>/skill \
"$skill_target"
Register and verify the MCP server (edu-agent is Skill-only):
uvx_bin=$(command -v uvx)
hermes mcp add qwen-mm-plugins-<cap> \
--command "$uvx_bin" \
--connect-timeout 180 \
--args --from \
"qwen-mm-plugins[<cap>] @ git+https://github.com/QwenLM/Qwen-MM-Plugins.git@qwen-mm-plugins-<cap>-v<version>" \
qwen-mm-plugins-<cap>
hermes mcp test qwen-mm-plugins-<cap>
Confirm that the test reports Connected and a nonzero tool count; Hermes v0.19 may exit with
status 0 even after reporting a connection failure.
Compatibility: At the provider boundary, Hermes is similar to DSH, but the mechanism differs.
DSH discards MCP media blocks; Hermes caches returned images locally and sends only
MEDIA:<local-path> text to the provider. Text and structured results remain usable, but the
provider receives no image pixels. For read_video, timestamps and frame order remain while the
original multi-frame visual context is lost; rereading individual cached frames does not restore
that interleaved sequence.
pi
pi supports Skills directly; MCP tools require the community adapter:
cp -r /path/to/tagged-checkout/src/capabilities/<cap>/skill \
~/.pi/agent/skills/qwen-mm-plugins-<cap>
pi install npm:pi-mcp-adapter
Add the server to ~/.config/mcp/mcp.json:
{
"settings": { "toolPrefix": "none" },
"mcpServers": {
"qwen-mm-plugins-<cap>": {
"command": "uvx",
"args": [
"--from",
"qwen-mm-plugins[<cap>] @ git+https://github.com/QwenLM/Qwen-MM-Plugins.git@qwen-mm-plugins-<cap>-v<version>",
"qwen-mm-plugins-<cap>"
]
}
}
}
QwenPaw 2.0
QwenPaw does not consume this repository's plugin manifests. Copy the Skill (symlinks are rejected), then enable it:
cp -r /path/to/tagged-checkout/src/capabilities/<cap>/skill \
~/.qwenpaw/workspaces/default/skills/qwen-mm-plugins-<cap>
qwenpaw skills list
qwenpaw skills config
Add the server under mcp.clients in ~/.qwenpaw/workspaces/default/agent.json:
{
"mcp": {
"clients": {
"qwen-mm-plugins-<cap>": {
"name": "qwen-mm-plugins-<cap>",
"enabled": true,
"transport": "stdio",
"command": "uvx",
"args": [
"--from",
"qwen-mm-plugins[<cap>] @ git+https://github.com/QwenLM/Qwen-MM-Plugins.git@qwen-mm-plugins-<cap>-v<version>",
"qwen-mm-plugins-<cap>"
]
}
}
}
}
Update
Run the current installer and choose Update → other (manual / another harness). Replace both the copied/linked Skill and MCP Git ref with the tag it prints, then reload the harness. The installer cannot safely edit unknown harness paths or infer the version of a copied Skill.