hermes-dsh-bridge
hermes-dsh-bridge
Plugin MCP especializado en puentear Hermes ↔ DeepSeek Harness: inicia un servidor MCP dentro de Harness, permitiendo que clientes MCP externos (como Hermes) manejen el Agent de Harness para ejecutar tareas de codificación reales.
Hermes es el cerebro, Harness es las manos.
Por qué existe
Harness incluye un potente runtime de agentes (herramientas, LLM, Agent, sesiones), pero es un aplicación de Cordis que otros agentes no pueden adaptar. Este plugin le da la vuelta a Harness: lanza un servidor MCP real (StreamableHTTP) dentro de Harness, conectando los servicios centrales de Harness (ctx.agents / ctx.agentPresets / ctx.tools), para que un “cerebro” externo lo asigne tareas reales a las “manos” de Harness.
Hermes (MCP client, 大脑)
│ agent_run / task_inbox / fs_read / session_stats ... (HTTP)
▼
harness-mcp-server (MCP server, :8090)
│ ctx.agents.create → mount 'standard' preset
▼
Harness agent — 完整工具集: bash, fs, todo, web…Related MCP server: dsh-harness-mcp-server
Herramientas (19)
Tareas
Herramienta | Dirección | Uso |
| → Harness | Ejecuta tareas sincrónicamente; devuelve resultado estructurado + |
| → Harness | Envía tareas estructuradas (tarea + contexto de memoria + cwd) a una cola asíncrona |
| ← Harness | Recupera el resultado estructurado de esa tarea en la cola |
| ← Harness | Instantánea de la cola asíncrona (id/status/createdAt/error) |
Sesiones
Herramienta | Dirección | Uso |
| ← | Lista sesiones (live + persistidas en un mismo lugar), incluye por fila un resumen de tokens/uso de LLM |
| ← | Lee eventos de la sesión (razonamiento ya omitido), última N entradas, filtrado por tipo |
| ← | Estadísticas de sesión: rounds/steps/lpTiempo/toolTiempo/ttft/tokensPerSec/cacheHitRate/inputTokens/outputTokens |
| ← | Renombra la sesión (para facilitar el archivo) |
| ← | Agrupa una sesión en un workspace |
Archivos (con restricción de path jail)
Herramienta | Dirección | Uso |
| ← | Lee archivos de texto (paginación por línea; path jail + blocklist de nombres sensibles) |
| ← | Lista directorios (recursivo hasta depth, elementos sensibles ocultados automáticamente) |
| ← | Metadatos de archivo/directorio |
| → | Escribe archivos (overwrite/append/create-nuevo) — opt-in (solo se registra con |
Estado y configuración
Herramienta | Direccion | Uso |
| ← | version/tiempo de actividad/provider/modelo/preajustes/agentes activos/profundetad de la cola |
| ← | Resumen de configuración en runtime ( |
Presets
Herramienta | Dirección | Uso |
| ← | Lista los agentes disponibles con preset + el predeterminado |
| ← | Consulta qué preset está activo en una sesión (o el predeterminado) |
| → | Cambia el preset predeterminado ( |
Meta
Herramienta | Dirección | Uso |
| — | Verifica la conectividad MCP |
| — | Lista los nombres de las herramientas registradas internamente en Harness |
Resultado estructurado y estadística
Cada agent_run devuelve un resultado estructurado y añade las estadísticas de uso de esa ronda:
{
"sessionId": "...",
"assistantText": "最终回答",
"toolCalls": [{ "name": "bash", "args": "..." }],
"toolResults": ["命令输出"],
"changes": "改了什么",
"verification": "怎么验证的",
"leftovers": "遗留问题",
"stats": {
"rounds": 1, "steps": 3,
"llmTime": 13.9, "toolTime": 0.04,
"ttft": 3349, "tokensPerSec": 40.7,
"cacheHitRate": 1, "inputTokens": 8831, "outputTokens": 157
}
}Se crea la presión: el cliente alimenta la memoria como context en cada tarea y vuelve a guardar el resultado (changes/verification/leftovers) en la memoria del cliente para la siguiente.
Instalación
Opción A — instalar desde npm en un perfil de Harness
# 在 Harness profile 的 node_modules 下
cd ~/.dsh/profiles/<你的profile>/node_modules
npm install hermes-dsh-bridgeOpción B — compilar desde el código fuente
git clone https://github.com/Emilia-awa/hermes-dsh-bridge.git
cd hermes-dsh-bridge
npm install && npm run build # 产出 lib/index.js
# 把构建产物放进 Harness profile:
# ~/.dsh/profiles/<你的profile>/node_modules/hermes-dsh-bridge⚠️ Peligro de doble paquete (obligatorio): Harness resuelve
@deepseek-ai/*desde su árbol global; los propiosnode_modulesdelplugin pueden tener una copia en paralelo — dos instancias de módulo ⇒Symbolno coincide ⇒ el Agent pierde silenciosamente todas las herramientas (manifestado comoagent_rundevuelve solo texto<tool_calls>ytoolCallssiempre es una matriz vacía). Solución: se vincula simbólicamente la dependencia@deepseek-ai/*del plugin al árbol global de Harness:PROFILE=~/.dsh/profiles/<你的profile>/node_modules GLOBAL=$(npm root -g)/@deepseek-ai/dsh/node_modules/@deepseek-ai for pkg in cordis cosmokit dsh-agent dsh-llm dsh-session dsh-tools dsh-scope \ dsh-agent-presets dsh-code-runtime dsh-system-prompt dsh-typert-protocol \ dsh-attachment dsh-brand dsh-invariants dsh-timeout dsh-settings \ dsh-home-paths dsh-atomic-write dsh-user-approval \ cordis-plugin-include cordis-plugin-loader; do rm -rf "$PROFILE/@deepseek-ai/$pkg" && ln -sfn "$GLOBAL/$pkg" "$PROFILE/@deepseek-ai/$pkg" done(
cordis-plugin-include/loaderno está publicado en el registro de npm, solo existe en el árbol global de Harness, por lo que debe enlazarse simbólicamente).
Configuración de Parche
Al final de cordis.patch.yml del perfil de Harness (o el archivo de parches equivalente), añade:
- insert:
- id: hermes-dsh-bridge
name: 'hermes-dsh-bridge'
config:
http: true
port: 8090
host: 127.0.0.1 # 默认仅本机; 暴露前必须加认证
# authToken: '你的随机长token' # 可选: Bearer token 认证
# workspaceRoots: ['/workspace'] # 可选: cwd 白名单
# enableFsWrite: true # 可选: 开启 fs_write(默认关)
# ⚠️ 必须显式声明 provider/model, 否则 agent 组装会因空 {{model}} 崩溃:
provider: opencode-go
model: deepseek-v4-flashReiniciar y verificar
systemctl restart dsh.service # 或你管理 Harness 的方式
# 验证 19 个工具全在线:
python3 examples/hermes_dsh_mcp.py list
python3 examples/hermes_dsh_mcp.py call status_get '{}'🤖 Guía de instalación con IA en un clic (instrucciones de instalación para Agent IA)
Los pasos siguientes son para otro Agente de IA: si eres un agente de IA y quieres instalar este plugin en el entorno de Harness que gestionas, ejecuta estrictamente los pasos numerados comprobando la salida tras cada uno antes de continuar.
Comprobaciones previas (primeros 3 pasos)
Confirma que Node ≥ 22.18:
node --version(si es menor de 22.18 se mostrarán errores de falta de zstd/stripTypeScriptTypes; antes actualiza Node).Confirma que existe el perfil de Harness:
ls ~/.dsh/profiles/(busca el nombre de perfil que quieres instalar; de aquí en adelante se indicará<PROFILE>).Confirma que existen el árbol global de Harness:
npm root -g(de aquí en adelante se usa$GLOBAL_TREEen lugar denpm root -g).
Pasos de instalación (se pueden copiar y ejecutar)
# ① 安装插件到 profile
cd ~/.dsh/profiles/<PROFILE>/node_modules
npm install hermes-dsh-bridge # 未发布到 npm 前用方式 B(源码)
# ② 修复 dual-package hazard: 把所有 @deepseek-ai/* 和 cordis-plugin-* symlink 到全局树
GLOBAL_TREE=$(npm root -g)/@deepseek-ai/dsh/node_modules/@deepseek-ai
for pkg in cordis cosmokit dsh-agent dsh-llm dsh-session dsh-tools dsh-scope \
dsh-agent-presets dsh-code-runtime dsh-system-prompt dsh-typert-protocol \
dsh-attachment dsh-brand dsh-invariants dsh-timeout dsh-settings \
dsh-home-paths dsh-atomic-write dsh-user-approval \
cordis-plugin-include cordis-plugin-loader; do
rm -rf "@deepseek-ai/$pkg" 2>/dev/null
ln -sfn "$GLOBAL_TREE/$pkg" "@deepseek-ai/$pkg"
done
# ③ 在 profile 的 cordis patch 文件(cordis.patch.yml)末尾追加配置
cat >> ~/.dsh/profiles/<PROFILE>/cordis.patch.yml <<'EOF'
- insert:
- id: hermes-dsh-bridge
name: 'hermes-dsh-bridge'
config:
http: true
port: 8090
host: 127.0.0.1
provider: opencode-go # ← 换成你自己的 provider id
model: deepseek-v4-flash # ← 换成你自己的 model id
EOF
# ④ 重启 Harness(注意: 若你正跑在 Harness 里, 用 systemd-run 脱离进程树重启)
systemctl restart dsh.service
# ⑤ 验证: 等 8 秒后检查 MCP server 起来 + 工具列表
sleep 8
curl -s -X POST http://127.0.0.1:8090/mcp \
-H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"ai-setup","version":"1.0"}}}' \
| tail -1 | head -c 300
python3 examples/hermes_dsh_mcp.py list | grep -cE "agent_run|session_stats|preset_set" # 期望 ≥ 3Criterios de aceptación
dsh_mcp.py listdebe mostrar ≥ 19 herramientas, e incluir obligatoriamenteagent_run,session_stats,preset_set,fs_read.status_getdebe devolverversioncon valor0.3.0; yprovider/modeldeben tener los valores que has configurado.Si ejecutas una tarea de prueba
python3 examples/hermes_dsh_mcp.py run '回复:安装成功', obtén un resultado con el campostats.
Fallos habituales y contramedidas (consulte a los que encuentre)
Síntoma | Causa | Resolución |
| Tenías dos instancias de paquete (dual-package hazard) y la reconstrucción de npm ha deshecho el symlink | Repite el symlink del paso ② y reinicia |
Iniciar da error | 没有 incluir provider/model | 提供即时回到 |
| La clave de API no está inyectada en el proceso | añade |
`Cannot find package '@deepseek-ai/cordis-plugin-include', | 第二个步骤 que falta | 补上两个包的符号链接 |
La versión coincide, pero el comportamiento parece una versión anterior | 有双工程 npm 全局树, 而且装错 | Check |
La solución completa está en docs/TROUBLESHOOTING.md.
Documentación
docs/TOOLS.md — referencia completa de las 19 herramientas (entrada/salida/límites/códigos de error)
docs/CONFIG.md — configuraciones, valores predeterminados seguros
docs/TROUBLESHOOTING.md — problemas conocidos (parseo de SSE, truncado a 8KB, alerta de doble paquete…)
docs/SECURITY.md — modelo de amenazas
examples/hermes_dsh_mcp.py — client MCP en Python sin dependencias (solo biblioteca estándar)
Posicionamiento
Es adecuado como herramienta secundaria más que para uso diario: para el código diario, canaliza directamente tu main agent. Lóregalo cuando necesites aislar el contexto (un gran refactor puede reventar el contexto del cliente) o para ejecutar en paralelo tareas independientes.
El agente se reutiliza por cwd (evita volver a cargar el contexto del proyecto en cada llamada).
Bash está en entorno aislado (
workspace-write): en la máquina anfitriona instalabubblewrap; si no, se rechazarán los comandos de escritura.Los bloques razonamiento/pensamiento se descartan antes de devolverse (doble capa, ambas en el plugin y con protección a nivel textual).
Licencia
GPL-3.0-only, seura de acuerdo a y partes MIT upstream — ver NOTICE.md.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- FlicenseNot gradedqualityAmaintenanceAn experimental MCP gateway for controlling durable DeepSeek Harness agent sessions from MCP clients, enabling session creation, observation, steering, and resumption across chat sessions.4
- AlicenseNot gradedqualityAmaintenanceExposes DeepSeek Harness agent capabilities as an MCP server, letting any MCP client drive Harness to execute real coding tasks with structured results, context isolation, and parallel execution.8MIT
- AlicenseNot gradedqualityCmaintenanceExposes DeepSeek Harness's coding agent as a model backend via MCP, with user-confirmed task execution and self-inspection/config-patch tools.MIT
- FlicenseNot gradedqualityCmaintenanceExposes DeepSeek Harness skill and agent preset management as an MCP server, letting remote agents read, create, update, and delete skills/presets over HTTP with audit logging. It enables a production-to-review-to-modification workflow without SSH.
Related MCP Connectors
MCP server exposing the Backtest360 engine API as tools for AI agents.
A paid remote MCP for OpenAI Codex agent coordination MCP, built to return verdicts, receipts, usage
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Emilia-awa/hermes-dsh-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server