fix(mcp): publish drafts through scoped workspace bridges#205
Merged
Conversation
DavidBabinec
force-pushed
the
fix/mcp-publish-after-write
branch
2 times, most recently
from
July 10, 2026 22:01
adeb78c to
3b7a15e
Compare
DavidBabinec
force-pushed
the
fix/mcp-publish-after-write
branch
from
July 10, 2026 22:06
3b7a15e to
30b4334
Compare
DavidBabinec
marked this pull request as ready for review
July 10, 2026 22:19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
site_publishMCP tool that runs the canonical publish pipeline, rebuilds Layer-A static artifacts, and records the MCP connector in the publish auditcontent_*tools execute through the open Content workspacesite_publish, enforce delegated own/any permissions before browser relay, and require step-up authentication when minting connector tokenssite_list_documentscatalog from fix(mcp): serve site_list_documents headlessly over MCP #186 while updating MCP/content/agent documentation and HTTP, relay, authorization, and UI regression coverageRoot cause
MCP site writes flushed only the editor draft; saving a draft does not invoke the publisher, so the public static HTML and CSS never changed. The single live bridge was also mounted only by the Site workspace and always dispatched through the site-tool executor, which made
content_*calls fail as unknown tools. Content document activation additionally searched only the currently loaded collection and reported success before React committed the new selection.User and developer impact
MCP writes now remain safely private as drafts until an authorized caller invokes
site_publish. Site and Content workspaces can stay connected simultaneously, and content mutations reuse the same browser-side workflow and permission boundaries as the admin UI. Cross-collection activation loads rows by id and is fully committed before the next tool runs.Verification
bun test— 6,045 passed, 0 failedbun run buildbun run lintnpx react-doctor@latest --verbose --scope changed— no new diagnostic; the existing PR-wideSitePagebarrel-import warning remainssite_apply_csschanged the draft but anonymous HTML/CSS hashes and computed style stayed unchanged;content_create_documentreturned an unknown-tool errorcontent_create_documentcreated a visible draft in Content; the CSS remained private beforesite_publish; aftersite_publish, anonymous text changed from black/16px torgb(210, 24, 24)/48px, both static artifact hashes changed, and the publish audit identified the MCP connectorCloses #195