Skip to content

Publish Claude Artifact HTML as a Screenly Edge App - #306

Closed
salmanfarisvp wants to merge 15 commits into
Screenly:masterfrom
salmanfarisvp:feat/mcp-publish-edge-app-from-html
Closed

Publish Claude Artifact HTML as a Screenly Edge App#306
salmanfarisvp wants to merge 15 commits into
Screenly:masterfrom
salmanfarisvp:feat/mcp-publish-edge-app-from-html

Conversation

@salmanfarisvp

Copy link
Copy Markdown
Member

Summary

  • Adds edge_app_publish_from_html so Claude can turn Artifact / webpage HTML into a Screenly Edge App (wraps screenly.js plus theme CSS variables compatible with @screenly/edge-apps setupTheme()).
  • Omitting app_id creates the app; passing app_id deploys a new revision the same way as screenly edge-app deploy.
  • Based on Prepare Screenly MCP for Claude Desktop marketplace listing [T10708] #304 (MCP annotations and MCPB bundle). This branch includes that work plus the new tool.

Test plan

  • cargo test --bin screenly mcp::
  • In Claude: ask to publish a simple HTML Artifact as an Edge App; confirm the response includes app_id and revision.
  • Ask Claude to update the same page on Screenly; confirm it reuses app_id and the revision increments.
  • Confirm the MCPB manifest still matches src/mcp/server.rs tool names and descriptions.

Add tool annotations, an MCPB bundle manifest, release packaging for
desktop platforms, and route logger output to stderr so the MCP stdio
JSON-RPC stream stays clean.
Fork pull_request runs do not receive repository secrets, so
SCREENLY_API_TOKEN is empty and `screen list` fails auth. The job also
uses screenly/cli@master, so it never exercises the PR's own code.
The listing text claimed api.screenly.io and no third-party telemetry;
production uses api.screenlyapp.com and the CLI always initializes Sentry.
Prefer Settings → Extensions over GitHub sideloads, and guide macOS
Gatekeeper blocks via Privacy & Security → Open Anyway instead of xattr.
Mark asset_create as open-world, treat updates as destructive, and mark
link/share tools idempotent so hints match MCP spec meaning.
Keeps the duplicated 33-tool name/description catalog from drifting
between mcpb/manifest.json and the #[tool] handlers.
Windows bundles ship screenly.exe; bake matching entry_point/command into
each single-platform manifest instead of relying on a stale override.
The >=0.10.0 bound had no Screenly-specific source and could silently
block installs; keep platform compatibility only.
Use the workspace screenlyapp.com Settings → Security → API tokens path
in both places so install docs no longer conflict.
Gives Claude Desktop and the marketplace listing a proper brand mark;
the release pack step and local build docs now include icon.png.
Pin @anthropic-ai/mcpb to 2.1.2 for reproducible releases, and publish
screenly-macos-arm64/x64 and screenly-windows-x64 aliases alongside the
rustc-target filenames.
Claude can now create an app from HTML and reuse the app id to deploy updates as new revisions, with screenly.js and theme CSS variables injected for the player.
Claude is more likely to call edge_app_publish_from_html for Artifact HTML instead of asset_create.
tempfile was only a dev-dependency, so cargo build failed; also match existing MCP format-string style.
@salmanfarisvp

Copy link
Copy Markdown
Member Author

Closing this in favor of a stacked PR.

GitHub will not accept feat/mcp-annotations-and-mcpb-bundle as the base on Screenly/cli because that branch only exists on the fork (it is the head of #304). Targeting master here duplicated every #304 commit.

Stacked review (Edge App HTML publish only, based on #304):
salmanfarisvp#1

After #304 merges, this work can be reopened against master from feat/mcp-publish-edge-app-from-html and GitHub will show only the new commits.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant