Origin Pro MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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. 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
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