Repository navigation
Releases
v1.2.2
ProjectionLab MCP 1.2.2
A release that lets several server instances share one WebSocket port, so hosts that keep a server running per session (such as Claude Desktop) connect to the browser from whichever session is in use.
Improvements & Changes
• On-Demand Port Hand-Over: When a tool call arrives at an instance that does not hold PL_WS_PORT, it asks the instance that does to hand the port over. The holder finishes its operations in progress, releases the port, and the browser extension reconnects to the new holder in about 2 seconds. No extension update or configuration change is needed.
• Safer Plan Writes: The check that the plans are unchanged and the write itself now run as one step on the bridge, so a hand-over or another operation cannot run between them. A plan changed in the meantime is refused with PLAN_CONFLICT rather than overwritten.
• Clearer Port Diagnostics: projectionlab_check_connection distinguishes a holder that did not hand the port over (for example a session still on an older version), a holder still busy with its own operations, and a port held by a program that is not projectionlab-mcp.
• Independent Extension Releases: Extension releases use their own extension-v tags. Server releases (v tags) publish to npm only; the extension stays at 1.2.1 on the Chrome Web Store and Firefox Add-ons.
Upgrading
Fully quit and reopen your MCP host so every session starts the new version. A session still running an older version cannot hand the port over.
v1.2.1
ProjectionLab MCP 1.2.1
A release decoupling the browser extension release cycle from the MCP server, updating documentation to point directly to the Chrome Web Store and Firefox Add-ons, and clarifying settings migration.
Improvements & Changes
• Decoupled Extension Versioning: The browser extension now versions independently (v1.2.1 on Chrome Web Store and Firefox Add-ons). The server enforces MIN_EXTENSION_VERSION = "1.2.0", meaning the MCP server can iterate and release without forcing extension updates unless wire-level features change.
• Store Installation Guidance: Documentation and update notices point users directly to the Chrome Web Store and Firefox Add-ons rather than manual zip downloads.
• Options Page Cleanup: The browser extension options page removes stale references to GitHub releases, adds direct store links, and shows update notices only when connected to a server requiring a newer extension.
• Migration Accuracy: Update notices and setup documentation clarify that browsers isolate extension storage by extension ID, so moving from an unpacked developer copy to the official store release requires copying the token from ~/.projectionlab-mcp/ws-token.
• Canonical URLs: Updated Chrome Web Store URLs across documentation and code to the canonical store slug, eliminating HTTP 301 redirects.
v1.2.0
ProjectionLab MCP 1.2.0
A hardening release from a full code audit, plus two things users will notice:
the assistant now says when an update is available, and two browsers no longer
compete for the connection. Update the server and the extension together. A
1.1.0 extension still works with this server (the wire protocol version is
unchanged), but the standby and version-line behavior needs the 1.2.0
extension.
New
- Update notices.
projectionlab_check_connectionreports the server,
extension, and latest npm release versions, with plain-languagenotices
when something is out of date. The assistant mentions a notice once and
carries on. - Version line in the extension. The options page shows a line when the
extension and the server it reached are different releases, with a link to
the releases page or a hint to restart the assistant. PL_UPDATE_CHECK(default on): the server makes one request per start
to npm to read the latest release number. The request carries no personal,
plan, or configuration data. Set it tofalseto turn the check off. See
Privacy.- Standing by. The browser that is connected keeps the connection. A
second browser shows "Standing by", retries every 30 seconds, and connects
on its own when the first one goes away. Pressing Save on a standby
browser's options page switches to it. The bootstrap snippet follows the
same rule.
Security and safety fixes
- A frame that is valid JSON but not an object (
null,42) no longer ends
the server process. Any local client could trigger this without the token. - A blank
PL_WS_TOKENcounts as unset and a token is generated; it no longer
lets a client authenticate with an empty string. - The Plugin API key is scrubbed from every log line, from the fatal-error
output, and from the error details of the plan-data and summary resources. - Snapshots store the Plugin API key as a placeholder and put the real key
back on rollback, so a rollback of settings restores a working key. A
snapshot written by an earlier version that holds[REDACTED]in its
settings is refused with an explanation, in the dry run as well as on
confirm. - A write payload that still holds
[REDACTED]under a secret-named field is
refused, dry runs included, naming the paths. This stops a redacted read
from being written back as real data. projectionlab_update_plan_sectionvalidates the shape ofsectionData
for the section named. An omitted value,null, or the wrong container no
longer deletes or corrupts a section.
Behavior changes
- A plan or event name that partially matches more than one item is refused
with the list of candidates, where it used to pick the first match. - The legacy
patchinput ofprojectionlab_update_plan_eventvalidates
existing fields the waypathChangesdoes, and reports each change as
{ "before": ..., "after": ... }. A field the patch adds reports
"before": "[ABSENT]". projectionlab_rollbackreportssuccess: truewhenever the restore is
accepted, with a separateverifiedflag for the re-read check, like the
other write tools.- A path that addresses an array with anything other than an index, such as
length, is refused. - An invalid
PL_WS_PORTorPL_APP_URLstops the server at startup with a
message naming the variable. An unknownLOG_LEVELfalls back toinfo. - An API error that merely contains the digits 401 or 403 is no longer
reported as a bad Plugin API key.
Extension
- A wrong token or protocol mismatch is not retried until you press Save, and
that now holds across the browser restarting the background worker. - Save works without editing a field, in Chrome and Firefox.
- The extension reconnects within a few seconds after the server restarts.
Housekeeping
- Files written for results too large to return inline are deleted after 30
days, like snapshots. - Snapshot retention goes by file modification time and no longer reads every
snapshot on each write. - When a new browser replaces the connected one, cached data and in-flight
requests from the old one are dropped at once.
The extension was verified in Chromium and Firefox with two browsers sharing
one server.
v1.1.0
ProjectionLab MCP 1.1.0
New tools for comparing and deleting plans, a field reference for safer
edits, and clearer guidance for assistants. The browser extension works with
this server at 1.0.1 or 1.1.0 (the wire protocol is unchanged).
New
projectionlab_diffshows field-level changes between two snapshots, a
snapshot and the live data, or two plans (planAandplanB). It is
read-only, so it works in read-only mode.projectionlab_delete_plandeletes a plan by exact ID. It is a dry run
until confirmed, snapshots first, and refuses to delete the last plan.- Data model resource (
projectionlab://data-model): field meanings,
units, and allowed values for ProjectionLab 4.6.0.listPathsreads carry
these annotations, and writes refuse values outside a confirmed option list. writesEnabledinprojectionlab_check_connection, so the assistant
knows whether changes are turned on before it offers one.- Rollback by recency or time: choose a snapshot with
nBackor
beforeTimeas well assnapshotId. - Confirmed writes return their
snapshotId, so the backup taken before a
change can be found directly.
Improved
- Real estate in Current Finances and
describe_schemais labeled with market
value and loan balance separately. - Plan copies and plan writes are verified more thoroughly against what
ProjectionLab saved, including Current Finances. - Plan-to-plan diffs ignore each event's random internal key.
- Delete, plan-write verification, and net worth match ProjectionLab 4.6.0.
- The server exits when the MCP host closes its connection.
Guidance for assistants
- Assistants describe change previews in plain words (plan, item, old and new
value) rather than showing JSON. - The guide covers units and rate scales (inflation is stored in percentage
points), with worked write-tool examples. - The knowledge resource is limited to concepts and links to ProjectionLab
help articles; yearly tax figures are left to ProjectionLab. - The guide explains that the export is stored data, not the app's logic, and
that a one-time event's stored end date is ignored.
Fixes and security
- Fixes from an audit: clone verification, asset values, redaction of plan
reads, and a crash before authentication. - The extension and bootstrap snippet run only the Plugin API methods the wire
protocol defines. - zod upgraded to 4.6.7 and
@hono/node-serverto 2.1.6.npm auditreports
no vulnerabilities.
Documentation
- The README leads with setup: one prompt to paste into your assistant.
- New Manual setup,
Setup for AI assistants,
and Technical reference
pages.
Install
- Server:
npx -y projectionlab-mcp(see the README). - Extension: download the zip for your browser below and load it unpacked, or
install from the Chrome Web Store or Firefox Add-ons once listed.
v1.0.1
What's Changed
- Prepare the extension for Chrome Web Store and AMO listing by @Backroads4Me in #3
- Bump version to 1.0.1 by @Backroads4Me in #4
Full Changelog: v1.0.0...v1.0.1
v1.0.0
First public release of the ProjectionLab MCP server and the ProjectionLab MCP Bridge browser extension.
- MCP server on npm:
npx -y projectionlab-mcp(Node.js 20+). Read and safely edit ProjectionLab plans, Current Finances, assumptions, Monte Carlo and withdrawal-strategy settings from any MCP-compatible AI assistant. - Writes are off by default (
PL_READ_ONLY=falseenables them), every write is a dry run until confirmed, every confirmed change is snapshotted forprojectionlab_rollback, and plan writes refuse withPLAN_CONFLICTwhen a plan was saved in ProjectionLab meanwhile. - Browser extension zips for Chromium (Chrome, Edge, Brave) and Firefox 128+ are attached below. See the README for setup.