MCP.Market

Pir MCP server

by Solteris-Dev·io.github.Solteris-Dev/pir-mcp·v0.1.0·2 stars

Motion sensor for AI agents: tells when a screen region changes or goes still. Scores, never pixels.

A92/100grade A
What users say
No reviews yet
Be the first
Safety scan
A92/100

full report

Adoption
Growing

2 stars37 downloads/wk

Reviews

Write one

Nobody 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 posts

Read from the package source without running it. The installed server may list more.

  • pir_define_region

    Name a rectangle of the screen to watch. Coordinates are in the global layout the capture tool uses

  • pir_define_window

    Watch a window rather than a fixed rectangle: geometry is looked up from the window id before

  • pir_list_regions

    The regions currently defined, with their geometry and masks.

  • pir_pick_mask

    Ask the person to draw a rectangle inside an existing region that should be ignored (a clock, a

  • pir_pick_region

    Ask the person at the screen to draw the rectangle to watch (a selector such as slurp appears;

  • pir_pick_window

    Ask the person at the screen to click the window to watch (visible windows are offered as boxes;

  • pir_remove_regionwrite action

    Forget a region.

  • pir_sample

    Capture the region once and score it against the previous sample of the same region (null on the

  • pir_wait_for_change

    Block until the region looks different from how it looked when this call started, or until

  • pir_wait_for_stillness

    Block 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

no findings
  • 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
Overall 92/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

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
Add to Cursor

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.