Skills and MCP
omdsh keeps both capabilities behind DeepSeek Harness interfaces. Skills are discovered by the Harness skill registry and filesystem provider; MCP servers are adapted into one @deepseek-ai/dsh-mcp-client plugin instance per server. The TUI does not implement either protocol.
Skills
Skills are enabled by default. The filesystem provider searches these roots in priority order:
<project>/.dsh/skills<project>/.agents/skills$OMDSH_HOME/skills(or$DSH_HOME/skills, then~/.dsh/skills)~/.agents/skills
A skill may be a directory containing SKILL.md or a flat Markdown file. For example:
.dsh/skills/code-review/SKILL.md
---
name: code-review
description: Review a change for correctness and maintainability.
---
Review the current diff, run focused tests, and report findings by severity.
Skills share the normal slash-command catalog, following pi/OMP’s flat model. Type /skill: to browse and filter them with concise descriptions inline, then press Enter to invoke one. The older /code-review form is still accepted for compatibility but is no longer advertised. The model receives the same catalog through the Harness skill tool and can load a matching skill on demand.
MCP
omdsh reads MCP configuration from:
$OMDSH_HOME/mcp.json,$DSH_HOME/mcp.json, or~/.dsh/mcp.json<project>/.dsh/mcp.json
Project definitions override same-named user definitions. A project MCP file can start local programs, so review it before launching omdsh in an unfamiliar repository.
The document uses the common mcpServers shape. A stdio server:
{
"mcpServers": {
"memory": {
"command": "mcp-server-memory",
"args": [],
"env": {
"MEMORY_FILE_PATH": "/absolute/path/to/memory.jsonl"
}
}
}
}
A Streamable HTTP server:
{
"mcpServers": {
"github": {
"url": "https://example.com/mcp",
"headers": {
"Authorization": "Bearer token"
}
}
}
}
Supported optional fields are enabled, timeout (or toolCallTimeoutMs), failOnStartupError, and the Harness reconnect object. Stdio entries additionally accept cwd; HTTP entries accept headers. String values support ${NAME} and ${NAME:-default} environment expansion, so credentials do not need to be stored directly in the JSON file. An unresolved placeholder without a default remains literal.
Discovered tools use mcp__<server>__<tool> names and enter the normal Harness tool registry. /mcp groups the connected tools by server; /tools shows them alongside native tools. Tool-list changes after an MCP reconnect update both views automatically.
With at least one server configured, the model can also list and read that server’s resources through the shared list_mcp_resources, list_mcp_resource_templates, and read_mcp_resource tools, each named for the server it queries. Resource text enters the conversation history; binary payloads stay available to programmatic callers. MCP prompt templates remain unsupported.