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.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。