Pir MCP server
io.github.Solteris-Dev/pir-mcp·v0.1.0·2 starsMotion sensor for AI agents: tells when a screen region changes or goes still. Scores, never pixels.
2 stars37 downloads/wk
Reviews
Write oneNobody has reviewed Pir yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Pir tools (10, 1 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
pir_define_regionName a rectangle of the screen to watch. Coordinates are in the global layout the capture tool uses
pir_define_windowWatch a window rather than a fixed rectangle: geometry is looked up from the window id before
pir_list_regionsThe regions currently defined, with their geometry and masks.
pir_pick_maskAsk the person to draw a rectangle inside an existing region that should be ignored (a clock, a
pir_pick_regionAsk the person at the screen to draw the rectangle to watch (a selector such as slurp appears;
pir_pick_windowAsk the person at the screen to click the window to watch (visible windows are offered as boxes;
pir_remove_regionwrite actionForget a region.
pir_sampleCapture the region once and score it against the previous sample of the same region (null on the
pir_wait_for_changeBlock until the region looks different from how it looked when this call started, or until
pir_wait_for_stillnessBlock until consecutive samples have stayed below threshold for still_for_ms, or until timeout_ms.
Public scan report
scanner v0.1.10 · 2026-10-03 · same rubric, same numbers if you re-run it
- Code scan11 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 12 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How Pir compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 92/100
- higher than 95% of 48,255 servers
- Tools
- 10
- the typical server has 7
- Tools that change things
- 10%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 2
- more than 75% of 28,688 servers
- Downloads a week
- 37
- more than 28% of 12,191 servers with a package
What its tools let an agent do: 9 read · 1 change
Install Pir in Claude Code, Cursor or VS Code
Runs npx -y pir-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add pir-mcp -- npx -y pir-mcp
What the publisher says
From the Pir repository's README, as published. We do not edit it. Read it on GitHub
pir-mcp
A motion sensor for AI agents.
"Gives your LLM agents enough info to be a helpful "watcher" without being a privacy nightmare like Windows Recall" -Solteris-Dev
A PIR sensor tells you that something moved, never what. This is the same idea for a screen: an MCP server that watches named rectangles and answers "did this change?" and "has this gone still?" with a number, a size and a timestamp. No tool in it returns pixels, image files, or anything that could be turned back into a picture.
It exists because an agent driving a desktop keeps needing the same two things: wake me when the build output moves and tell me if this status bar has stopped ticking. Both are motion questions. Neither needs a screenshot.
What it does
the way a regional screenshot works (slurp, slop). The human chooses what is sensed; the agent gets the geometry. Use this whenever someone is there.
- pirpickregion ask the person at the screen to draw the rectangle,
(a clock, a spinner, a caret).
- pirpickmask the same gesture for a patch inside a region to ignore
layout coordinates, with optional masks.
- pirdefineregion the scriptable path: name a rectangle by global
fixed rectangle. Its geometry is looked up again before every capture, so the region follows the window when it moves; a resize counts as maximal change. The pick offers your visible windows as boxes to click.
- pirpickwindow / pirdefinewindow watch a window instead of a
region. Cheap; also the way to check the capture command works.
- pirsample** capture once, score against the previous sample of that
when the call began, or time out. A doorbell.
- pirwaitforchange** block until the region departs from how it looked
stillforms, or time out. A short window means "the animation settled, safe to act". A long window on something that should keep changing means it is frozen, and still=true is the alarm.
- pirwaitforstillness** block until nothing has changed for
- pirlistregions, pirremoveregion housekeeping.
Every comparison reports two numbers over a coarse grid of averaged colour cells (at most 64 across, each at least 4 px), both 0 for identical and 1 for black against white:
edge or an antialiased caret scores about 0.02; a dialog opening 0.1 or more. This is the default metric, threshold 0.05.
- rmse over the whole grid: did the region as a whole move? A cursor
digit flipping inside a 1920-wide status bar scores rmse 0.018 (invisible to the default) but peak 0.145. Use metric=peak for a small thing that should tick inside a larger region.
- peak the single most-changed cell: did anything in it move? A clock
Averaging is what makes this a sensor rather than a camera: 64 cells cannot be read.
What it deliberately does not do
If an agent needs to see, use the screenshot tool your environment already has, so that choice stays explicit and yours.
- It never returns image data. There is no snapshot tool and none is planned.
milliseconds it takes to reduce it to a grid, and only the grid of the last sample is kept per region.
- It never writes frames to disk. A capture lives in memory for the
visible in the transcript, and pirpickregion carries a purpose line the agent has to write down before you draw.
- It does not capture on its own. Every sample is a tool call the agent made,
What it does reveal, so you can decide whether that is acceptable: that a given rectangle changed, at a given time, by a given magnitude. On a region covering a chat window that is presence information. Choose regions accordingly; the server has no opinion.
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Pir: common questions
- Is Pir MCP server safe?
- Yes, by our scan: it is graded A (92/100). Read the Pir safety report
- How do I install Pir?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Pir need an API key?
- No secret keys are declared. It reads 5 settings from the environment.
- Is Pir maintained?
- The last commit was 44 days ago (2026-09-21). The latest release is v0.1.0.
- How does Pir compare with other MCP servers?
- safety score 92/100 (higher than 95% of 48,255 servers); tools 10 (the typical server has 7); tools that change things 10% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.