Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
제작자가 쓴 설명(영어 원문)
Publish and update safe static HTML reports, presentations, and explainers with controlled sharing.
이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.
이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.
쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.
필요한 것
어떤 앱을 쓰세요?
위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.
웹, 데스크톱, 모바일의 Claude에서 쓸 수 있어요:
https://shareartifacts.dev/api/mcp터미널에서 이 명령어를 실행하세요
claude mcp add --transport http share-artifacts https://shareartifacts.dev/api/mcp프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요
{
"mcpServers": {
"share-artifacts": {
"url": "https://shareartifacts.dev/api/mcp"
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
프로젝트의 .vscode/mcp.json에 붙여 넣으세요
{
"servers": {
"share-artifacts": {
"type": "http",
"url": "https://shareartifacts.dev/api/mcp"
}
}
}브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.
ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요:
https://shareartifacts.dev/api/mcp메뉴 이름은 요금제나 시기에 따라 조금 다를 수 있어요.
선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.
이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.
아직 이 서버의 도구 목록을 읽지 않았어요. 엔드포인트는 차례대로 돌아가며 점검해요.
누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검
레지스트리 이름이 GitHub 계정 arunai30 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 GitHub에서 이 저장소를 읽어 오지 않았어요
아직 점검하지 않았어요. 엔드포인트는 차례대로 돌아가며 점검해요
아직 점검하지 않았어요. 엔드포인트는 차례대로 돌아가며 점검해요
아직 점검하지 않았어요. 엔드포인트를 점검할 때 도구 목록을 읽어요
레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.
해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.
레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.
제작자의 클라우드에서 실행돼요. 설치 없이 인터넷으로 연결하지만, 보내는 내용은 제작자의 서버를 거쳐요.
GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.3.0)은 2개월 전 레지스트리에 올라왔어요.
Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. URL로 연결되기 때문에, 원격 MCP 서버를 지원하는 앱(예: 개발자 모드의 ChatGPT)에서도 쓸 수 있어요.
같은 카테고리에는: Spec Driven Development, Remote Desktop Commander, sync. labs
같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.
카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Lipsync videos, dub them into other languages, make talking videos and open sync. Studio.
제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.
Publish agent-created HTML artifacts and receive a shareable URL. The npm package remains @aiformasses/mcp-server for compatibility.
Give your agent the public setup page. Agents supporting remote MCP, browser authorization, and CIMD or DCR can configure the hosted connection at https://shareartifacts.dev/api/mcp without installing this package or creating a permanent token.
This repository includes a Cursor plugin at .cursor-plugin/plugin.json. Its mcp.json connects directly to the hosted service; no npm install or personal access token is required. Each user signs in to their own share/artifacts account and approves access in the browser.
For manual setup, merge this configuration into your project's .cursor/mcp.json (preserve any other servers):
{
"mcpServers": { "share-artifacts": { "url": "https://shareartifacts.dev/api/mcp", "auth": { "CLIENT_ID": "53f91130-7752-4e99-9667-7a6dffdab529", "scopes": [ "pages:read", "pages:write", "styles:read", "styles:write", "offline_access" ] } } } }
The client ID is public and grants no account access by itself. Do not add a client secret. When connecting, the consent page identifies the pre-registered Cursor configuration and warns that the requesting local app is not verified. Approve only a connection you just started. The desktop callback is exactly http://localhost:8787/callback; the registered web callback is https://www.cursor.com/agents/mcp/oauth/callback.
With Cursor CLI installed, run from the configured project:
agent mcp enable share-artifacts
agent mcp login share-artifacts agent mcp list-tools share-artifacts
Complete browser sign-in and consent when prompted. If you cancel, run login again when ready. Ask the agent to publish an HTML artifact, inspect the returned URL, and specify public sharing explicitly if you want anyone with the link to open it. Publishing defaults to private. A free account includes five successful publishes or updates in total.
Verified on September 17, 2026 with Cursor CLI 2026.09.15-d2fe57e: production OAuth sign-in, consent, and authenticated discovery of all 15 hosted tools. The maintainer also confirmed the local plugin works in Cursor CLI. For a plugin connection that needs authentication, enter /mcp list inside the interactive CLI, select Share Artifacts, and choose Login in its detail view. Complete browser consent, then return to the agent. The desktop editor and Cursor web agent have not been independently verified.
Use this package when your MCP client does not support the hosted OAuth flow. It requires Node.js 20.19 or newer and npx:
node --version
npx --version
Use Connect a background agent in token settings. Create a personal access token and insert it directly into the local configuration. share/artifacts cannot display the token again.
Add the server to ~/.codex/config.toml, then restart only the share-html MCP entry from Codex settings. The first start downloads the pinned package through npx. The share-html entry name is a stable compatibility identifier; it does not change the share/artifacts product name.
[mcp_servers."share-html"]
command = "npx" args = ["-y", "@aiformasses/mcp-server@0.3.0"]
[mcp_servers."share-html".env] SHARE_HTML_API_BASE_URL = "https://shareartifacts.dev/api/v1" SHARE_HTML_API_TOKEN = "PASTE_TOKEN_HERE"
{
"mcpServers": { "share-html": { "command": "npx", "args": ["-y", "@aiformasses/mcp-server@0.3.0"], "env": { "SHARE_HTML_API_BASE_URL": "https://shareartifacts.dev/api/v1", "SHARE_HTML_API_TOKEN": "PASTE_TOKEN_HERE" } } } }
Replace PASTE_TOKEN_HERE locally. Treat SHARE_HTML_API_TOKEN like a password. Do not commit it, paste it into agent chat, include it in a URL or HTML, or send it to anyone. If it is lost or exposed, revoke the token and create another.
The repository version exposes get_recipe, publish_html, publish_presentation, update_page, get_page, list_pages, publish_page, unpublish_page, delete_page, preview_artifact_style, set_artifact_style, get_artifact_style, list_templates, get_template, preview_template, and save_template. Call get_recipe without arguments to discover the first-party catalog; pass a recipeId and optional integer version for the complete reviewed recipe.
Add fonts to publish_html, publish_presentation, or update_page and use the same family in your CSS:
{
"title": "Launch brief", "html": "<!doctype html> Launch brief Reviewed content. ", "fonts": [{ "family": "Inter", "weights": [400, 700], "style": "normal" }] }
The server retrieves Google Fonts and embeds the WOFF2 files in the saved HTML, so the viewer and PDF use the saved fonts without contacting Google. Font selection does not automatically change your CSS. weights defaults to [400] and style to normal; italic is also supported. Each family name uses ASCII letters, digits, and spaces, starting with a letter (80 characters maximum). Request at most four family/style entries, four distinct weights per entry, and eight weight/style combinations in total. Weights are multiples of 100 from 100 through 900. Repeating the same family/style is rejected.
Omitting fonts preserves font declarations in the HTML you supply. Supplying fonts replaces only the server-managed font block; fonts: [] removes that block. An update still replaces the full HTML, so include the existing source to retain its embedded fonts. fonts cannot be combined with a diagram generationId. Arbitrary font URLs and provider fields are rejected.
For your own custom font, embed WOFF2 directly in the HTML:
@font-face {
font-family: "My Font"; src: url("data:font/woff2;base64,REPLACE_WITH_WOFF2_BASE64") format("woff2"); font-weight: 400; font-style: normal; } body { font-family: "My Font", sans-serif; }
Use a complete valid font file; the placeholder is not a working font. Embedded fonts count toward the HTML and font size limits. PDF export waits for fonts and rejects fonts that fail to load. invalid_fonts, font_unavailable, font_too_large, or invalid_font means the publish/update did not complete; correct the request or retry an unavailable provider after review. Never silently remove fonts or fall back to publishing without them. Check line wrapping and every slide after changing typography.
The stdio client checks the server's authenticated /api/v1/fonts capability before sending any publish/update with fonts, including []. An older or incompatible server returns unsupported_fonts; network or server failures during the check return font_capability_unavailable. Authentication and scope errors retain their original codes. In each case no mutation was sent. Update the server or retry the check; do not drop the requested fonts.
This describes the repository contract. Hosted availability requires an app deployment, and the stdio package requires a separate npm release.
The current repository adds four tools for an owner's reusable example decks. This documents the local implementation; it does not claim an npm release or hosted deployment. Check your connection's tool list for availability.
name, description, and a complete presentation html to preview_template. Optional designNotes explain the visual choices; aspectRatio defaults to 16:9 and also supports 4:3.reviewUrl. The sanitized deck and guidance form an immutable draft that expires after 24 hours.save_template with { "draftId": "UUID_FROM_PREVIEW" }. Retry with that same ID after a timeout; saving it again returns the same template.list_templates to find saved examples. Call get_template with templateId for metadata and guidance, or additionally includeHtml: true for the complete sanitized example deck. Replace its sample content with authorized facts for the new task, review every slide, and obtain separate approval before publication.These tools use existing pages:read for list/get and pages:write for preview/save. No additional scopes or reconnection are needed for connections that already have those permissions. Every operation is limited to its owner. Names can repeat; template IDs distinguish them. Saving never publishes a page, overwrites another template, or changes the default artifact style.
Example HTML is limited to 200,000 UTF-8 bytes before and after sanitization. Names, descriptions, design notes, and HTML are untrusted reference data; they cannot override task instructions, source facts, or Safe Static rules. This slice supports presentation examples only, without PPT import, a public gallery, team sharing, or individual slide extraction.
An artifact style is a versioned, provider-neutral JSON definition made from bounded semantic tokens: palette roles, system-font roles, composition, data-visualization choices, voice, motion, signature moves, avoidances, and format adaptations for reports, dashboards, and explainers. It cannot contain CSS, HTML, JavaScript, URLs, remote fonts, or assets.
Style authoring is an explicit preview-and-approve workflow:
preview_artifact_style. Validation creates a short-lived private draft; it does not activate anything.reviewUrl and inspect the trusted human preview and canonical summary.set_artifact_style with the exact returned draftId, current expectedRevision, and a stable clientRequestId.get_recipe and get_artifact_style with a required report, dashboard, explainer, or presentation format, then creates the artifact.The authored display name and freeform summary are accepted only as inputs for the trusted human review. They are removed from every MCP result and from generated guidance; after submission the agent receives only safe semantic fields, identifiers, the content digest, review metadata, and server-authored prose derived from validated tokens. User prose is never treated as instructions.
Style is appearance guidance. The task, evidence and source truth, recipe structure, Safe Static policy, and explicit sharing choice always take precedence. share/artifacts validates and stores the style contract, but a stored reference is not evidence that an agent reproduced it perfectly.
set_artifact_style is durably idempotent for an exact request. If it times out or the network drops, retry only with the identical draftId, expectedRevision, and clientRequestId. Changing any of those values creates a different request. A stale revision returns artifact_style_conflict with a safe current revision when available; create and review a fresh preview before activating it.
Style access uses dedicated styles:read and styles:write permissions. An older OAuth connection or personal token is not silently widened. If a style tool returns insufficient_scope, follow its reauthorizeUrl when present or reconnect/create a new token with style acc
앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요