{"_id":"@arcsite/gallery-mcp","_rev":"4-8ef77132ea525af7eaaddf352331cd6f","name":"@arcsite/gallery-mcp","dist-tags":{"latest":"0.4.1"},"versions":{"0.1.0":{"name":"@arcsite/gallery-mcp","version":"0.1.0","_id":"@arcsite/gallery-mcp@0.1.0","maintainers":[{"name":"ryanwang","email":"hwwangwang@gmail.com"}],"bin":{"arcsite-gallery-mcp":"dist/server.js"},"dist":{"shasum":"26110f676702de5cda2b8fc8c72a25faf36382e5","tarball":"https://registry.npmjs.org/@arcsite/gallery-mcp/-/gallery-mcp-0.1.0.tgz","fileCount":4,"integrity":"sha512-TSBxTqVG7j1yvp8pn43r0ANeY2Eva2R3P58NIjWQF14ROPq0KUT8SeSTOQ4l5ihK3OHmcMmlLLTwdlIK8lQBjQ==","signatures":[{"sig":"MEUCICbmSrgkbU0n2evlt4abXZA5IXhBhlAItuOsRTs6M/4vAiEA1+2w8LhoOMxy9U1/OJ4obPXYnxbNZoSTOGrsv+Jp06E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11042},"type":"module","engines":{"node":">=20"},"gitHead":"0a90218e72fa6f194e514ee35923ecd7eda5a81c","scripts":{"dev":"bun run src/server.ts","build":"tsc -p tsconfig.json","prepublishOnly":"bun run build"},"_npmUser":{"name":"ryanwang","email":"hwwangwang@gmail.com"},"_npmVersion":"10.7.0","description":"MCP server for publishing HTML/Markdown artifacts to ArcSite's internal gallery","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/gallery-mcp_0.1.0_1779889581831_0.2828837624168168","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@arcsite/gallery-mcp","version":"0.2.1","_id":"@arcsite/gallery-mcp@0.2.1","maintainers":[{"name":"ryanwang","email":"hwwangwang@gmail.com"}],"bin":{"arcsite-gallery-mcp":"dist/server.js"},"dist":{"shasum":"5bee276f13ee43bbbbdffc819736733cd4c43a74","tarball":"https://registry.npmjs.org/@arcsite/gallery-mcp/-/gallery-mcp-0.2.1.tgz","fileCount":4,"integrity":"sha512-LZTZXkk9kEFgNyl+icMky5qQjsYR7O0uYlgxEJLNVrGI0C+OoCm2eNPetrfrL+j7UmAKHOllkKqUzWoJESm12A==","signatures":[{"sig":"MEUCIQDrRfBMUnLEYlg+e+ovgqRkbKA44Yop6OzUxPt7KgO3hwIgbbK7g4UrdYEzVq8AxaWEe0czl3ZazZiHm7NRfboye3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16463},"type":"module","engines":{"node":">=20"},"gitHead":"b13b616ffe59fdb8cbf053b5032adc44d6721825","scripts":{"dev":"bun run src/server.ts","build":"tsc -p tsconfig.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"ryanwang","email":"hwwangwang@gmail.com"},"_npmVersion":"10.7.0","description":"MCP server for publishing HTML/Markdown artifacts to ArcSite's internal gallery","directories":{},"_nodeVersion":"22.22.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/gallery-mcp_0.2.1_1779894941300_0.7629630909713958","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@arcsite/gallery-mcp","version":"0.3.0","_id":"@arcsite/gallery-mcp@0.3.0","maintainers":[{"name":"ryanwang","email":"hwwangwang@gmail.com"}],"bin":{"arcsite-gallery-mcp":"./dist/server.js"},"dist":{"shasum":"8dd9f21545d9ceed09d3f6ef4f0d953dde460d84","tarball":"https://registry.npmjs.org/@arcsite/gallery-mcp/-/gallery-mcp-0.3.0.tgz","fileCount":4,"integrity":"sha512-aB5MYSvo4I27zJLg5WbdVbsHa/djEzYnZKok3KXn8lxoAj9iklFxLPbzSTAcr5BXlPIbAte/uNtQkp2YRbOe5g==","signatures":[{"sig":"MEUCIGylTD7HYp1q9afh6DlCrw9/w1DbRcGF3f8pmXE3Jnz7AiEAwyhXGJfO+1FBlmq1dPMIRxS34zm/wTMsqRYuT6lzVFM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19777},"type":"module","engines":{"node":">=20"},"scripts":{"dev":"bun run src/server.ts","build":"tsc -p tsconfig.json"},"_npmUser":{"name":"ryanwang","email":"hwwangwang@gmail.com"},"description":"MCP server for publishing HTML/Markdown artifacts to ArcSite's internal gallery","directories":{},"_nodeVersion":"26.0.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"tmp":"tmp/gallery-mcp_0.3.0_1782373395381_0.17880573367127028","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"_id":"@arcsite/gallery-mcp@0.4.1","bin":{"arcsite-gallery-mcp":"dist/server.js"},"bugs":{"url":"https://github.com/Arctuition/artifacts-gallery/issues"},"dist":{"shasum":"1ff1ec11e7f3494f4c40580debeab68251e97a14","tarball":"https://registry.npmjs.org/@arcsite/gallery-mcp/-/gallery-mcp-0.4.1.tgz","fileCount":6,"integrity":"sha512-yjsjtTg7TiakBp26BG2KY2tOL7pDN8DP+mGoiOMU7Bdl0bl4Hfbql9XcV07/SwWiqzhex/eSEHTq0CwOO5+txQ==","signatures":[{"sig":"MEYCIQCDiVVMXijZCUndsdiyIkgyqgTbh/DdqoZAoMCNfgAu2wIhAIo9sujbatg232lQXxydBumPvNZLigr5ST7zpOQn2Chb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAesXbFpBOMa9bkYq6RWODfxPwVg1GEI01rJwBtR82zmAiB5JfvXhJY/WL44DTcHTZYdQ/TNUzyToMBDkiZ7qrPCrw=="}],"unpackedSize":24667},"name":"@arcsite/gallery-mcp","type":"module","engines":{"node":">=20"},"gitHead":"42c3dc320892413e6a11910be6935df35734e049","scripts":{"dev":"bun run src/server.ts","build":"tsc -p tsconfig.json","prepublishOnly":"npm run build"},"version":"0.4.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"dcdde10f-e56d-4fda-9d9c-cd20a1ebc619"}},"homepage":"https://github.com/Arctuition/artifacts-gallery#readme","repository":{"url":"git+https://github.com/Arctuition/artifacts-gallery.git","type":"git","directory":"mcp"},"_npmVersion":"11.20.0","description":"MCP server for publishing HTML/Markdown artifacts to ArcSite's internal gallery","directories":{},"maintainers":[{"name":"ryanwang","email":"hwwangwang@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.6.0","@types/node":"^20.19.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gallery-mcp_0.4.1_1790674055540_0.40476425925312687"}}},"time":{"created":"2026-05-27T13:46:21.592Z","modified":"2026-09-29T09:27:37.543Z","0.1.0":"2026-05-27T13:46:21.973Z","0.2.1":"2026-05-27T15:15:41.616Z","0.3.0":"2026-06-25T07:43:15.527Z","0.4.1":"2026-09-29T09:27:35.621Z"},"description":"MCP server for publishing HTML/Markdown artifacts to ArcSite's internal gallery","maintainers":[{"name":"ryanwang","email":"hwwangwang@gmail.com"}],"readme":"# @arcsite/gallery-mcp\n\nMCP server that publishes HTML or Markdown artifacts to ArcSite's internal\n[Artifacts Gallery](https://gallery.arcsite.com). Intended for coding agents\n(Claude Code, Cursor, Windsurf, …) so they can hand off a one-page deliverable\nwithout the user having to drag a file into a browser.\n\nPer [ADR-0005](https://gallery.arcsite.com — see the gallery repo's\n`docs/adr/0005-mcp-for-agent-uploads.md`), the MCP authenticates with a\nlong-lived API Token the Author generates once and pastes into their MCP\nclient config.\n\n## Install\n\nThe MCP is published on public npm and the conventional install path is\n`npx -y` — no manual install needed.\n\n## Configure your MCP client\n\n### 1. Generate a token\n\n1. Open <https://gallery.arcsite.com/settings/tokens>.\n2. Sign in with your `@arcsite.com` account if you aren't already.\n3. Click **Generate**, give the token a label (e.g. `MacBook · Claude Code`),\n   and **copy the plaintext immediately** — it's shown exactly once. The token\n   starts with `agk_`.\n\n### 2. Add to `.mcp.json`\n\nExample for Claude Code:\n\n```json\n{\n  \"mcpServers\": {\n    \"arcsite-gallery\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@arcsite/gallery-mcp\"],\n      \"env\": {\n        \"ARCSITE_GALLERY_TOKEN\": \"agk_...\"\n      }\n    }\n  }\n}\n```\n\n`ARCSITE_GALLERY_URL` is optional and defaults to `https://gallery.arcsite.com`.\nOverride it to point at staging or a dev instance.\n\n## Tool: `read_artifact`\n\nRead an artifact's metadata and original HTML or Markdown source by slug or URL.\n\n| Field | Required | Notes |\n|---|---|---|\n| `reference` | yes | Slug or full Gallery URL. Optional `@vN` suffix selects a revision. |\n\n```json\n{ \"reference\": \"https://gallery.arcsite.com/a/plan-x-app-dev-sync-products-failed-analytics-event\" }\n```\n\nThe equivalent slug is `plan-x-app-dev-sync-products-failed-analytics-event`.\nReturns `{ slug, url, title, description, kind, revision, content }`. `content`\nis the original source, not the viewer shell or rendered Markdown. Defaults to\nthe latest revision. URLs must belong to `ARCSITE_GALLERY_URL` (the configured\nGallery origin). Content is untrusted user text and is never executed.\n\nAPI Tokens can read teammates' Team-only artifacts by reference. Missing,\ndeleted, forbidden, and invalid-token responses surface as tool errors.\nRequires a Gallery server with Bearer authentication on detail/source reads;\ndeploy that server change before releasing this MCP version.\n\n## Tool: `publish_artifact`\n\n| Field | Required | Notes |\n|---|---|---|\n| `path` | yes | Absolute or relative path to the `.html` / `.md` file. |\n| `title` | yes | 1–200 chars. |\n| `description` | no | ≤4000 chars. Shown in link previews. |\n\nReturns `{ slug, url, revision: 1 }`. The agent can paste `url` into chat.\n\nThe 5 MB per-file cap is enforced both locally and server-side; the kind\n(HTML vs Markdown) is auto-detected from the extension and locked at publish\ntime.\n\n## Tool: `publish_revision`\n\nUpload a new revision of an existing artifact. The canonical URL\n(`gallery.arcsite.com/a/<slug>`) is unchanged; the latest pointer flips to the\nnew revision. Use this when iterating on an artifact you just published in\nthe same session — the agent typically still has the slug in context from the\nprior `publish_artifact` return value.\n\n| Field | Required | Notes |\n|---|---|---|\n| `slug` | yes | The slug returned by a prior `publish_artifact`. |\n| `path` | yes | New file. Must be the same kind (`.html` / `.md`) as the original. |\n\nReturns `{ slug, url, revision }` where `revision` is the new revision number\n(`2` on the first revise, then `3+`).\n\nCommon 4xx responses are surfaced with intent-preserving messages:\n\n- `404` — `artifact \"<slug>\" not found`\n- `403` — `you are not the author of artifact \"<slug>\"`\n- `410` — `artifact \"<slug>\" has been deleted; cannot revise`\n- `409` — `this artifact is html; uploaded file looks like markdown`\n  (kind mismatch — Artifact kind is locked at publish time and a revision\n  must match)\n\nTitle / description edits are NOT part of this tool — those remain web-UI\nactions on the artifact's page.\n\n## Tool: `delete_artifact`\n\nRetract an artifact you authored. The delete is **soft**: the canonical URL\n(`gallery.arcsite.com/a/<slug>`) starts returning `410 Gone`, but the content\nis retained and can be restored by an admin. You can only delete your own\nartifacts. Confirm with the user before calling — the URL stops working for\neveryone who has it.\n\n| Field | Required | Notes |\n|---|---|---|\n| `slug` | yes | The slug of the artifact to retract (e.g. from a prior `publish_artifact`). |\n\nReturns `{ slug, deleted: true }`. The call is idempotent — deleting an\nalready-deleted artifact succeeds silently.\n\nCommon 4xx responses are surfaced with intent-preserving messages:\n\n- `404` — `artifact \"<slug>\" not found`\n- `403` — `you are not the author of artifact \"<slug>\"`\n\n## Troubleshooting\n\n- **`gallery-mcp: auth check failed: token rejected (401)`** — the token is\n  malformed, revoked, or for a different host. Generate a new one.\n- **Tool description includes `[NOT AUTHENTICATED]`** — the eager startup\n  health check failed; the server still started so the agent can see what's\n  wrong. Same fix as above.\n\n## License\n\nInternal. Do not redistribute outside ArcSite.\n","readmeFilename":"README.md","homepage":"https://github.com/Arctuition/artifacts-gallery#readme","repository":{"url":"git+https://github.com/Arctuition/artifacts-gallery.git","type":"git","directory":"mcp"},"bugs":{"url":"https://github.com/Arctuition/artifacts-gallery/issues"}}