Preface¶
In DeepSeek Harness (DSH), when letting agents invoke external applications, a common practice is to directly write each Provider’s API Key into the Harness configuration or register a large number of tools into the MCP tool surface all at once. The former exposes credentials at the client boundary, while the latter causes the tool list to bloat and become difficult to maintain.
dsh-oomol is a networked tool plugin maintained by oomol-lab that connects the Harness to the OOMOL Connector (hosted OOMOL Hosted or self-hosted OpenConnector). The Harness only retains the Connector client key, while Provider credentials remain on the Connector side; Actions are exposed on-demand via progressive MCP discovery, rather than presenting the entire toolset upfront.
What This Is¶
dsh-oomol (npm package name dsh-oomol, current version 0.1.4) is the OOMOL Connector for DeepSeek Harness. Each plugin instance corresponds to a single Connector endpoint, supporting:
- OOMOL Hosted: Connects by default to
https://connector.oomol.com/v1/mcp - Self-hosted OpenConnector: Overrides the
endpointin the profile’scordis.patch.yml
The plugin appears under the Harness’s Settings > Plugins > OOMOL Connector, licensed under MIT.
Core Features¶
Progressive MCP Discovery¶
The plugin mounts the Harness’s Streamable HTTP MCP client and connects to the selected Connector endpoint. Connector Actions remain progressively discoverable, keeping the Harness-side resident tool surface small.
Credential Boundary Separation¶
- OOMOL Hosted: Provider credentials are stored in the OOMOL Connector; the Harness accesses the Connector via
OOMOL_MCP_API_KEY - Self-hosted: Provider credentials are stored in the OpenConnector; uses
OOMOL_CONNECT_RUNTIME_TOKENon demand (or customapiKeyEnv) - The browser side only receives credential references and status metadata; the Connector API Key and Provider credentials remain within the Host-side secret boundary
Dual Deployment Modes¶
| Mode | Default Endpoint | Default Credential Environment Variable | Connections Button |
|---|---|---|---|
| OOMOL Hosted | https://connector.oomol.com/v1/mcp |
OOMOL_MCP_API_KEY (required) |
Opens the Harness native OOMOL Hosted account panel |
| Self-hosted OpenConnector | Must be specified in cordis.patch.yml |
OOMOL_CONNECT_RUNTIME_TOKEN (depends on deployment) |
Opens the OpenConnector Console on the endpoint’s origin |
Self-hosted HTTP only supports localhost, 127.0.0.1, [::1]; remote deployments require HTTPS.
Configurable Options¶
| Field | Default Value | Purpose |
|---|---|---|
endpoint |
https://connector.oomol.com/v1/mcp |
Streamable HTTP MCP endpoint |
apiKeyEnv |
Derived from endpoint |
Harness credential reference and startup environment variable name |
teamName |
Not set | OOMOL Hosted team identifier |
teamNameEnv |
OOMOL_TEAM_NAME |
OOMOL Hosted team environment variable name |
serverName |
oomol |
Harness MCP tool namespace |
toolCallTimeoutMs |
60000 |
Tool call timeout (milliseconds) |
failOnStartupError |
false |
Whether to block Harness startup if MCP discovery fails |
Installation & Enablement¶
Environment requirements:
- Node.js 22.19 or later (within the Node.js 22 line), or Node.js 24+
- DeepSeek Harness
0.1.0-rc.7or0.1.0-rc.8 - OOMOL Hosted requires an OOMOL account; self-hosted requires a running OpenConnector instance
Install the plugin to the web profile and restart the Harness:
dsh plugin --profile web add -w dsh-oomol
dsh web
OOMOL Hosted Configuration¶
Connects to the hosted endpoint by default. A typical snippet in the profile is:
- id: oomol
name: dsh-oomol
config:
endpoint: https://connector.oomol.com/v1/mcp
teamNameEnv: OOMOL_TEAM_NAME
serverName: oomol
toolCallTimeoutMs: 60000
failOnStartupError: false
Create an OOMOL MCP API Key in the OOMOL Console and write it into the plugin settings; the Harness will save it as OOMOL_MCP_API_KEY. The hosted environment can also be injected before startup:
export OOMOL_MCP_API_KEY="api_..."
dsh web
When team identity is required:
export OOMOL_TEAM_NAME="your-team"
dsh web
Self-hosted OpenConnector Configuration¶
Override the endpoint in the profile’s cordis.patch.yml, for example, for local:
- update:
id: oomol
config:
endpoint: http://127.0.0.1:3000/mcp
A local OpenConnector can run without authentication. If runtime authentication is enabled in the deployment, use OOMOL_CONNECT_RUNTIME_TOKEN, or save a persistent runtime key created from that OpenConnector Console’s Access page in the plugin settings:
export OOMOL_CONNECT_RUNTIME_TOKEN="oct_..."
dsh web
Remote HTTPS example:
- update:
id: oomol
config:
endpoint: https://connect.example.com/mcp
Custom credential environment variable name:
- update:
id: oomol
config:
endpoint: https://connect.example.com/mcp
apiKeyEnv: MY_CONNECT_RUNTIME_TOKEN
The Harness Credentials prioritize resolving apiKeyEnv, then read the startup environment variable.
Typical Usage¶
After installation and credential configuration, you can start by discovering Connectors and Actions. The README provides conversation examples:
Show me the connectors available to this account.
Find Actions that can create a calendar event and inspect the selected Action schema.
For operations with external side effects, the target account and intended parameters should be clearly stated in the request before execution. Before executing Actions that are destructive, externally visible, modify permissions, or are widely shared, their implications should be reviewed.
For local diagnostics, run:
pnpm run doctor
Use Cases & Considerations¶
Who is this for
- Developers who have configured application connections on OOMOL or OpenConnector and wish to discover and invoke Actions on-demand in DSH conversations
- Teams that want to keep Provider credentials on the Connector side, with the Harness holding only the Connector client key
- Deployment scenarios requiring support for both OOMOL Hosted and self-hosted Connectors
Notes before use
- The plugin runs with the current
dshprocess permissions; before installation, review the GitHub source code and MIT license to ensure the behavior meets expectations - If the plugin is not visible in Settings, confirm it has been installed to the
webprofile anddsh webhas been restarted - If OOMOL Hosted shows “Not configured”, check if
OOMOL_MCP_API_KEYhas been saved - If self-hosted returns “Unauthorized”, confirm the runtime token corresponds to that OpenConnector instance
- If expected applications do not appear, configure the Provider connection in the corresponding Connector Console
- If the Connections panel cannot be expanded, adjust the window width to at least 1220 px
The DSH ecosystem follows the “everything is a plugin” principle; the SkillHub directory page is a community site, with no official affiliation to DeepSeek / High-Flyer.
Conclusion¶
dsh-oomol connects the Harness to the OOMOL Connector, using progressive MCP discovery to reduce the resident tool surface, and keeps Provider credentials on the Connector side. If you already maintain application connections on OOMOL or OpenConnector, you can follow the steps in this article to install it to the web profile, configure the endpoint and keys, and then start invoking from discovering Actions.
- Directory page: https://www.skillhub.cn/plugins/oomol-lab/dsh-oomol
- GitHub: https://github.com/oomol-lab/dsh-oomol