← Back to search

@libraz/formulon-mcp

GitHub Actions Scanned 1h ago

MCP server for Formulon Excel-compatible formula and workbook evaluation

? Not scanned yet

Versions

0.3.0latest
Jul 4, 2026
0.1.4
May 20, 2026
0.1.3
May 11, 2026
0.1.2
May 11, 2026
0.1.1
May 11, 2026

Tools 44

formulon_function_lookup
annotations: none low

List functions, read name/arity/availability metadata, translate a function name or a whole formula between the stored English form and a profile's spelling, or read a profile's locale facts (separators, boolean names, date order, currency, error names).

operation enum sessionId string
formulon_workbook_call
annotations: none low

Low-level allowlisted access to the Formulon Workbook API for advanced features. Use formulon_workbook_api first to discover method signatures, input records and enum values.

sessionId string
formulon_audit_formulas
annotations: none low

Scan a workbook range for repeated formula patterns and report constants, blanks, outliers, and formula errors for review. The default range is the complete stored used rectangle, with no silent prefix truncation. A fully blank row or column is a hard boundary, so include the populated input columns when auditing a table body. The audit never repairs formulas and does not establish formula correctness. Recalculation is opt-in and marks the session dirty before the engine call.

recalc boolean window number maxCells number minPeers number direction enum sessionId string maxFindings number
formulon_workbook_api
annotations: none low

Search or describe the installed Formulon Workbook methods. This tool is session-free and returns signatures, source documentation, read/write access, and referenced TypeScript declarations for AI callers.

offset number operation enum
formulon_table_operation
annotations: none low

List, create, update, or remove a native Excel worksheet Table. Create derives unique non-empty column names from the first row when columns is omitted; this is structured Table metadata, not visual formatting. Table indexes are global across the workbook.

ref string name string range string operation enum sessionId string styleName string
formulon_preview_range
annotations: none low

Render a bounded workbook range as PNG for visual inspection. The response contains the PNG image first and compact geometry, formatting, pagination, and warning metadata second. Omit range to use a single print area or the used cells plus merges.

range string scale number sessionId string outputPath string showGridLines boolean showPageBreaks boolean
formulon_version
annotations: none low

Return the loaded Formulon engine version.

formulon_eval_formula
annotations: none low

Evaluate one Excel formula with Formulon. With sessionId, evaluates read-only against the open workbook (resolving refs, defined names, and ROW()/COLUMN() anchored at the given cell) without mutating it.

formula string
formulon_open_workbook
annotations: none low

Create an in-memory workbook session from an existing .xlsx/.xlsb file or a new default workbook. Anything the reader could not decode is reported in the session's `loadLosses`.

formulon_list_sessions
annotations: none low

List currently open in-memory workbook sessions.

formulon_close_workbook
annotations: none low

Close an in-memory workbook session and release its native workbook handle.

sessionId string
formulon_inspect_session
annotations: none low

Inspect an open workbook session, optionally including sparse non-empty cells.

sessionId string includeCells boolean maxCellsPerSheet number
formulon_recalc_session
annotations: none low

Recalculate an open workbook session.

sessionId string
formulon_find_cells
annotations: none low

Search text cell values and/or formula text in an open workbook session.

maxResults number
formulon_replace_cells
annotations: none low

Replace matching text cell values and/or formula text in an open workbook session.

recalc boolean maxResults number replacement string maxReplacements number
formulon_inspect_layout
annotations: none low

Return stable cell, layout, merge, row/column, protection, and optional style data for one or all sheets.

maxCells number sessionId string includeCells boolean includeStyles boolean
formulon_detect_regions
annotations: none low

Detect table-like regions, label-value pairs, and total-like regions with rule-based evidence.

maxCells number sessionId string
formulon_analyze_workbook
annotations: none low

Classify workbook shape such as invoice, list, report, schedule, or form using deterministic features and evidence.

sessionId string includeEvidence boolean maxCellsPerSheet number
formulon_get_cell
annotations: none low

Get one cell from either an open session or a workbook path. Pass exactly one of `sessionId` or `path`; A1 refs and sheet names work for both. Date/currency/percent cells carry a decoded `formatted` string alongside the raw value; formatted numbers also carry `text`, exactly what Excel displays (`textStatus` flags overflow or an invalid format).

a1 string path string recalc boolean sessionId string
formulon_get_range
annotations: none low

Get a rectangular A1 range from an open workbook session. Output is sparse (blank cells omitted) and capped at maxCells. Cells with a date/currency/percent number format carry a decoded `formatted` string (for example an ISO date) alongside the raw value; formatted numbers also carry `text`, exactly what Excel displays.

range string recalc boolean maxCells number sessionId string
formulon_save_session
annotations: none low

Save an open workbook session as .xlsx or .xlsb. XLSB output can lose or downgrade tables, pivots, print settings, comments, and other features; choose .xlsx where possible and inspect `losses` before relying on the file.

sessionId string outputPath string
formulon_session_metadata
annotations: none low

Read broad workbook metadata such as registered functions or external links.

kind enum sessionId string
formulon_create_pivot
annotations: none low

Create a native Excel PivotTable from a worksheet range. The first source row is a unique, non-empty text header row and at least one data row is required; source cells are capped at 10,000 and are read in one operation after recalculation. Every source header must be assigned exactly once to rows, columns, pages, or a distinct value field (a value field may have multiple aggregations); unknown, unused, or cross-axis fields are rejected before mutation. Values may use sum, count, average, max, min, product, countNumbers, stddev, stddevp, var, or varp. target is an A1 anchor and may include a sheet name; targetSheet defaults to the source sheet.

name string rows boolean layout enum columns boolean sessionId string sourceLimit number
formulon_dimension_operation
annotations: none low

List column-width/row-height overrides, set width/height, reset it to the sheet default (keeping hidden, outline and style state), or set hidden or outline level. Columns act on an inclusive [first, last] span; rows act on an inclusive [row, row] span. Column sizes default to Excel character units; row sizes default to points. Use px or mm when a physical display size is easier to specify.

row number axis enum hidden boolean operation enum
formulon_build_document
annotations: none low

Lay out a document as a vertical stack of blocks — title, text, fields, table, summary, spacer — and write it in one call. Positions, ruling, number formats, column widths, merges and the print area are all resolved from the layout, so no row arithmetic is needed. Blocks reference each other by name: a table column registers as {table.<header>} over its body range, and a fields or summary item registers under its label, so "=SUM({table.Amount})" and "={Subtotal}+{Tax}" bind to the right cells once the layout is known. The response maps every block and name to A1 so the result can be refined with set_cells / style_range / print_settings. This tool carries no document semantics: labels, tax rules and totals are the caller\'s formulas.

font string size number blocks array sessionId string headerText string
formulon_style_range
annotations: none low

Apply fonts, fills, borders, number formats, and alignment across an A1 range, materializing blank cells so an empty ruled box renders. Whole columns (B:D) or rows (3:5) are styled as columns or rows, so cells written there later inherit the style. Each property is a delta: cells keep whatever the style does not state, so ruling a table does not undo the number format already on its amount column. Style in passes — the grid over the whole table, then the header row, then a total cell.

sessionId string
formulon_default_font
annotations: none low

Read or redeclare the workbook default font — the one every cell that was never styled resolves to. A new workbook is seeded with Excel's Calibri 11, which renders Japanese text in a fallback face, so a Japanese document should declare its own default once instead of styling every cell. Omit `font` to read. Stating a `name` also cuts the theme link a loaded workbook's base font carries, since a theme-linked font is re-resolved from the theme rather than keeping the name.

sessionId string
formulon_print_settings
annotations: none low

Read or set a sheet's print settings: page setup, margins, print options, header/footer, print area, print titles, and manual page breaks. Omit every setting to read. Reads report the resulting pageCount and a `layout` (paper, margins in points, scale, page order, break flags, per-page A1 ranges), so a page layout can be checked without saving the file.

formulon_set_cells
annotations: none low

Apply cell mutations to an open workbook session. Cells may use A1 refs or zero-based row/col.

recalc boolean mutations array sessionId string
formulon_set_range
annotations: none low

Write a 2D block of values starting at an anchor cell. Each element\'s JSON type picks the cell type: number, boolean, or string. Use {"f":"=SUM(A1:A3)"} for a formula, {"blank":true} to clear a cell, and null to leave it untouched. Far more compact than set_cells for tables.

start string recalc boolean sessionId string
formulon_sheet_operation
annotations: none low

Add, remove, rename, or move a sheet in an open workbook session.

name string index number newName string toIndex number fromIndex number operation enum sessionId string
formulon_set_defined_name
annotations: none low

Add, replace, or remove a defined name. Without `sheet` the name is workbook-scoped; with it the name is local to that sheet. Print settings (_xlnm.Print_Area, _xlnm.Print_Titles) must be sheet-scoped — Excel ignores a workbook-scoped one without reporting an error. Empty formula removes it.

name string formula string sessionId string
formulon_edit_structure
annotations: none low

Insert or delete rows/columns in an open workbook session.

count number start number operation enum sessionId string
formulon_set_sheet_view
annotations: none low

Set sheet zoom, frozen panes, or tab visibility.

zoom number sessionId string freezeCols number freezeRows number
formulon_merge_operation
annotations: none low

List, add, remove, remove by index, or clear merged ranges on a sheet.

index number operation enum
formulon_comment_operation
annotations: none low

List, get, set, or remove a cell comment.

col number row number text string author string operation enum
formulon_hyperlink_operation
annotations: none low

List, add, remove, remove by index, or clear hyperlinks on a sheet. An added link covers one cell, or the rectangle through lastRow/lastCol.

col number row number index number display string tooltip string operation enum
formulon_validation_operation
annotations: none low

List, add, remove by index, or clear data validations on a sheet. An omitted boolean field defaults to false, so a rule that should accept empty cells has to spell allowBlank: true; showDropDown is the only field that defaults to true.

index number operation enum
formulon_conditional_format_operation
annotations: none low

List, add, remove by index, clear, or evaluate conditional format rules.

index number lastCol number lastRow number firstCol number firstRow number operation enum
formulon_image_operation
annotations: none low

List a sheet's drawing objects (pictures, shapes, charts) with A1 anchors and sizes, get a picture's bytes (returned as an image, optionally written to outputPath), insert a PNG/JPEG/GIF/BMP file anchored at a cell, move/resize a picture in place, change the stacking order, or remove a picture. Insertion keeps existing drawings; an omitted width or height keeps the aspect ratio, and omitting both uses the pixel size at 96 DPI. A move changes only what it states and keeps the picture's id, crop and rotation.

name string path string operation enum outputPath string description string
formulon_trace
annotations: none low

Read precedents, dependents, or spill info for a cell. Results carry A1 references (with sheet names), not raw indices.

col number row number depth number operation enum
formulon_inspect_workbook
annotations: none low

Load an xlsx or xlsb workbook path and return a one-shot summary.

path string recalc boolean includeCells boolean maxCellsPerSheet number
formulon_update_workbook
annotations: none low

Create or load a workbook, apply zero-based cell mutations, recalculate, and save as .xlsx or .xlsb. Inspect returned losses; use XLSX to preserve authored tables, pivots, print settings, and comments.

recalc boolean inputPath string mutations array outputPath string
formulon_apply_layout
annotations: none low

Apply column widths, row heights, merges, styles, and print settings in one ordered batch. The complete operation list is validated before any workbook mutation; a failed preflight leaves the session unchanged. Column sizes default to Excel character units, row sizes to points, and px/mm convert through 96-DPI display geometry. The batch caps at 200 operations, 255 stored width characters, 409 points per row, 10,000 expanded row writes, and 100,000 styled cells.

operations array

Permissions 3

filesystem low
Server uses filesystem capabilities via: fs sync ops
shell high
Server uses shell capabilities via: child_process, spawn()
env_vars low
Server uses env_vars capabilities via: process.env

Scan Findings 0

No scan findings.