Harie

io.github.hosshanPublished by GitHub account hosshanv0.5.0Updated Oct 30, 2026

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

VerifiedSTDIODesktop onlyFiles & StorageMedia & Design

Overview

AI-generated overview

Local MCP server for annotating screenshots into editable Harie files saved as ordinary JPEG/PNG, so an assistant can add boxes, numbers and callouts for user…

What you can do
  • Open Harie files and read annotations as JSON, with or without the image
  • Create Harie files from plain JPEG/PNG and list Harie files in a directory
  • Add, update or delete annotations and save the re-rendered image, with a preview that changes nothing
  • Mask personal information in the image by replace, fill, mosaic or blur, saving only on explicit confirmation
  • Swap the base image for a new screenshot while keeping and rescaling annotations
When to use it
Useful when producing or maintaining SaaS user-guide screenshots: drawing boxes, numbered badges and callouts around UI elements, fixing callout wording, or refreshing guides after the interface changes. It suits image-editing work where annotations must stay editable later.
Requirements
Node.js 22 or later, launched from npm with npx over stdio. A root directory must be passed with --root (defaults to the current directory); the server can only access files under it. No accounts, API keys or environment variables are declared.
Before you install
Masking personal information rewrites the base image and cannot be undone once saved; use outPath to keep the original. Edits overwrite files, and replacing the base image does not carry over old masks. The server can read and write any file under the configured root, and tool descriptions are currently Japanese-first.

Installation

In SourceWeft

  1. Open Harie in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

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).

Source: apps/mcp/README.md at commit d53ba9e

Tools

7

harie_open

Harie ファイルを開く

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

Parameterspathrequiredimage

harie_create

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

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

ParameterstitleformatoutPathimagePathrequired

harie_edit

注釈を変更して保存する

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

ParametersopsrequiredpathrequiredimageexpectedRevision

harie_preview

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

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

Parametersopsrequiredpathrequired

harie_mask

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

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

ParameterspathrequiredmasksrequiredconfirmoutPathexpectedRevision

harie_replace_base

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

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

ParameterspathrequiredimageoutPathimagePathrequiredexpectedRevision

harie_list

Harie ファイルを一覧する

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

Parametersdirrecursive

Version history

1
  1. v0.5.0LatestOct 30, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts