theluckystrike

mcp-change-order

Community theluckystrike
Updated

Practical MCP servers: time tracker, price tracker, spreadsheet, invoice. Local, offline-licensed, one-time Pro.

mcp-change-order

Change orders against a quote or a work order, kept the way a variation is kept on site:what was added, what was taken out and what changed, each with a reason and a date, sent tothe client, and answered. The running contract value is the original plus the deltas theclient has APPROVED; what they have not answered yet is shown as pending and never added in.Once a change order is approved, the delta comes back as invoice_create-ready items inMAJOR units and quote_create-ready items in MINOR units, in one call, with the scaleprinted against each.

No delta is stored. A change order holds its lines and its status history; the delta, therunning value and the VAT are derived on every call, with the invoice server's ownarithmetic. Nothing is invented: the first change order against a reference states theoriginal contract value once, every later one inherits it, and a different figure isrefused by name.

Install

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or%APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "change-order": {
      "command": "npx",
      "args": ["-y", "@theluckystrike/mcp-change-order"]
    }
  }
}

Claude Code

claude mcp add change-order -- npx -y @theluckystrike/mcp-change-order

Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (project), same entry as Claude Desktop.

Tools

Tool What it does
change_order_create Raise a change order against a quote or work order: reference, client, title, date, and the original contract value on the first one
change_order_add_line Add an added, removed or changed line to a draft, with its quantity, unit price in minor units, reason and date
change_order_status Move it along: draft to sent, sent to approved or rejected, draft or sent to void, each step dated
change_order_get One change order in full: every line with its delta, the VAT, the history and the running value of the reference
change_order_list Change orders by reference, status, client and date range, with approved and pending deltas per currency
change_order_delete Delete an empty draft raised by mistake. Free on every tier
contract_value The running value of one reference: original, approved delta, current value, pending delta held apart
change_order_document The change order as a plain-text document for the client to approve
change_order_invoice_payload The approved delta as invoice_create items (MAJOR units) and quote_create items (MINOR units)
license_status / license_activate Free or Pro, and where to upgrade

Free vs Pro

Free Pro
Open change orders (draft and sent) 5 unlimited
Lines per change order 200 200
Raise, line, move, get, list, delete yes yes
Running contract value yes yes
Change order document no yes
Invoice-ready delta payload, both scales no yes

The cap counts OPEN change orders, the ones the client has not answered, not the ones youhave ever raised. Approving, rejecting or voiding one frees its slot, and so doeschange_order_delete on a draft with no lines; all of those are free on every tier, becausea way back that only a Pro key can reach is not a way back.

Get Pro: https://mcp.zovo.one/buy/change-order (one-time $19, lifetime), or all servers for$39: https://mcp.zovo.one/buy/bundle

The status machine

draft to sent; sent to approved or rejected; draft or sent to void.Approved, rejected and void are final. A draft cannot be approved directly: approval is theclient's answer to something they were sent. Lines are added only while a change order is adraft; a sent one that needs another line is voided and raised again, so the client'sapproval always refers to what they were sent. Every step carries its own date, and a stepdated before the last one is refused.

Where the money comes from

This server keeps no arithmetic of its own. computeTotals, currencyDecimals,formatMoney and roundHalfUp are imported from @theluckystrike/mcp-invoice/lib, thecorrupt-store quarantine from @theluckystrike/mcp-timezone/lib, the timezone-aware"today" from @theluckystrike/mcp-quotes/lib. The VAT rate, the currency and the businessname come from the shared business profile that business_set in the invoice server writes.Nothing is written outside this server's own directory, and no sibling store is opened.

The measured insight

A changed line is two items, not one, because one net item shows the customer nothingthey can check. A line that goes from 3 x EUR 450.00 to 5 x EUR 420.00 is worth +EUR750.00, and the tempting payload is one item of quantity 1 at EUR 750.00. The customercannot reproduce that figure from anything on the change order they signed. The payloadthis server emits is a reversal, -3 x EUR 450.00, and the revised line, 5 x EUR 420.00;each reproduces on a calculator, and computeTotals over both is the same +EUR 750.00,because the invoice server's roundHalfUp is symmetric in sign. The same rule carries aremoval as a negative quantity at the unit price it was booked at, which invoice_createaccepts. The unit suite re-runs the invoice server's own computeTotals over the payloadas returned and asserts the four item values and the three totals, then feeds thequote_create items into the same engine as though their MINOR figure were MAJOR andasserts the net is exactly 100x, so the day someone "simplifies" the payload to one netitem, or moves a field between the two scales, the build says so instead of the customer.

Privacy

All data stays on your machine, in ${XDG_DATA_HOME:-~/.local/share}/mcp-servers/change-order/.Nothing is sent anywhere. There is no account and no API key. License keys are verifiedoffline. This server reads one file it does not own, the shared business profile, andwrites into no store but its own.

Built by theluckystrike. https://github.com/theluckystrike

MCP Server ยท Populars

MCP Server ยท New

    esperanza-volkov

    confdiff

    Semantic, format-aware diff for config & structured-data files (JSON, YAML, TOML, INI, .env, .properties, CSV, XML). See what actually changed โ€” keys and values, not text noise.

    Community esperanza-volkov
    butterbase-ai

    @butterbase/mcp

    Open-source backend-as-a-service. Postgres, auth, storage, functions, AI gateway, MCP.

    Community butterbase-ai
    adamsiwiec1

    Host MCP SSE Server on Google Cloud Run

    Host an Model Context Protocol SSE deployment on Cloud Run, Authenticating with IAM.

    Community adamsiwiec1
    Mitek99

    DeepView MCP

    DeepView MCP is a Model Context Protocol server that enables IDEs like Cursor and Windsurf to analyze large codebases using Gemini 2.5 Pro's extensive context window.

    Community Mitek99
    prisma

    orm

    Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB and CockroachDB

    Community prisma