Skip to main content
Glama
youngminsw

Origin Pro MCP Server

by youngminsw

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
run_labtalkA

Execute a LabTalk script in Origin Pro.

Use this for any Origin operation not covered by other tools. LabTalk is Origin's built-in scripting language.

Args: script: LabTalk script to execute

Returns: Success/failure message

get_labtalk_variableA

Get the value of a LabTalk variable.

Gotchas: numeric variables that don't exist read as 0, and variables declared with a type (e.g. int x = 5) are script-local — they vanish when the script ends. Use untyped assignment (x = 5) in run_labtalk if you want to read the value back later.

Args: name: Variable name. Use $ suffix for strings (e.g., 'str$')

Returns: Variable value as string

create_worksheetA

Create a new workbook with a worksheet in Origin.

Args: book_name: Name for the new workbook sheet_name: Name for the sheet (default: Sheet1)

Returns: Created workbook name (may differ from book_name if it was taken)

set_worksheet_dataB

Write data to an Origin worksheet.

Args: book_name: Workbook name (e.g., "Book1") sheet_name: Sheet name (e.g., "Sheet1") columns: JSON array of arrays, each inner array is a column of data. Example: [[1,2,3],[4,5,6]] for 2 columns with 3 rows column_names: Optional comma-separated column names (e.g., "X,Y,Error")

Returns: Success message

get_worksheet_dataB

Read data from an Origin worksheet.

Args: book_name: Workbook name sheet_name: Sheet name

Returns: JSON object with column data

import_csv_to_worksheetA

Import a CSV/text file into an Origin worksheet.

Args: file_path: Path to the file (Windows or WSL style, e.g. C:\Users\data.csv or /mnt/c/Users/data.csv) book_name: Optional workbook name. Auto-generated if empty. delimiter: Column delimiter (default: comma)

Returns: Name of the created workbook

list_worksheetsA

List all open workbooks (with their sheets), graphs, and matrices.

Returns: JSON object: {"workbooks": [{"name", "sheets"}], "graphs": [names], "matrices": [names]}

set_column_formulaA

Fill a worksheet column from a formula of other columns.

Args: book_name: Workbook name sheet_name: Sheet name col: Target column (1-based); created if it does not exist formula: LabTalk expression, e.g. "col(1)^2", "col(2)*100/col(3)"

Returns: Success message

sort_worksheetA

Sort all rows of a worksheet by one column.

Args: book_name: Workbook name sheet_name: Sheet name col: Column to sort by (1-based) descending: Sort high-to-low when True

Returns: Success message

add_columnsA

Append empty columns to a worksheet.

Args: book_name: Workbook name sheet_name: Sheet name count: Number of columns to add (default 1)

Returns: Success message

delete_columnsA

Delete one or more columns starting at a position.

Args: book_name: Workbook name sheet_name: Sheet name col: First column to delete (1-based) count: How many consecutive columns to delete (default 1)

Returns: Success message

set_column_propertiesA

Set a column's long name, units, comment, and/or designation.

Args: book_name: Workbook name sheet_name: Sheet name col: Column (1-based) long_name: Long name (label row) units: Units (label row) comment: Comment (label row) designation: One of none, x, y, z, yerr, xerr, label (blank = leave)

Returns: Success message

transpose_worksheetA

Transpose a worksheet (rows become columns).

Args: book_name: Source workbook name sheet_name: Source sheet name output_book: Optional new workbook name for the result; if empty, the source sheet is transposed in place

Returns: Success message

export_worksheetA

Export a worksheet to a CSV/text file (with column headers).

Args: book_name: Workbook name sheet_name: Sheet name file_path: Output path (Windows or WSL style) delimiter: ",", "tab", ";", "|", or " "

Returns: Path and row/column counts written

import_excelA

Import an Excel (.xls/.xlsx) file into a new workbook.

Args: file_path: Path to the Excel file (Windows or WSL style) book_name: Optional name for the resulting workbook

Returns: Name of the workbook the data was imported into

create_graphA

Create a graph from worksheet data.

Args: graph_name: Name for the graph window data_book: Source workbook name data_sheet: Source sheet name x_col: X column number (1-based). Ignored for box/histogram. y_col: Y column number (1-based) plot_type: scatter, line, line+symbol, column, bar, area, pie, box, histogram, contour, 3d_scatter y_error_col: Optional Y error column (1-based, 0=none). XY plots only. z_col: Z column (1-based). REQUIRED for contour and 3d_scatter. title: Optional graph title

Returns: Created graph name (may differ from graph_name if it was taken)

add_plot_to_graphA

Add another data series to an existing graph.

Args: graph_name: Existing graph name data_book: Source workbook name data_sheet: Source sheet name x_col: X column number (1-based) y_col: Y column number (1-based) plot_type: Plot type (scatter, line, line+symbol, etc.) y_error_col: Optional Y error column (1-based, 0=none)

Returns: Success message

set_axis_labelsB

Set axis labels and title for a graph.

Args: graph_name: Graph name x_label: X axis label y_label: Y axis label title: Graph title

Returns: Success message

set_axis_rangeB

Set axis range for a graph.

Args: graph_name: Graph name x_min: X axis minimum (None=auto) x_max: X axis maximum (None=auto) y_min: Y axis minimum (None=auto) y_max: Y axis maximum (None=auto)

Returns: Success message

export_graphA

Export a graph to an image file.

Uses Origin's CopyPage + clipboard, so the Windows clipboard contents are replaced during export. Image size is determined by the Origin page (width/height/dpi are accepted but have no effect).

Args: graph_name: Graph name to export file_path: Output path (Windows or WSL style, e.g. C:\Users\me\fig1.png or /mnt/c/Users/me/fig1.png). Missing directories are created. format: Image format: png, jpg, tif, bmp. Used as the file extension when file_path has none. width: Unused (kept for API compatibility; size determined by Origin page) height: Unused (kept for API compatibility) dpi: Unused (kept for API compatibility)

Returns: Path to exported file

set_axis_scaleA

Set an axis to linear or a logarithmic scale.

Args: graph_name: Graph name axis: "x" or "y" scale: linear, log10, ln, or log2

Returns: Success message

add_second_y_axisA

Add a right-side Y axis layer and plot a second dataset on it.

Args: graph_name: Existing graph data_book, data_sheet: Source data x_col, y_col: Columns for the right-axis series (1-based) plot_type: scatter, line, line+symbol, column, bar, area

Returns: Success message

add_layerA

Add a new layer (panel/axis) to a graph.

Args: graph_name: Graph name layer_type: right-y, top-x, inset, or independent

Returns: Success message naming the new layer index

add_reference_lineA

Draw a horizontal or vertical reference line at a data value.

Args: graph_name: Graph name orientation: "horizontal" (constant Y) or "vertical" (constant X) value: Axis value where the line is drawn

Returns: Success message

add_text_annotationA

Add a text label to a graph at data coordinates.

Args: graph_name: Graph name text: Annotation text (no quotes, line breaks, or ';') x: X position in data coordinates y: Y position in data coordinates name: Internal object name (letters/numbers/underscore)

Returns: Success message

export_graph_sizedA

Export a graph to an image at a chosen pixel size (expGraph).

Unlike export_graph (clipboard, page-size only), this controls the output pixel width/height directly.

Args: graph_name: Graph to export file_path: Output path (Windows or WSL style) width: Image width in pixels (default 1200) height: Image height in pixels (0 = keep aspect ratio) format: png, jpg, tif, or bmp

Returns: Path and pixel/byte size of the exported file

apply_color_mapA

Apply a color palette to a contour/heatmap/surface graph.

Args: graph_name: Graph name (must hold a colormapped plot) palette: Palette name. Bundled perceptually-uniform, colorblind-safe maps (recommended for quantitative data): Viridis, Cividis, Plasma, Inferno, Magma; muted/pastel variants matching a soft figure aesthetic: PastelViridis, PastelCividis. Also accepts built-in Origin .pal names, e.g. Heatmap4ColorBlind, GrayScale, RedWhiteBlue, Fire, Temperature.

Returns: Success message

set_colormap_levelsA

Set the Z range (color scale levels) of a colormapped graph.

Args: graph_name: Graph name (contour/heatmap/surface) z_min: Minimum Z for the color scale z_max: Maximum Z for the color scale

Returns: Success message

add_lineA

Draw a straight line between two data points on a graph.

Useful for guides, connectors, and trend indicators. For a line with an arrowhead, use add_arrow instead.

Args: graph_name: Graph name x1, y1: Start point in data coordinates x2, y2: End point in data coordinates

Returns: Success message

add_arrowA

Draw an arrow from (x1,y1) to (x2,y2) at data coordinates.

The arrowhead sits at the (x2,y2) end (and at the start too when double_headed). Set double_headed=False for a single-ended arrow.

Args: graph_name: Graph name x1, y1: Tail (start) point in data coordinates x2, y2: Head (end) point in data coordinates double_headed: Put an arrowhead on both ends head_size: Arrowhead size in points (default 10)

Returns: Success message

set_plot_styleA

Set line/symbol style for a data plot.

Args: graph_name: Graph name plot_index: Data series index (1-based, order the datasets were added; error-bar plots are not counted) line_width: Line width in points (default 2.5) symbol_size: Symbol size (3-20, default 8) symbol_shape: 0=auto, 1=square, 2=circle, 3=triangle-up, 4=diamond, 5=triangle-down, 6=hexagon color: Color name (black, red, blue, green, orange, purple, cyan, magenta)

Returns: Success message

apply_publication_styleA

Apply complete publication styling to a graph in ONE call.

Sets bold Arial labels, a muted pastel color palette, 2.5 pt lines, readable tick spacing, inward ticks, closed frame, and a borderless bold legend all at once. Designed to minimize token usage — call this once instead of many separate tools.

Args: graph_name: Graph name x_label: X axis label with units, e.g. "Temperature (K)" y_label: Y axis label with units, e.g. "Absorbance (a.u.)" x_min: X axis minimum (None=auto) x_max: X axis maximum (None=auto) y_min: Y axis minimum (None=auto) y_max: Y axis maximum (None=auto) legend_entries: Comma-separated legend entries, e.g. "Sample A,Sample B" legend_position: top-left, top-right, bottom-left, bottom-right

Returns: Summary of applied styling

set_graph_fontB

Set font for graph elements.

Args: graph_name: Graph name font_name: Font family (e.g., Arial) font_size: Font size in points (default 24) target: "all", "axes", "title", "legend", "tick"

Returns: Success message

set_legendA

Configure graph legend.

Args: graph_name: Graph name visible: Show or hide legend position: top-left, top-right, bottom-left, bottom-right entries: Comma-separated custom legend entries

Returns: Success message

set_tick_styleA

Set tick mark style.

Args: graph_name: Graph name tick_direction: "in", "out", or "both" major_length: Major tick length in points (default 8) minor_count: Number of minor ticks between major ticks (default 4) show_minor: Whether to show minor ticks

Returns: Success message

curve_fitA

Perform curve fitting on worksheet data.

Args: data_book: Source workbook name data_sheet: Source sheet name x_col: X column number (1-based) y_col: Y column number (1-based) function: Fitting function. Built-in options: line, poly2-5, exp1, exp2, expgrow1, expdecay1, gauss, lorentz, voigt, power, lognormal, logistic, boltzmann, hill, sine y_error_col: Y error column (1-based, 0=none) plot_on_graph: Optional name of an existing graph — the fitted curve is drawn on it as a line (paper style: data symbols + fit line). Also keeps the fit report sheets in the workbook.

Returns: JSON with fitted parameters (value + std_error) and statistics (r_squared, sum_sq_residuals, reduced_chi_sq, dof)

list_fitting_functionsA

List available built-in fitting functions and their parameters.

Returns: JSON of function names grouped by category, with parameter names

new_projectA

Create a new empty Origin project (closes current without saving).

save_projectB

Save the current Origin project.

Args: file_path: Output path for the .opju file (Windows or WSL style). ".opju" is appended when no extension is given. If empty, saves to the project's current location.

Returns: Save confirmation with path

load_projectA

Open an Origin project file. Replaces the current project.

Args: file_path: Path to a .opj or .opju file (Windows or WSL style)

Returns: Success message

export_all_graphsA

Export every graph in the project to image files (one per graph).

Uses the same clipboard-based export as export_graph, so the Windows clipboard contents are replaced during export.

Args: output_dir: Output directory (Windows or WSL style). Created if missing. format: Image format: png, jpg, tif, bmp dpi: Unused (kept for API compatibility; size determined by Origin page) width: Unused (kept for API compatibility) height: Unused (kept for API compatibility)

Returns: Per-graph list of exported files

save_graph_templateA

Save a graph as a reusable Origin template (.otpu/.otp).

Args: graph_name: Graph to save as a template file_path: Output path (Windows or WSL style). The extension is forced to .otpu (or .otp when old_format=True). old_format: Save the legacy .otp format (loadable in Origin 2017 and earlier) instead of the modern .otpu

Returns: Path to the saved template

create_matrixA

Create a new matrix book in Origin.

Matrices back 3D surface, contour, heatmap, and image plots.

Args: book_name: Name for the new matrix book rows: Initial number of rows (default 10) cols: Initial number of columns (default 10)

Returns: Created matrix name (may differ from book_name if it was taken)

set_matrix_dataB

Write a 2D numeric grid into a matrix.

Args: book_name: Matrix book name data: JSON array of equal-length rows, e.g. [[1,2,3],[4,5,6]]

Returns: Success message

get_matrix_dataA

Read a matrix back as JSON.

Args: book_name: Matrix book name

Returns: JSON object {"rows": [[...], ...]}; empty cells are null

worksheet_to_matrixA

Convert XYZ worksheet columns into a matrix by gridding (xyz2mat).

Enables 3D surface / contour / heatmap from scattered XYZ data.

Args: data_book: Source workbook name data_sheet: Source sheet name x_col: X column (1-based) y_col: Y column (1-based) z_col: Z column (1-based) rows: Output matrix rows (default 20) cols: Output matrix columns (default 20) matrix_book: Optional name for the output matrix book

Returns: Name of the created matrix

create_matrix_plotA

Plot a matrix as a surface, contour, heatmap, or image.

Args: matrix_book: Matrix book name (see create_matrix / worksheet_to_matrix) plot_type: surface (3D), contour, heatmap, or image graph_name: Optional name for the new graph z_label: Optional Z label with units (e.g. "Intensity (a.u.)"); sets the matrix long name, which drives both the Z-axis title (3D) and the color-scale title.

Returns: Created graph name

integrateB

Integrate Y over X (area under the curve).

Returns: JSON with the integrated area

differentiateC

Compute the derivative dY/dX into a new column.

Returns: Success message naming the new derivative column

smoothB

Smooth a curve into a new column.

Args: method: savitzky_golay (sg), adjacent (moving average), or binomial window: number of points in the smoothing window (odd, default 5)

Returns: Success message naming the new smoothed column

interpolateB

Resample an XY curve onto evenly spaced X values.

Args: num_points: number of output points across the X range method: linear, spline, bspline, or akima

Returns: JSON: output sheet plus the resampled X and Y

fftB

Forward FFT of a signal; outputs a spectrum sheet.

Uses the X column spacing as the sampling interval, so the Frequency column is in real units (1 / X-unit).

Returns: JSON: spectrum sheet and the dominant (peak-amplitude) frequency

find_peaksB

Find peaks in an XY curve (local-maximum method).

Args: direction: positive, negative, or both local_points: neighborhood size for the local-maximum search

Returns: JSON list of {x, y} peak positions

column_statisticsC

Descriptive statistics for one worksheet column.

Returns: JSON: mean, sd, se, variance, median, min, max, sum, n

compare_meansB

Two-sample t-test between two columns.

Returns: JSON: t, df, p_value, mean1, mean2, equal_variance

frequency_countB

Histogram-style frequency counts for one column.

Args: bin_min: lowest bin start bin_max: highest bin end bin_size: bin width (increment)

Returns: JSON list of {center, end, count, cumulative}

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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/youngminsw/Origin-Pro-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server