MCP server · works with any AI agent

Give your agent
a publish button.

artifacts-mcp turns "make me a page" into a live URL. Any MCP-capable agent — Claude, Cursor, your own bots — can publish ready-to-share web pages from a conversation, and you decide exactly who can open each one.

claude.aiClaude Code CursorVS Code custom agentsany MCP client
One URL is the whole setup. In claude.ai: Settings → Connectors → Add custom connector. In Claude Code / Cursor: add it as a remote MCP server. Sign in once — no client IDs, no secrets, no deploy. Free while in open beta.
you, to your agent Publish this retention report as a page my team can open.

Q2 Retention Report

“make this page live”

That's the whole workflow. Your agent says it back with a URL.

2 minto set up, once
1 sentenceto publish a page
10 secfrom ask to live URL
0repos, builds, or DNS
The old way — export the file, screenshot it, upload somewhere, fix the formatting, share the wrong version. 20–30 minutes, every time.
With artifacts-mcp — say "make this a page". Send the link. About 10 seconds.
The problem

Agents build great pages. Then the pages die in the chat.

Trapped in the chat window.

Whatever your agent builds — a report, a dashboard, a prototype — lives inside the chat app that made it. Your client, your CFO, your other team can't open it.

Shared as screenshots.

So good work leaves as a PNG in Slack or a paste in an email — unstyled, uninteractive, and out of date by Friday.

Deploying is overkill.

Repo, build, host, DNS — nobody sets that up for a one-off page. Publishing should be one sentence in the conversation.

How it works

Three steps, once. Then it's just asking.

1

Connect

Point your agent at the connector URL — claude.ai, Claude Code, Cursor, or anything that speaks MCP — and sign in with Google or email. Your publisher account is created on first sign-in.

2

Ask

In any conversation: "publish this as a page". The agent calls publish_artifact and hands you the live URL.

3

Share

Send the link. You choose who can open it — and the agent can update or unpublish the page later without the URL changing.

The demo

You type this. You get this.

you type Make a page from this quarterly report and share it with everyone at my company.
you get

Q3 Report

A real web page at a real link — styled, up to date, and only your company can open it.

domain
Access control

The part chat apps can't do: you decide who opens it.

public

Anyone. A normal web page.

link

Anyone with the link. Unlisted and kept out of search engines.

private

Only you. The URL shows nothing to anyone else — not even that it exists.

emails

Specific people. They sign in once; only listed addresses get through.

domain

Your whole company. Everyone @yourco.com and nobody else.

Real stories

Real ways people use it.

A data analyst, every Monday
her, to her agentPublish this week's sales numbers as a page for the team.

Her team opens the same link every week. It's always the newest version.

domain
A freelancer with a client
them, to their agentTurn this design into a page only my client can open.

The client clicks, signs in once, and sees the live design — no accounts to create, no files to download.

emails
An on-call engineer at 2am
them, to their agentPublish this incident summary so the whole company can read it tomorrow.

One link in the morning stand-up. No wiki, no permissions tickets.

domain
weekly reportsdashboardsprototypes onboarding docsstatus pagesclient work
For teams

Company-wide sharing is one argument.

No admin console, no user provisioning. Anyone who signs in with a company email can open domain-shared pages; everyone else sees nothing.

publish_artifact({
  title: "On-call handbook",
  html: "…",
  visibility: "domain",
  allowed_domain: "yourco.com"
})