Harie

io.github.hosshan由 GitHub 帳號 hosshan 發布v0.5.0更新於 Oct 30, 2026

Annotate screenshots for user guides. Saved as plain JPEG/PNG whose annotations stay editable.

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

概覽

AI 產生的概覽

本機 MCP 伺服器,用來為截圖加上可再編輯的註記,並以一般 JPEG/PNG 儲存,讓助理為使用指南繪製方框、編號與說明氣泡。

可以做什麼
  • 開啟 Harie 檔案並以 JSON 讀取註記,可選擇是否回傳影像
  • 從一般 JPEG/PNG 建立 Harie 檔案,並列出目錄中的 Harie 檔案
  • 新增、更新或刪除註記並重新算圖儲存,另有不會更動檔案的預覽
  • 以替換、填滿、馬賽克或模糊遮蓋影像中的個人資訊,僅在明確確認後儲存
  • 以新截圖替換底圖,同時保留註記並依比例縮放
適用情境
適合製作或維護 SaaS 使用指南截圖:在介面元素周圍畫框、加上編號與說明氣泡、修改說明文字,或在介面改版後更新指南。也適合日後仍需再編輯註記的影像編修工作。
執行需求
需要 Node.js 22 以上版本,透過 npx 從 npm 以 stdio 啟動。必須以 --root 指定根目錄(預設為目前目錄),伺服器只能存取該目錄下的檔案。未宣告需要帳號、API 金鑰或環境變數。
安裝前請注意
遮蓋個人資訊會改寫底圖,儲存後無法復原;可用 outPath 保留原始檔案。編輯會覆寫檔案,替換底圖時舊遮罩不會保留。伺服器可讀寫所設定根目錄下的任何檔案,且工具說明目前以日文為主。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

@harie/mcp

English | 日本語

A local MCP server (stdio) for reading and writing Harie files: screenshots saved as ordinary JPEG / PNG images whose annotations (boxes, arrows, callouts, text) stay editable after saving. It lets MCP clients such as Claude handle requests like "put a red box around the save button" or "fix the wording of this callout".

Harie is a tool for annotating screenshots in SaaS user guides. A Harie file opens in any image viewer as a normal picture, and Harie can reopen it to edit the annotations again and again.

The server never calls an LLM. The client's LLM looks at the image and decides what to annotate; the server only reads, writes and renders files.

Tools

ToolWhat it does
harie_openOpens a file and returns its annotations (as JSON, including callout text) and the image. A plain image returns status: plain
harie_createCreates a Harie file from a plain JPEG / PNG (default <name>.harie.<ext>; the original is kept). format (jpeg / png) picks the output format
harie_previewReturns the image with annotation changes (ops) applied. The file is not changed
harie_editApplies annotation changes, re-renders and overwrites the file. expectedRevision provides optimistic locking
harie_listLists Harie files in a directory
harie_maskHides personal information by burning it into the base image (irreversible). Saves only with confirm: true; without it, only the masked image is returned
harie_replace_baseReplaces the image with a new screenshot while keeping the annotations (for when the screen changed). If the size differs, annotations are scaled to fit. Masks from the old image are not carried over; their areas are returned as previousPii

harie_open, harie_edit and harie_replace_base accept image: false to skip the image and return only the JSON. Images take up much of the client's context, so use it when you only read or rewrite text.

The server can only access files under the directory given by --root (default: the current directory). harie_mask rewrites the base image, so the change cannot be undone once saved. To keep the original, save to another file with outPath.

Setup

Requires Node.js 22 or later. Launch @harie/mcp from npm with npx.

Claude Code

sh
claude mcp add harie -- npx -y @harie/mcp --root ~/Pictures/guides

Claude Desktop (claude_desktop_config.json)

json
{  "mcpServers": {    "harie": {      "command": "npx",      "args": ["-y", "@harie/mcp", "--root", "/Users/you/Pictures/guides"]    }  }}

Run from the repository (development)

sh
pnpm installpnpm build   # produces apps/mcp/dist/index.mjs and dist/fonts/claude mcp add harie -- node /path/to/harie/apps/mcp/dist/index.mjs --root ~/Pictures/guides

Guide prompt (harie_guide)

The server ships a prompt, harie_guide (arguments: path, optional intent), with the same rules the web editor's AI suggestions use: which UI elements to highlight (only what the explanation needs, at most 8, in the order of operation), how to write each callout (1–2 sentences saying what the reader does; never invent features or copy personal data), the layout rules (each step gets a box, a number badge and a callout whose arrow points at the box; badges always sit outside the top-left corner of their box and never cover UI elements; a badge with an anchor to its box is placed there automatically), and the steps with these tools (open → mask personal data → add box + number badge + anchored callout → preview → save). In Claude Code it appears as /mcp__harie__harie_guide. A short version of the same rules is also sent as the server's instructions, so clients that read them follow the rules even without the prompt.

Example prompts

  • "Turn settings.png into a Harie file, draw a red box around the save button, and add a callout saying 'Click here to save'."
  • "List the Harie files in guides/ and add a title to any that don't have one."

Tool descriptions are currently Japanese-first. Annotation text can be written in Japanese, English, Korean, Chinese (Simplified and Traditional) and other languages the bundled fonts cover.

Development

  • src/tools.ts: tool implementations. src/server.ts: MCP registration and input validation. src/paths.ts: prevents access outside the root.
  • Tests (pnpm test) connect a client through the SDK's InMemoryTransport and call the tools for real.
  • The package bundles the Regular / Bold weights of Noto Sans JP, plus subsets of Noto Sans KR (Hangul) and Noto Sans SC (characters missing from Noto Sans JP) that are loaded only when an annotation uses them (scripts/copy-assets.mjs; license in dist/fonts/OFL.txt).

License

MIT. The bundled fonts (Noto Sans JP / KR / SC, Regular / Bold) are licensed under the SIL Open Font License 1.1 (dist/fonts/OFL.txt).

來源:apps/mcp/README.md,提交 d53ba9e

工具

7

harie_open

Harie ファイルを開く

Harie ファイル(注釈を再編集できる JPEG/PNG)を開き、注釈の一覧と画像を返す。注釈の文言や位置は JSON で読めるので、画像が要らなければ image: false。普通の画像なら status: plain を返す

輸入參數path必填image

harie_create

画像から Harie ファイルを作る

普通の JPEG/PNG から注釈のない Harie ファイルを作る。元の画像はそのまま残し、既定では <名前>.harie.<拡張子> に保存する。以後の保存もこの形式になる

輸入參數titleformatoutPathimagePath必填

harie_edit

注釈を変更して保存する

注釈を追加・更新・削除し、画像を描き直して上書き保存する。保存後の画像を返す。先に harie_preview で確認するとよい

輸入參數ops必填path必填imageexpectedRevision

harie_preview

注釈の変更を保存せずに確認する

ops を適用した結果の画像を返す。ファイルは変更しない

輸入參數ops必填path必填

harie_mask

個人情報をマスクする(元に戻せない)

画像内の個人情報(氏名・メール・電話番号など)を、ベース画像を書き換えて隠す。保存すると元に戻せず、ファイルのどこにも元の情報は残らない。 まず confirm を付けずに呼ぶと、保存せずに加工後の画像を返す。範囲と方法を確かめてから、同じ masks に confirm: true を付けて保存する。 method: replace(ダミー文字列に置き換える。replacement に同じ種類のダミー値を渡す。例: 山田 花子 / [email protected])/ fill(塗りつぶし)/ mosaic / blur。文字は replace か fill を使う。 rect はベース画像のピクセル(左上原点)で、文字より少し広めに取る。注釈の blur とは別物で、個人情報にはこちらを使う。

輸入參數path必填masks必填confirmoutPathexpectedRevision

harie_replace_base

注釈を残して画像を差し替える

Harie ファイルの注釈を残したまま、画像だけを新しいスクリーンショットに差し替えて保存する(画面が変わったときのガイドの更新)。大きさが違えば注釈を比率で拡大縮小する。位置がずれた注釈は保存後の画像を見て harie_edit で直す

輸入參數path必填imageoutPathimagePath必填expectedRevision

harie_list

Harie ファイルを一覧する

ディレクトリ内の Harie ファイルを、タイトル・リビジョン・注釈数とともに一覧する

輸入參數dirrecursive

版本歷史

1
  1. v0.5.0最新Oct 30, 2026

評分

已滿足適用檢查項的 90%

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

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

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

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