Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Rust MCP server and CLI for Apprise notification fan-out across dozens of delivery backends.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
APPRISE_URL, APPRISE_TOKEN, APPRISE_RMCP_VERSION, APPRISE_RMCP_REPO, APPRISE_RMCP_RELEASE_BASE_URL, RUST_LOGค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"apprise-rmcp": {
"command": "npx",
"args": [
"-y",
"apprise-rmcp",
"mcp"
],
"env": {
"APPRISE_URL": "ใส่ค่าของคุณ",
"APPRISE_TOKEN": "ใส่ค่าของคุณ",
"APPRISE_RMCP_VERSION": "ใส่ค่าของคุณ",
"APPRISE_RMCP_REPO": "ใส่ค่าของคุณ",
"APPRISE_RMCP_RELEASE_BASE_URL": "ใส่ค่าของคุณ",
"RUST_LOG": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add apprise-rmcp --env APPRISE_URL='ใส่ค่าของคุณ' --env APPRISE_TOKEN='ใส่ค่าของคุณ' --env APPRISE_RMCP_VERSION='ใส่ค่าของคุณ' --env APPRISE_RMCP_REPO='ใส่ค่าของคุณ' --env APPRISE_RMCP_RELEASE_BASE_URL='ใส่ค่าของคุณ' --env RUST_LOG='ใส่ค่าของคุณ' -- npx -y apprise-rmcp mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"apprise-rmcp": {
"command": "npx",
"args": [
"-y",
"apprise-rmcp",
"mcp"
],
"env": {
"APPRISE_URL": "ใส่ค่าของคุณ",
"APPRISE_TOKEN": "ใส่ค่าของคุณ",
"APPRISE_RMCP_VERSION": "ใส่ค่าของคุณ",
"APPRISE_RMCP_REPO": "ใส่ค่าของคุณ",
"APPRISE_RMCP_RELEASE_BASE_URL": "ใส่ค่าของคุณ",
"RUST_LOG": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"apprise-rmcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"apprise-rmcp",
"mcp"
],
"env": {
"APPRISE_URL": "ใส่ค่าของคุณ",
"APPRISE_TOKEN": "ใส่ค่าของคุณ",
"APPRISE_RMCP_VERSION": "ใส่ค่าของคุณ",
"APPRISE_RMCP_REPO": "ใส่ค่าของคุณ",
"APPRISE_RMCP_RELEASE_BASE_URL": "ใส่ค่าของคุณ",
"RUST_LOG": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
APPRISE_URL envAPPRISE_RMCP_VERSION envAPPRISE_RMCP_REPO envAPPRISE_RMCP_RELEASE_BASE_URL envRUST_LOG envค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ผู้ลงทะเบียน (dinglebear.ai) ไม่ใช่เจ้าของ repo (jmagar) อาจเป็นคนอื่นที่นำมาลงต่อ
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 0 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: APPRISE_TOKEN
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.3) เข้า registry 4 เดือนที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Node.js ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Python MCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Local-only Python MCP server for the Files.com API.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Apprise notifications over MCP and CLI with authenticated stdio and HTTP transports.
It exposes one MCP tool, apprise, plus the rapprise CLI. Agents can send tagged notifications through a preconfigured Apprise server, run one-off Apprise URL sends, and check upstream health through stdio MCP, Streamable HTTP MCP, or direct shell commands.
30-second path: run npx -y @dinglebear/rapprise health --json -> start loopback HTTP with APPRISE_MCP_HOST=127.0.0.1 npx -y @dinglebear/rapprise serve -> call tools/call with {"action":"health"}.
Status: operational RMCP upstream-client server. Write-capable; notification sends are intentional side effects. HTTP MCP supports loopback dev mode, static bearer tokens, and Google OAuth through lab-auth.
Not for: replacing Apprise API, storing notification destinations in this repo, scheduling reminders, building a generic webhook relay, multi-tenant isolation, or passing upstream Apprise bearer tokens through MCP tool arguments.
| Surface | This repo |
|---|---|
| Repository | apprise-rmcp |
| Rust crate | apprise-mcp |
| Binary / CLI | rapprise |
| npm package | @dinglebear/rapprise |
| npm binary aliases | apprise-rmcp, rapprise |
| MCP tool | apprise |
| Config home | ~/.apprise on hosts, /data in containers |
| Env prefixes | APPRISE_*, APPRISE_MCP_*, APPRISE_RMCP_* for npm launcher controls |
The repo and npm package use the RMCP family name, while the shipped binary uses the short Rust CLI name rapprise.
notify_url.send_alert prompt for critical alert workflows.| This repo owns | Apprise owns | Explicitly out of scope |
|---|---|---|
| MCP/CLI projection, request validation, auth policy, response shaping, setup checks, and transport wiring. | Notification delivery, configured destinations, tags, delivery backend credentials, upstream API semantics. | Destination storage, scheduling, retry policy beyond upstream behavior, multi-tenant sandboxing, arbitrary webhook relay behavior. |
| Path | Command | Best for | Notes |
|---|---|---|---|
| npm / npx | npx -y @dinglebear/rapprise --help | Linux/Windows x86_64 clients. | Verifies the release archive SHA-256 before atomic install. |
| Release installer | Verified installer procedure | Linux x86_64 without Node. | Verifies checksum and offline provenance before executing installer code. |
| Docker / Compose | docker compose up -d | Shared HTTP MCP deployments. | Reads .env and exposes container port 40050. Needs the external network first — see Deployment. |
| Build from source | cargo build --release | Development and audits. | Produces target/release/rapprise. |
| Plugin | just build-plugin && claude plugin install ./plugins/apprise | Claude Code from this checkout. | Bundled rapprise stdio plugin. Ships no hooks. |
Releases publish SHA-256 files and offline GitHub build-provenance bundles. The installers verify both the checksum and provenance identity with GitHub CLI 2.68+. The npm launcher supports x86_64 Linux and Windows release assets.
Run the stdio MCP server or CLI without a manual binary install:
npx -y @dinglebear/rapprise --help
npx -y @dinglebear/rapprise mcp npx -y @dinglebear/rapprise health --json
The npm package downloads rapprise during postinstall. Override download behavior only when testing packaging:
| Variable | Purpose |
|---|---|
APPRISE_RMCP_SKIP_DOWNLOAD=1 | Skip postinstall binary download. |
APPRISE_RMCP_VERSION or APPRISE_RMCP_BINARY_VERSION | Select the GitHub Release tag. |
APPRISE_RMCP_REPO | Select the GitHub repo used for release downloads. |
APPRISE_RMCP_RELEASE_BASE_URL | Select a custom release base URL. |
Verified binary installation is fail-closed and pins the repository, release workflow, and source tag. Install gh 2.68 or newer before using npm or the release installer.
Download the installer and its verification material without executing it, then verify both integrity and provenance before running it:
Replace version with the release tag you want; v0.2.0 is current.
version=v0.2.0
base="https://github.com/dinglebear-ai/rapprise/releases/download/${version}/rapprise-installer.sh" curl -fsSLO "$base" curl -fsSLO "$base.sha256" curl -fsSLO "$base.sigstore.json" sha256sum --check rapprise-installer.sh.sha256 gh attestation verify rapprise-installer.sh \ --repo dinglebear-ai/rapprise \ --bundle rapprise-installer.sh.sigstore.json \ --signer-workflow dinglebear-ai/rapprise/.github/workflows/release.yml \ --source-ref "refs/tags/${version}" \ --deny-self-hosted-runners APPRISE_RMCP_VERSION="$version" bash rapprise-installer.sh
The --repo and --signer-workflow values must match the identity recorded in the attestation at build time. Releases cut before the repository moved to the dinglebear-ai org are attested as jmagar/rapprise; use dinglebear-ai/rapprise for releases cut afterwards.
The npm launcher supports Windows x86_64 only when GitHub CLI 2.68+ is installed and gh.exe is available on PATH; provenance verification is not skipped.
git clone https://github.com/dinglebear-ai/rapprise
cd rapprise cargo build --release ./target/release/rapprise --help
Minimum supported Rust version: 1.90. Rust edition 2021. The Cargo workspace has two members: the root apprise-mcp package and xtask.
The default upstream is http://localhost:8000.
docker run --rm -p 8000:8000 caronc/apprise:latest
Use APPRISE_URL when the API server is elsewhere:
export APPRISE_URL=http://198.51.100.2:8766
Set APPRISE_TOKEN only when your Apprise API server requires bearer auth:
export APPRISE_TOKEN=...
npx -y @dinglebear/rapprise health --json
APPRISE_MCP_HOST=127.0.0.1 npx -y @dinglebear/rapprise serve
In another shell:
curl -sf http://127.0.0.1:40050/health
curl -s -X POST http://127.0.0.1:40050/mcp \
-H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"apprise","arguments":{"action":"health"}}}'
{
"mcpServers": { "apprise": { "command": "npx", "args": ["-y", "apprise-rmcp", "mcp"], "env": { "APPRISE_URL": "http://localhost:8000" } } } }
{
"mcpServers": { "apprise": { "type": "http", "url": "http://127.0.0.1:40050/mcp", "headers": { "Authorization": "Bearer ${APPRISE_MCP_TOKEN}" } } } }
Register Apprise through Labby as an HTTP upstream when sharing one long-running server, or run it directly as stdio for local-only use.
[mcp_servers.apprise]
command = "npx" args = ["-y", "apprise-rmcp", "mcp"]
{
"command": "rapprise", "args": ["mcp"], "env": { "APPRISE_URL": "http://localhost:8000" } }
Do not put APPRISE_TOKEN, OAuth secrets, SSH keys, passwords, or upstream bearer tokens in MCP tool arguments. Use env, config files, or the MCP client's secret storage.
| Surface | Status | Entry point | Purpose |
|---|---|---|---|
| MCP stdio | Supported | rapprise mcp, npx -y @dinglebear/rapprise mcp | Local child-process MCP clients. |
| MCP HTTP | Supported | rapprise serve, POST /mcp | Streamable HTTP MCP for local or shared server deployments. |
| Liveness | Supported | GET /health | Always unauthenticated. |
| Readiness / status | Supported | GET /ready, GET /status | Behind the same auth layer as /mcp. |
| OAuth discovery | Conditional | /mcp/.well-known/* and lab-auth routes | Mounted only when auth_mode = oauth. |
| CLI | Supported | rapprise | Scriptable parity and debugging. |
| Prompt | Supported | send_alert | Reusable critical-alert workflow. |
| REST API | Not shipped | N/A | Apprise API already owns the REST API. |
| Web UI | Not shipped | N/A | Apprise API already owns the web UI. |
One MCP tool is exposed: apprise. Pass the required action argument to select the operation.
| Action | Description | Required params | Optional params |
|---|---|---|---|
health | Check Apprise API server health. | none | none |
status | Return authenticated deployment and runtime status. | none | none |
help | Return built-in markdown tool help. | none | none |
| Action | Description | Required params | Optional params |
|---|---|---|---|
notify | Send to a configured Apprise tag, or all configured services when tag is omitted. | body | tag, title, type |
notify_url | Send a stateless one-off notification to one or more Apprise URL schemas. | urls, body | title, type |
| Type | Meaning |
|---|---|
info | Informational notification. |
success | Successful operation. |
warning | Non-critical warning. |
failure | Critical failure or error. |
curl -s -X POST http://127.0.0.1:40050/mcp \
-H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"apprise","arguments":{"action":"health"}}}'
{
"name": "apprise", "arguments": { "action": "notify", "body": "Deployment succeeded", "tag": "ops", "title": "Deploy complete", "type": "success" } }
Curated action summaries live here. docs/INVENTORY.md is the current source of truth for complete parameters until a generated docs/MCP_SCHEMA.md is added.
The CLI calls the same service methods as the MCP tool.
rapprise health [--json]
rapprise notify [--tag TAG] [--title T] [--type info|success|warning|failure] [--json] rapprise notify-url [--title T] [--type info|success|warning|failure] [--json]
rapprise serve # Streamable HTTP MCP on :40050 rapprise serve mcp # same as serve rapprise mcp # stdio MCP rapprise doctor [--json] # pre-flight environment validation rapprise setup check # read-only audit of appdata/env rapprise setup repair # idempotent: create missing setup files rapprise setup install # copy this binary into ~/.local/bin rapprise setup plugin-hook [--no-repair]
rapprise help # or --help / -h ra
ตัดมาแค่ช่วงต้น อ่านต่อใน repo