Introduction

In DSH’s plugin-based integration, a common requirement is not to generate charts in a remote service, but to invoke locally installed scientific plotting software. The dsh-origin-plugin solves this problem: it allows the AI dialogue within DeepSeek Harness (DSH) to directly control local Origin to write data, plot graphs, and export PNG/SVG based on instructions, then feed the results back to the model.

What is it

dsh-origin-plugin is a DSH plugin that registers as mcp__origin__* native tools via DSH’s built-in @deepseek-ai/dsh-mcp-client. It is licensed under MIT, and the repository address is:

https://github.com/Fantasality/dsh-origin-plugin

It does not replace Origin but rather packages the local Origin plotting and analysis capabilities into a tool that DSH can invoke, preview, and return stable error codes for.

Core Capabilities

  • Conversation Trigger: Instructions like “Draw a line chart of y=x² using Origin and export PNG” can directly trigger Origin plotting and export.
  • MCP Bridging: Registered as mcp__origin__* tools via @deepseek-ai/dsh-mcp-client, eliminating the need to manually call scripts in a DSH session.
  • Plotting Capabilities: Covers 2D plots line / scatter / line_symbol / column / histogram / box / bar, error bars, 3D, and contour plots.
  • Journal-Grade Layout: Supports style_mode(journal/presentation), family color palettes, idempotent graph_name, and semantic axis titles.
  • Inline Preview: origin_view_graph renders the graph into image content directly, allowing results to be viewed without relying on exported files.
  • Statistical Batch: Supports t-tests, ANOVA, PCA, and Kaplan-Meier survival analysis.
  • Scientific Analysis: Supports point deletion, linear/non-linear fitting, FFT, integral AUC, transformations, correlation, peak detection, and histograms.
  • Stable Error Codes: Calls return error_code / recoverable / next_actions, allowing the model to perform branching logic based on the response.
  • Multi-Session Concurrency Safety: Uses dedicated COM threads and single-instance semantics; the README notes that 8-thread concurrency with 8/8 passes has been tested.
  • Quick Start: Comes with the native DSH origin-plotting skill and allows calling mcp__origin__origin_help to get quick reference information.

Installation and Usage

  1. Confirm Environment

    The following conditions must be met:
    - Windows.
    - Origin installed; the README notes testing with OriginPro 2026b, though versions from 2018+ generally work.
    - Python 3.10+.
    - The DSH environment includes @deepseek-ai/dsh-mcp-client.

    The plugin depends on @deepseek-ai/dsh-mcp-client 0.1.0-rc.7. When installed via dsh plugin add, this dependency is installed as a transitive dependency into the profile’s node_modules.

  2. Install the Plugin

    The verified installation command is:

    dsh plugin add dsh-origin-plugin
  1. Prepare Python Dependencies

    Although the plugin includes a standalone venv, you still need to install the following dependencies before first use:

    mcp
    originpro
    pywin32
    numpy
  1. Check Registration and Startup Configuration

    After installation, the mcp-origin entry will be registered. The bundle installation includes the following security features:
    - Self-localizing server path.
    - fail-open startup.
    - mcp-client dependency.
    - sync stdio transport.

    Here, failOnStartupError: false indicates that when the server cannot connect, it will only log the error and not register the tool, allowing DSH to start normally.

    Please note: Do not add a second complete insert for mcp-origin in the profile, otherwise it will trigger:

    duplicate loader entry id: mcp-origin
This will cause a startup failure. If you need to use a venv, you should use a `config-only` entry with the same id to override the existing one, rather than adding a new complete insertion.

The default self-localizing path is based on:
    <DSH_HOME>/profiles/web/node_modules/dsh-origin-plugin/
If you are not using the default `web` profile, you need to override the corresponding path.
  1. Verify Configuration

    After installation or registration, you can verify the mcp-origin entry using the following command:

    dsh --profile web --dump-config

Typical Usage

The following examples are based on verified usage scenarios.

  1. Directly Draw a Line Chart and Export PNG

    Conversation Example:

    Draw a line chart of y=x² (x=1..10) using Origin and export PNG
The model will invoke:
    mcp__origin__origin_plot_file
  1. Directly Draw a Scatter Plot and Export SVG

    Conversation Example:

    Plot these two columns as a scatter plot and export SVG: x=[1,2,3,4,5], y=[3.1,4.9,7.2,8.8,11.3]
The model will invoke:
    mcp__origin__origin_plot_file
  1. Step-by-Step Data Writing, Plotting, and Exporting

    The workflow is:

    origin_write_data → origin_plot → origin_export
Suitable for scenarios where you need to check data writing, plotting parameters, and export results separately.
  1. Delete Specified Data Points

    Example:

    origin_filter_data(worksheet='[Book1]Sheet1', drop_rows=[2, 5, 9])
  1. Keep Data Within x Range

    origin_filter_data supports x_min / x_max; for example, to keep only:

    x ∈ [0, 15]
  1. Get Quick Reference Information

    The model can invoke:

    mcp__origin__origin_help
Returns JSON quick reference information, including `usage` / `tools` / `templates` / `tips`.

Applicable Scenarios and Notes

  • Suitable for scientific plotting, data organization, simple statistics, and PNG/SVG export workflows in a Windows + Origin environment.
  • The plugin runs with the current DSH process permissions; you should check the source code and license before installing.
  • License is MIT.
  • package.json version is 2.0.6.
  • Behavior details are subject to actual device testing (probe).
  • If cross-session concurrent calls are needed, the plugin uses dedicated COM threads and single-instance semantics; the README notes that 8-thread concurrency with 8/8 passes has been tested.
  • If the DSH profile is not the default web, you need to override the self-localizing path according to the actual profile.

Related Links

GitHub Repository:

https://github.com/Fantasality/dsh-origin-plugin