Snipaya

io.github.krzysztofsurdy由 GitHub 帳號 krzysztofsurdy 發布v1.2.2更新於 Nov 6, 2026

Annotate screenshots in the Snipaya macOS app: arrows, text, redaction, crop, export

已驗證STDIO僅桌面檔案與儲存媒體與設計

概覽

AI 產生的概覽

讓助理在 macOS 版 Snipaya 中標註截圖的橋接服務:加入箭頭、文字、形狀、遮蔽、裁切並匯出。

可以做什麼
  • 檢視畫布:描述開啟的分頁、圖片、標註與選取範圍,並產生 PNG 預覽
  • 加入圖片與標註:箭頭、直線、形狀、模糊或雜訊、文字、步驟編號、表情符號、手繪筆跡、放大鏡、對話框標註、聚光燈與量測線
  • 分析像素:取色、以本機 OCR 辨識文字,並自動遮蔽電子郵件、電話、卡號、權杖、IP、密碼與人臉
  • 編輯既有內容:移動、縮放、旋轉、改樣式或刪除元素,選取元素,排列圖片,設定裁切,復原與重做
  • 管理分頁與輸出:新增、切換或關閉分頁,將 PNG 或 JPG 匯出到路徑或已設定的目的地,並儲存專案檔
適用情境
適合在 Mac 上使用 Snipaya、並希望由助理把截圖整理成完成度高的標註圖:錯誤回報、逐步操作說明、前後對照,或需要遮蔽後才能分享的截圖。
執行需求
需安裝並執行 macOS 版 Snipaya,並在「設定 > AI 助理」中開啟「允許 AI 助理」(含 14 天試用)。使用 npx 橋接需 Node.js 20 或更新版本。可選用 SNIPAYA_MCP_TOKEN 與 SNIPAYA_MCP_URL 覆寫 Snipaya 儲存的設定;SNIPAYA_MCP_NO_LAUNCH=1 可禁止橋接自動開啟應用程式。
安裝前請注意
橋接持有存取 Snipaya 本機伺服器的權杖;請優先使用 SNIPAYA_MCP_TOKEN 環境變數而非 --token 參數,後者對其他行程可見。它可修改與刪除畫布元素,匯出時在允許的情況下會覆寫檔案,並會把圖片傳送到已設定的目的地(例如上傳服務、Jira、Confluence),不過網路傳送前一定會請使用者確認。遮蔽為自動辨識,分享前請自行核對。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Snipaya,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[Snipaya app icon]

snipaya-mcp

[CI] [npm version] [npm downloads] [MIT license] [snipaya-mcp on Glama]

Connect any MCP client that speaks stdio to Snipaya, the image and screenshot annotator for macOS. Your assistant can read the canvas, add arrows, text, shapes and callouts, redact sensitive data, crop, and export, while you watch the result in Snipaya.

Snipaya has an MCP server built in, served over Streamable HTTP on 127.0.0.1. snipaya-mcp is a thin bridge for clients that only start local stdio servers: it forwards every MCP message between the client and Snipaya, unchanged.

Tools and prompts are listed even before Snipaya is open. Until Snipaya answers, the bridge lists them from a built-in catalog, and a tool call returns a message that says what to do.

[An assistant documenting a ticket in Snipaya: four screenshots on one canvas with numbered steps, arrows and callouts]

Listed on the MCP Registry as io.github.krzysztofsurdy/snipaya-mcp, on Glama and in TensorBlock awesome-mcp-servers.

Requirements

  • Snipaya for macOS. It comes with a 14-day free trial.
  • Node.js 20 or newer (for the npx setup).

Turn on the MCP server in Snipaya

The server is off by default.

  1. Open Snipaya, then Settings > AI Assistants.
  2. Turn on Allow AI assistants. The status changes to Running.

That is all the bridge needs. It reads the access token and port from the settings Snipaya saves on this Mac, so you do not have to copy them.

Setup

npx

sh
npx -y snipaya-mcp

If Snipaya is not running but Allow AI assistants is on, the bridge opens Snipaya in the background and waits up to 10 seconds for its server.

To override what Snipaya saved, set these variables or flags. Flags win over variables, and variables win over the saved settings.

VariableFlagDefault
SNIPAYA_MCP_TOKEN--tokenToken Snipaya savedAccess token from Settings > AI Assistants.
SNIPAYA_MCP_URL--urlhttp://127.0.0.1:<saved port>/mcp, else http://127.0.0.1:47321/mcpServer URL from Snipaya. Only 127.0.0.1 and localhost are accepted.
SNIPAYA_MCP_NO_LAUNCHSet to 1 to never open Snipaya. While Snipaya is closed, tool calls then return Cannot reach Snipaya.

Prefer the environment variable over --token: command-line flags are visible to other processes on the Mac.

JSON config

For clients configured with an mcpServers JSON file:

json
{  "mcpServers": {    "snipaya": {      "command": "npx",      "args": ["-y", "snipaya-mcp"],      "env": {        "npm_config_registry": "https://registry.npmjs.org/"      }    }  }}

For a custom setup, pass the values in env instead:

json
{  "mcpServers": {    "snipaya": {      "command": "npx",      "args": ["-y", "snipaya-mcp"],      "env": {        "npm_config_registry": "https://registry.npmjs.org/",        "SNIPAYA_MCP_TOKEN": "<access token>",        "SNIPAYA_MCP_URL": "<server url>"      }    }  }}

If your client supports Streamable HTTP servers directly, you do not need this bridge: use Copy MCP config in Snipaya instead.

MCP Bundle (.mcpb)

  1. Download snipaya-mcp-<version>.mcpb from the latest release.
  2. Open it with an MCP client that supports MCP Bundles, or drag it into the client's extensions settings.
  3. Leave the token and URL empty to use what Snipaya saved, or paste the values from Settings > AI Assistants for a custom setup.

Security model

  • Local only. Snipaya's server listens on 127.0.0.1 and accepts only loopback Host headers and requests without an Origin header, so websites in your browser cannot reach it. The bridge refuses any URL whose host is not 127.0.0.1 or localhost, and never sends an Origin header.
  • Off by default. Nothing listens until you turn on Allow AI assistants.
  • Token. Every request carries Authorization: Bearer <token>. Snipaya generates the token, and Regenerate in Settings revokes the old one. The bridge never writes the token to its logs.
  • Saved settings. Without SNIPAYA_MCP_TOKEN, the bridge reads the token and port from ~/Library/Application Support/Snipaya/mcp.json, which Snipaya writes readable only by your macOS user. The bridge never writes to it.
  • Opening Snipaya. Only on macOS and only when Allow AI assistants is on, the bridge first sends one request without the token to see whether Snipaya answers. If the connection is refused, it runs open -g -b dev.snipaya.app (no shell) and retries. It does this at start, and again for a tool call while Snipaya is not reachable. Any other failure, such as a rejected token, never opens the app. SNIPAYA_MCP_NO_LAUNCH=1 turns this off.
  • The bridge only forwards. It runs no tools itself, stores nothing, and connects only to Snipaya. While Snipaya is not reachable, it answers the tool and prompt lists from a catalog shipped in the package. All actions run inside Snipaya, which shows connected assistants and recent activity in Settings > AI Assistants.

Tools

The tools come from the Snipaya version you have installed. Until Snipaya answers, the bridge lists the tools of Snipaya 1.3.3 from its catalog, and once Snipaya answers, the list of your installed version applies. Snipaya 1.3 provides:

ToolTitle
snipaya_get_canvasGet canvas
snipaya_renderRender canvas
snipaya_add_imageAdd image
snipaya_add_arrowAdd arrow or line
snipaya_add_shapeAdd shape
snipaya_add_textAdd text
snipaya_add_stepAdd step number
snipaya_add_emojiAdd emoji
snipaya_add_freehandAdd freehand stroke
snipaya_add_magnifierAdd magnifier
snipaya_add_calloutAdd callout
snipaya_add_spotlightAdd spotlight
snipaya_add_measureAdd measurement
snipaya_pick_colorPick color
snipaya_read_textRead text
snipaya_redactRedact sensitive data
snipaya_update_itemsUpdate elements
snipaya_delete_itemsDelete elements
snipaya_selectSelect elements
snipaya_arrangeArrange images
snipaya_set_cropSet crop
snipaya_undoUndo
snipaya_redoRedo
snipaya_tabsManage tabs
snipaya_exportExport image
snipaya_list_destinationsList export destinations
snipaya_export_toExport to destination
snipaya_save_projectSave project

Prompts

PromptTitleOptional argument
explain_bugExplain a bug in a screenshotissue
redact_before_sharingRedact secrets before sharingalso_hide
finish_screenshotMake a screenshot look finishedbackground
copy_textCopy text out of an imagearea
make_walkthroughTurn screenshots into a walkthroughtopic
compare_before_afterCompare before and afterchange

Troubleshooting

The bridge writes the problem to stderr (never stdout, which carries the protocol). While Snipaya is not reachable, it still lists the tools, and returns the same text as the result of each tool call. When Snipaya starts answering, for example after you open it or accept the license agreement, the next tool call reaches it without a restart.

MessageFix
Snipaya's settings were not foundInstall Snipaya, open it once and turn on Allow AI assistants. Or set SNIPAYA_MCP_TOKEN.
Snipaya is a macOS appThe bridge runs on another system. It lists the tools, but they work only with Snipaya on a Mac.
Snipaya's MCP server is offTurn on Allow AI assistants in Settings > AI Assistants.
Snipaya's settings ... cannot be read or hold no valid tokenOpen Snipaya, which rewrites its settings, then check Allow AI assistants. Or set SNIPAYA_MCP_TOKEN.
Cannot open SnipayaSnipaya is not installed in a place macOS can find. Install it from snipaya.app or open it yourself.
Opened Snipaya, but its MCP server starts only after you accept the license agreementSnipaya 1.1 and newer start the MCP server only after you accept the license agreement. Accept it in the Snipaya window, then call the tool again.
Opened Snipaya, but its MCP server did not answerOpen Settings > AI Assistants and fix the error shown under the status.
Cannot reach Snipaya at ...Open Snipaya and turn on Allow AI assistants. If the message mentions the license agreement, accept it in Snipaya first. If the status shows an error, fix that first. Check that the URL matches Server URL.
Snipaya rejected the tokenThe token changed, for example after Regenerate. Remove SNIPAYA_MCP_TOKEN to use the saved token, or copy the current one.
Snipaya ended the sessionSnipaya restarted or the token changed. Restart the snipaya server in your client.
Refusing <host>The URL must point to 127.0.0.1 or localhost. Copy Server URL from Snipaya.
CONNECTION_CLOSED or Failed to connect, with npm error 404 ... is not in this registry in the MCP logThe bridge never started: a project .npmrc points npm at a private registry, and MCP clients start the server in the project folder. Set npm_config_registry to https://registry.npmjs.org/ for the snipaya server, in env as in the JSON config above. In Claude Code, add the server once for every project with claude mcp add --scope user snipaya -e npm_config_registry=https://registry.npmjs.org/ -- npx -y snipaya-mcp. Claude Code keeps MCP server logs in ~/Library/Caches/claude-cli-nodejs/<project>/mcp-logs-snipaya/.

Run npx -y snipaya-mcp --help to see the options.

Development

sh
npm cinpm run lintnpm run typechecknpm test          # builds, then runs the bridge over stdio against a local test servernpm run pack:mcpb # builds snipaya-mcp-<version>.mcpb with the official mcpb CLI

Catalog

catalog.json holds the tools, prompts and instructions the bridge serves while Snipaya is not reachable, and manifest.json lists the same tools and prompts. Regenerate both from a checkout of the Snipaya app (default ../snipaya) with Node 22.6 or newer, and commit the result:

sh
npm run sync:catalog -- ../snipaya

Without a token or URL, the bridge reads the settings of the installed Snipaya in ~/Library/Application Support/Snipaya. Development builds of Snipaya keep their settings in their own Snipaya Dev profile folder, so to bridge to one, set SNIPAYA_MCP_TOKEN and SNIPAYA_MCP_URL to the values shown in its Settings > AI Assistants.

Releasing

Pushing a v* tag runs .github/workflows/release.yml. It runs the CI checks, checks that the tag matches the version in package.json, package-lock.json, server.json and manifest.json, stages the version on npm (with provenance), waits up to 60 minutes for a maintainer to approve it, then creates the GitHub release with the .mcpb attached, and publishes server.json to the MCP Registry.

One-time setup

On npmjs.com, open snipaya-mcp > Settings > Trusted publishing, choose GitHub Actions and enter:

FieldValue
Organization or userkrzysztofsurdy
Repositorysnipaya-mcp
Workflow filenamerelease.yml
Environment nameleave empty
Allowed actionsnpm stage publish only

npm expires a trusted publisher that has not published within 2 days, so add it shortly before the first release. The MCP Registry and the GitHub release need no setup: they use the workflow's own GitHub token.

Cut a release

sh
npm version minor        # or patch, major: bumps all four files, commits and tags v<version>git push --follow-tags

When the workflow reaches Publish to npm, approve the staged version with a 2FA prompt: npm stage approve snipaya-mcp@<version>, or on the package page on npmjs.com. The rest of the release continues on its own.

Re-running a failed release is safe: it skips the npm and MCP Registry publish when that version is already there, and replaces the bundle on an existing GitHub release.

License

MIT

來源:README.md,提交 5200cf5

工具

28

snipaya_get_canvas

Get canvas

Describe the open tabs and the active canvas: images (id, position, size, original pixel size), annotations (id, kind, geometry, style, text, anchors), selection and crop. Call this first.

輸入參數tabId

snipaya_render

Render canvas

Return a PNG of the canvas (or only the given element ids) so you can see what the user sees. Downscaled to maxSize on the longest side.

輸入參數idstabIdmaxSizebeautify

snipaya_add_image

Add image

Add a screenshot or image to the canvas from an absolute file path or a data URL. Related images (before and after, steps of a flow) go on one canvas with placement "add". Use "new-tab" only to start a new, unrelated image, never one tab per related image.

輸入參數pathdataUrlplacement

snipaya_add_arrow

Add arrow or line

Draw a straight arrow (head at "to") or, with head false, a line. curved true draws a gentle curved arrow. Ends landing on an image are anchored to it.

輸入參數to必填from必填headstyletabIdcurvedrelativeTo

snipaya_add_shape

Add shape

Add a rectangle frame, ellipse, highlighter box, blur (pixelate) or noise (opaque random colors from the area, the safest way to hide sensitive data) over a region. For blur and noise, pixelSize sets the block size; larger is coarser.

輸入參數kind必填rect必填styletabIdpixelSizerelativeTo

snipaya_add_text

Add text

Add a text label with its top-left corner at "at". Supports \n for new lines.

輸入參數at必填text必填styletabIdrelativeTo

snipaya_add_step

Add step number

Add an auto-numbered step badge (1, 2, 3...) centered at "at", for step-by-step guides. size is the badge diameter; make it larger on big screenshots.

輸入參數at必填sizestyletabIdrelativeTo

snipaya_add_emoji

Add emoji

Place an emoji sticker centered at "at".

輸入參數at必填sizeemoji必填tabIdrelativeTo

snipaya_add_freehand

Add freehand stroke

Draw a freehand pen line, highlighter stroke or curved arrow through the given points. The path is smoothed like a hand-drawn stroke.

輸入參數kind必填styletabIdpoints必填relativeTo

snipaya_add_magnifier

Add magnifier

Add a round magnifying lens at "lens" that shows a zoomed view of the area around "source". radius defaults to about 8% of the short side of the image under the source.

輸入參數lens必填zoomstyletabIdradiussource必填relativeTo

snipaya_add_callout

Add callout

Add a speech-bubble callout with text in "rect" and a tail pointing at "tail" (defaults to below the box). The box grows to fit the text.

輸入參數rect必填tailtext必填styletabIdrelativeTo

snipaya_add_spotlight

Add spotlight

Dim everything except "rect" (form rect or ellipse) to draw attention to it. dim (0 to 1) changes the user’s spotlight darkness setting for all spotlights.

輸入參數dimformrect必填tabIdrelativeTo

snipaya_add_measure

Add measurement

Draw a measuring line from "from" to "to" labeled with its length in image pixels. Returns the label.

輸入參數to必填from必填styletabIdrelativeTo

snipaya_pick_color

Pick color

Read the color of the image pixel at "at" and return it as a #rrggbb hex. Changes nothing.

輸入參數at必填tabIdrelativeTo

snipaya_read_text

Read text

Recognize text (on-device OCR) in the images and return the lines in reading order with their rects. Limit it with rect and/or imageId. Rects use the relativeTo space when set.

輸入參數recttabIdimageIdrelativeTo

snipaya_redact

Redact sensitive data

Find emails, phone numbers, IBANs, card numbers, tokens, IP addresses, passwords and faces (on-device) and cover them in one undo step, in the user’s Redaction style (noise by default). style overrides it: noise fills the area with opaque random colors from it, blur pixelates with blocks sized to the text, solid covers it with a plain box. pixelSize sets the noise block size or a coarser minimum for blur. Defaults to every image and category. Returns the ids and counts.

輸入參數styletabIdimageIdspixelSizecategories

snipaya_update_items

Update elements

Change existing elements by id: move (x, y), resize (width, height), rotate (degrees), change text, or restyle. For steps, width or style.fontSize resizes the badge. All updates are one undo step.

輸入參數tabIdupdates必填relativeTo

snipaya_delete_items

Delete elements

Delete elements (images or annotations) by id. One undo step.

輸入參數ids必填tabId

snipaya_select

Select elements

Select elements by id so the user sees which ones you mean. An empty list clears the selection.

輸入參數ids必填tabId

snipaya_arrange

Arrange images

Lay out all images of the tab in a row, column or grid with an optional gap.

輸入參數gaptabIdlayout必填

snipaya_set_crop

Set crop

Crop exports to a rectangle, or pass null to remove the crop.

輸入參數rect必填tabIdrelativeTo

snipaya_undo

Undo

Undo the last change on the tab (yours or the user’s).

輸入參數tabId

snipaya_redo

Redo

Redo the last undone change on the tab.

輸入參數tabId

snipaya_tabs

Manage tabs

Open a new empty tab, switch to a tab, or close a tab (closing never discards unsaved work without asking the user).

輸入參數tabIdaction必填

snipaya_export

Export image

Export the canvas (or given ids) as PNG or JPG. With path, writes the file (absolute path, matching extension, refuses to overwrite unless overwrite is true); without path, returns the image.

輸入參數idspathtabIdformat必填beautifyoverwrite

snipaya_list_destinations

List export destinations

List the export destinations the user set up (share menu, open with an app, quick save folder, uploaders, Jira, Confluence) with their ids for snipaya_export_to.

無需輸入參數。

snipaya_export_to

Export to destination

Render the canvas (or given ids) as PNG and send it to a destination from snipaya_list_destinations. Uploads to network destinations always ask the user to confirm first. Returns the link or file path.

輸入參數idstabIdbeautifydestination必填

snipaya_save_project

Save project

Save the tab as a .snipaya project. Without path, saves to the tab’s existing file; a tab that was never saved needs an absolute path.

輸入參數pathtabIdoverwrite

版本歷史

3
  1. v1.2.2最新Oct 23, 2026
  2. v1.2.0Oct 23, 2026
  3. v1.1.2Oct 21, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分