Origin Pro MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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