blipr-mcp
Enables AI agents to send push alerts to your phone via Blipr, useful for notifying when tasks complete, builds break, or approvals are needed.
README
@applogico/blipr-mcp
An MCP server that lets AI agents send Blipr push alerts to your phone. Your agent finishes a long task, breaks a build, needs approval, or gets stuck — and it pages you. It can also ask you a question and block until you answer, for human-in-the-loop approval gates.
It's a thin stdio client: your MCP host (Claude Code, Cursor, …) launches it,
the agent calls a tool, and this process makes one outbound HTTPS POST to your
Blipr server. No inbound socket, nothing to host.
Claude Code ──stdio──► blipr-mcp ──POST /api/notify/<topic>──► blipr.dev ──APNs──► 📱
Setup
No install needed — npx fetches it on demand. Point it at a Blipr server
(blipr.dev or your own self-hosted instance) and a default topic.
Claude Code
claude mcp add blipr \
--env BLIPR_URL=https://blipr.dev \
--env BLIPR_TOPIC=agent-alerts \
-- npx -y @applogico/blipr-mcp
Cursor / Claude Desktop / any MCP host (JSON)
{
"mcpServers": {
"blipr": {
"command": "npx",
"args": ["-y", "@applogico/blipr-mcp"],
"env": {
"BLIPR_URL": "https://blipr.dev",
"BLIPR_TOPIC": "agent-alerts"
}
}
}
}
Then subscribe to the same topic (agent-alerts) in the Blipr iOS app, and
you'll get the agent's pushes on your phone.
Configuration
| Env var | Default | Description |
|---|---|---|
BLIPR_URL |
https://blipr.dev |
Base URL of your Blipr server (hosted or self-hosted). |
BLIPR_TOPIC |
(none) | Default topic used when a tool call omits one. |
Tools
send_alert
Send a push notification. Parameters:
message(required) — the alert body.title— short bold title.topic— overridesBLIPR_TOPIC.priority—1silent ·2low ·3default ·4time-sensitive (breaks Focus) ·5critical.tags— emoji shortcodes, e.g.["warning"].click— URL opened when the notification is tapped.
send_critical
A priority-5 page for things that genuinely can't wait. Bypasses silent/Focus when the Blipr app has Apple's Critical Alerts entitlement enabled; otherwise it's delivered as time-sensitive.
ask — human-in-the-loop yes/no (blocks)
Send a yes/no question to your phone and block until you tap an answer, then return it. This is an approval gate: the agent calls it before doing something consequential or irreversible and waits for your decision instead of guessing.
message(required) — the yes/no question.title— short bold title.topic— overridesBLIPR_TOPIC.priority— defaults to4(time-sensitive) since it needs an answer.tags— emoji shortcodes, e.g.["question"].timeout_seconds— how long to wait for your answer (default120).
Returns { responded, approved, value, message_id, topic }. Branch on
approved — it is true only when you tapped Yes, and false on No, a
timeout, or an error, so a refusal or non-answer can never be misread as a
go-ahead. On a timeout you get
{ responded: false, approved: false, reason: "timeout", message_id, topic }. If
it times out (or your MCP client cancels the call), you can still answer for
~30 min — pass the returned message_id to check_reply to resume.
Under the hood it publishes with reply: "binary", captures the message id
from the publish response, then long-polls
GET /api/notify/<topic>/<id>/reply?wait=… until you answer or the timeout
budget runs out.
request_ack — require acknowledgement (blocks)
Send a message that you must acknowledge, and block until you tap
"Acknowledge". Use it when the human has to see and confirm something before
the agent continues. Same parameters as ask; publishes with reply: "ack".
Returns { responded, message_id, topic } plus replied_at when acked, or
{ responded: false, reason: "timeout", … }. As with ask, on a timeout you can
resume later with check_reply and the returned message_id.
check_reply — resume / poll an earlier ask or request_ack
Look up whether you've replied to an earlier ask/request_ack — handy if the
blocking call timed out or your MCP client cancelled it. Pass the message_id
(and topic) it returned; non-blocking by default, or set wait_seconds to
briefly long-poll. Returns { responded, value?, replied_at? } (value is
"yes" / "no" / "ack"). Replies are kept ~30 minutes after the original
message was sent.
Example prompts
"Run the migration, and
send_alertme when it's done — priority 4 if it fails."
"If the nightly backup fails,
send_criticalme with the error — that one can't wait."
"Before you
DROPthe production table,askme to approve it — only proceed if I answer yes."
A concrete approval-gate flow:
Agent: about to delete the prod `events` table → calls
ask("Delete prod `events` table (12M rows)? This cannot be undone.")
… blocks; your phone buzzes …
You: tap "No"
Agent: ask returns { responded: true, approved: false, value: "no" } → aborts the deletion.
Develop
npm install
npm run build # → dist/index.js
npm test # vitest: unit (publish) + in-memory MCP integration
BLIPR_URL=https://blipr.dev BLIPR_TOPIC=demo node dist/index.js # stdio
License
MIT © Applogico LLC. This is the open client adapter; the Blipr server is distributed as a container image.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.