{
  "markdown": "# gotify-rmcp\n\nGotify notifications and app, client, and message management over MCP and CLI.\n\nIt exposes one MCP tool, `gotify`, plus the `rgotify` CLI. Agents can send\nnotifications, inspect server health, list messages, and manage Gotify apps and\nclients through stdio MCP, Streamable HTTP MCP, or direct shell commands.\n\n**30-second path:** set `GOTIFY_URL`, then run `npx -y @dinglebear/rgotify health --json`\n-> start loopback HTTP with `GOTIFY_MCP_HOST=127.0.0.1 npx -y @dinglebear/rgotify serve`\n-> call `tools/call` with `{\"action\":\"health\"}`.\n\n**Status:** operational RMCP upstream-client server. Write-capable; destructive\ndelete actions are gated by explicit confirmation. HTTP MCP supports loopback\ndev mode, static bearer tokens, and Google OAuth through `lab-auth`.\n\n**Not for:** replacing Gotify, storing notifications independently, generic\nwebhook routing, scheduling reminders, multi-tenant isolation, or passing Gotify\ntokens through MCP tool arguments.\n\n## Contents\n\n- [Naming](#naming)\n- [Capabilities And Boundaries](#capabilities-and-boundaries)\n- [Install](#install)\n- [Quickstart](#quickstart)\n- [Client Configuration](#client-configuration)\n- [Runtime Surfaces](#runtime-surfaces)\n- [MCP Tool Reference](#mcp-tool-reference)\n- [CLI Reference](#cli-reference)\n- [Configuration](#configuration)\n- [Authentication](#authentication)\n- [Safety And Trust Model](#safety-and-trust-model)\n- [Architecture](#architecture)\n- [Distribution Contract](#distribution-contract)\n- [Development](#development)\n- [Verification](#verification)\n- [Deployment](#deployment)\n- [Troubleshooting](#troubleshooting)\n- [Related Servers](#related-servers)\n- [Documentation](#documentation)\n- [License](#license)\n\n## Naming\n\n| Surface | This repo |\n|---|---|\n| Repository | `dinglebear-ai/rgotify` |\n| Rust crate (Cargo package) | `gotify-mcp` |\n| Binary / CLI | `rgotify` |\n| npm package | `@dinglebear/rgotify` |\n| npm binary aliases | `gotify-rmcp`, `rgotify` |\n| MCP tool | `gotify` |\n| MCP registry name | `ai.dinglebear/rgotify` |\n| Config home | `~/.gotify` on hosts, `/data` in containers |\n| Env prefixes | `GOTIFY_*`, `GOTIFY_MCP_*`, `GOTIFY_RMCP_*` for npm launcher controls |\n\nThese names intentionally differ. The npm package and registry entry use the\nRMCP family name, the Cargo package is `gotify-mcp`, the git repo is `rgotify`,\nand the shipped binary uses the short Rust CLI name `rgotify`.\n\n## Capabilities And Boundaries\n\n- Send Gotify push notifications with message, title, priority, and extras.\n- Read server health, runtime status, server version, current user, messages,\n  applications, and clients.\n- Create or update applications and create clients.\n- Delete messages, all messages, applications, or clients only after explicit\n  destructive confirmation.\n- Expose MCP prompts for common workflows and a resource containing the current\n  tool schema.\n\n| This repo owns | Gotify owns | Explicitly out of scope |\n|---|---|---|\n| MCP/CLI projection, request validation, auth policy, response shaping, setup checks, destructive gates. | Notification storage, delivery, Gotify users, token issuance, app/client state, upstream API semantics. | Notification scheduling, independent persistence, arbitrary webhook relay behavior, multi-tenant sandboxing, credential brokerage. |\n\n## Install\n\n| Path | Command | Best for | Notes |\n|---|---|---|---|\n| npm / npx | `npx -y @dinglebear/rgotify --help` | Local MCP clients and quick trials. | Downloads the matching `rgotify` binary from GitHub Releases. |\n| Release installer | `curl -fsSL https://raw.githubusercontent.com/dinglebear-ai/rgotify/main/scripts/install.sh \\| bash` | Host installs without Node. | Installs `rgotify` for the current Linux host. |\n| Docker / Compose | `docker compose up -d` | Shared HTTP MCP deployments. | Reads `.env` and exposes container port `40020`. |\n| Build from source | `cargo build --release` | Development and audits. | Produces `target/release/rgotify`. |\n| Plugin | `claude plugin install plugins/gotify` | Claude Code local plugin setup from this checkout. | Ships no hooks — run `rgotify setup repair` once by hand afterwards. |\n\n### npm / npx\n\nRun the stdio MCP server or CLI without a manual binary install:\n\n```bash\nnpx -y @dinglebear/rgotify --help\nnpx -y @dinglebear/rgotify mcp\nnpx -y @dinglebear/rgotify health --json\n```\n\nThe npm package downloads `rgotify` during `postinstall`. Override download\nbehavior only when testing packaging:\n\n| Variable | Purpose |\n|---|---|\n| `GOTIFY_RMCP_SKIP_DOWNLOAD=1` | Skip postinstall binary download. |\n| `GOTIFY_RMCP_VERSION` or `GOTIFY_RMCP_BINARY_VERSION` | Select the GitHub Release tag. |\n| `GOTIFY_RMCP_REPO` | Select the GitHub repo used for release downloads. |\n| `GOTIFY_RMCP_RELEASE_BASE_URL` | Select a custom release base URL. |\n\n### Build From Source\n\n```bash\ngit clone https://github.com/dinglebear-ai/rgotify\ncd rgotify\ncargo build --release\n./target/release/rgotify --help\n```\n\nMinimum supported Rust version: 1.86.\n\n## Quickstart\n\n### 1. Configure Gotify\n\nFor the safest first call, only `GOTIFY_URL` is required:\n\n```bash\nexport GOTIFY_URL=https://gotify.example.com\n```\n\nCreate tokens in the Gotify web UI before using management or send actions:\n\n```bash\nexport GOTIFY_CLIENT_TOKEN=Cxxxxxxxxxxxxxxxx\nexport GOTIFY_APP_TOKEN=Axxxxxxxxxxxxxxxx\n```\n\nToken roles:\n\n| Token | Env var | Used for |\n|---|---|---|\n| Client token | `GOTIFY_CLIENT_TOKEN` | Read and management actions such as messages, apps, clients, and current user. |\n| App token | `GOTIFY_APP_TOKEN` | Sending notifications with `send`. |\n\n### 2. Run A Safe CLI Call\n\n```bash\nnpx -y @dinglebear/rgotify health --json\n```\n\n### 3. Start Loopback HTTP MCP\n\n```bash\nGOTIFY_MCP_HOST=127.0.0.1 npx -y @dinglebear/rgotify serve\n```\n\nIn another shell:\n\n```bash\ncurl -sf http://127.0.0.1:40020/health\n```\n\n### 4. Make A First MCP Call\n\n```bash\ncurl -s -X POST http://127.0.0.1:40020/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Accept: application/json, text/event-stream\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gotify\",\"arguments\":{\"action\":\"health\"}}}'\n```\n\n## Client Configuration\n\n### Claude Code Stdio\n\n```json\n{\n  \"mcpServers\": {\n    \"gotify\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"gotify-rmcp\", \"mcp\"],\n      \"env\": {\n        \"GOTIFY_URL\": \"https://gotify.example.com\",\n        \"GOTIFY_CLIENT_TOKEN\": \"Cxxxxxxxxxxxxxxxx\",\n        \"GOTIFY_APP_TOKEN\": \"Axxxxxxxxxxxxxxxx\"\n      }\n    }\n  }\n}\n```\n\n### Claude Code HTTP\n\n```json\n{\n  \"mcpServers\": {\n    \"gotify\": {\n      \"type\": \"http\",\n      \"url\": \"http://127.0.0.1:40020/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer ${GOTIFY_MCP_TOKEN}\"\n      }\n    }\n  }\n}\n```\n\n### Codex / Labby Gateway\n\nRegister Gotify through Labby as an HTTP upstream when sharing one long-running\nserver, or run it directly as stdio for local-only use.\n\n```toml\n[mcp_servers.gotify]\ncommand = \"npx\"\nargs = [\"-y\", \"gotify-rmcp\", \"mcp\"]\n```\n\n### Generic MCP JSON\n\n```json\n{\n  \"command\": \"rgotify\",\n  \"args\": [\"mcp\"],\n  \"env\": {\n    \"GOTIFY_URL\": \"https://gotify.example.com\"\n  }\n}\n```\n\nDo not put API keys, passwords, OAuth secrets, SSH keys, Gotify client tokens,\nGotify app tokens, or upstream bearer tokens in MCP tool arguments. Use env,\nconfig files, or the MCP client's secret storage.\n\n## Runtime Surfaces\n\n| Surface | Status | Entry point | Purpose |\n|---|---:|---|---|\n| MCP stdio | Supported | `rgotify mcp`, `npx -y @dinglebear/rgotify mcp` | Local child-process MCP clients. |\n| MCP HTTP | Supported | `rgotify serve`, `POST /mcp` | Streamable HTTP MCP for local or shared server deployments. |\n| CLI | Supported | `rgotify <command>` | Scriptable parity and debugging. |\n| Prompts | Supported | `send_notification`, `check_status` | Reusable agent prompts. |\n| Resource | Supported | `gotify://schema/mcp-tool` | JSON schema for the `gotify` tool. |\n| REST API | Not shipped | N/A | Gotify already owns the REST API. |\n| Web UI | Not shipped | N/A | Gotify already owns the web UI. |\n\n## MCP Tool Reference\n\nOne MCP tool is exposed: `gotify`. Pass the required `action` argument to select\nthe operation.\n\n### Read Actions\n\n| Action | Description | Required params | Optional params |\n|---|---|---|---|\n| `health` | Gotify server health check. | none | none |\n| `version` | Gotify server version. | none | none |\n| `me` | Current authenticated user. | none | none |\n| `messages` | List messages. | none | `app_id`, `limit`, `since` |\n| `applications` | List applications. | none | none |\n| `clients` | List clients. | none | none |\n| `status` | Return runtime status, config snapshot, and counters. | none | none |\n\n### Write Actions\n\n| Action | Description | Required params | Optional params |\n|---|---|---|---|\n| `send` | Send a push notification. | `message` | `title`, `priority`, `extras` |\n| `create_application` | Create an application. | `name` | `description`, `default_priority` |\n| `update_application` | Update an application. | `app_id` | `name`, `description`, `default_priority` |\n| `create_client` | Create a client. | `name` | none |\n\n### Destructive Actions\n\nDestructive actions require `confirm=true` in MCP arguments, `--confirm` on the\nCLI, or `GOTIFY_ALLOW_DESTRUCTIVE=true` in the process environment.\n\n| Action | Description | Required params |\n|---|---|---|\n| `delete_message` | Delete one message. | `id`, `confirm` |\n| `delete_all_messages` | Delete all messages. | `confirm` |\n| `delete_application` | Delete an application and its messages. | `app_id`, `confirm` |\n| `delete_client` | Delete a client. | `client_id`, `confirm` |\n\n### Meta, Prompts, And Resource\n\n| Primitive | Name / URI | Purpose |\n|---|---|---|\n| Tool action | `help` | Return built-in markdown tool help. |\n| Prompt | `send_notification` | Guide an agent through a notification send. |\n| Prompt | `check_status` | Check health and recent messages. |\n| Resource | `gotify://schema/mcp-tool` | Return the current action-based JSON schema. |\n\nCurated action summaries live here. The current branch source code and\n`docs/INVENTORY.md` are the source of truth for complete parameters until a\ngenerated `docs/MCP_SCHEMA.md` is added.\n\n## CLI Reference\n\nThe CLI calls the same service methods as the MCP tool.\n\n```bash\nrgotify health [--json]\nrgotify version [--json]\nrgotify me [--json]\nrgotify messages [--app-id N] [--limit N] [--since N] [--json]\nrgotify applications [--json]\nrgotify clients [--json]\n\nrgotify send <message> [--title T] [--priority N] [--json]\nrgotify create app <name> [--description D] [--priority N] [--json]\nrgotify update app <app_id> [--name N] [--description D] [--priority N] [--json]\nrgotify create client <name> [--json]\n\nrgotify delete message <id> [--confirm] [--json]\nrgotify delete all [--confirm] [--json]\nrgotify delete app <app_id> [--confirm] [--json]\nrgotify delete client <client_id> [--confirm] [--json]\n\nrgotify serve\nrgotify serve mcp\nrgotify mcp\nrgotify doctor [--json]\nrgotify setup check [--json]\nrgotify setup repair [--json]\nrgotify setup install [--json]\nrgotify setup plugin-hook [--no-repair] [--json]\n```\n\nHyphenated aliases are accepted for the two-word forms: `create-app`,\n`update-app`, `create-client`, `delete-message`, `delete-all`, `delete-app`,\n`delete-client`.\n\nKnown parity exception: MCP `action=status` is MCP-only observability. The CLI\nequivalent for operator checks is `rgotify doctor --json`.\n\n## Configuration\n\nConfiguration loads from `config.toml` when present, then environment variables\noverride those values. On startup, the binary also loads `~/.gotify/.env` on\nhosts or `/data/.env` in containers without overriding already-set variables.\n\n### Required Upstream Variables\n\n| Variable | Required | Description |\n|---|---:|---|\n| `GOTIFY_URL` | yes | Gotify server base URL, for example `https://gotify.example.com`. |\n| `GOTIFY_CLIENT_TOKEN` | for management | Gotify client token for read and management actions. |\n| `GOTIFY_APP_TOKEN` | for `send` | Gotify app token used only to send notifications. |\n\n### Runtime Variables\n\n| Variable | Default | Description |\n|---|---|---|\n| `GOTIFY_ALLOW_DESTRUCTIVE` | `false` | Skip destructive confirmation gates. |\n| `GOTIFY_MCP_HOST` | `0.0.0.0` | HTTP MCP bind host. |\n| `GOTIFY_MCP_PORT` | `40020` | HTTP MCP bind port. |\n| `GOTIFY_MCP_TOKEN` | empty | Static bearer token for HTTP MCP when not in loopback dev mode. |\n| `GOTIFY_MCP_NO_AUTH` | `false` | Disable HTTP MCP auth. Use only on loopback or behind a trusted gateway. |\n| `GOTIFY_MCP_AUTH_MODE` | `bearer` | Set to `oauth` for Google OAuth through `lab-auth`. |\n| `GOTIFY_MCP_PUBLIC_URL` | empty | Public URL for OAuth metadata and protected-resource discovery. |\n| `GOTIFY_MCP_GOOGLE_CLIENT_ID` | empty | Google OAuth client ID. |\n| `GOTIFY_MCP_GOOGLE_CLIENT_SECRET` | empty | Google OAuth client secret. |\n| `GOTIFY_MCP_AUTH_ADMIN_EMAIL` | empty | Initial/admin OAuth email. |\n| `GOTIFY_MCP_AUTH_SQLITE_PATH` | `<data>/auth.db` | OAuth state database path. |\n| `GOTIFY_MCP_AUTH_KEY_PATH` | `<data>/auth-jwt.pem` | OAuth JWT signing key path. |\n| `GOTIFY_MCP_ALLOWED_HOSTS` | empty | Comma-separated `Host` header allowlist. |\n| `GOTIFY_MCP_ALLOWED_ORIGINS` | empty | Comma-separated `Origin` header allowlist. |\n| `GOTIFY_NOAUTH` | `false` | Escape hatch permitting a non-loopback bind with no auth. See below. |\n| `GOTIFY_MCP_HOME` | `~/.gotify` or `/data` | Override the appdata dir used by `rgotify setup`. |\n| `RUNNING_IN_CONTAINER` | unset | Forces the `/data` appdata path. |\n| `RUST_LOG` | `info` | Rust log filter. Stdio logs must stay off stdout. |\n\n`GOTIFY_MCP` is also the `lab-auth` env prefix, so `lab-auth` reads further\n`GOTIFY_MCP_*` keys beyond those listed here.\n\n### Startup Bind Guard\n\nThe server refuses to start when it would bind a non-loopback host with no\nauthentication configured. To bind `0.0.0.0`, set `GOTIFY_MCP_TOKEN`, or use\n`GOTIFY_MCP_AUTH_MODE=oauth`, or — only when an upstream gateway genuinely\nenforces auth — set `GOTIFY_NOAUTH=true`.\n\n## Authentication\n\n| Policy | When | Effect |\n|---|---|---|\n| Loopback development | `GOTIFY_MCP_HOST` starts with `127.` or `GOTIFY_MCP_NO_AUTH=true` | No HTTP auth layer is mounted. Use for local testing only. |\n| Static bearer | `GOTIFY_MCP_TOKEN` is set and the server is not loopback dev | `/mcp` requires `Authorization: Bearer <token>`. |\n| OAuth | `GOTIFY_MCP_AUTH_MODE=oauth` plus Google OAuth settings | `/mcp` uses `lab-auth` OAuth and scoped bearer tokens. |\n| Stdio | `rgotify mcp` | The local child-process boundary is the trust boundary. |\n\nMCP scopes are `gotify:read` and `gotify:write`. The static bearer token grants\nboth scopes. OAuth tokens are checked before MCP calls are dispatched.\n\n## Safety And Trust Model\n\n- MCP callers never provide Gotify client tokens, Gotify app tokens, OAuth\n  secrets, static bearer tokens, passwords, or API keys as tool arguments.\n- Upstream credentials are loaded from env/config only.\n- Delete actions require `confirm=true`, `--confirm`, or the explicit\n  `GOTIFY_ALLOW_DESTRUCTIVE=true` process override.\n- Gotify is the durable source of notification state; this server is a thin\n  projection over that API.\n- Stdio mode runs with the user's local permissions and is not a sandbox.\n- HTTP mode should not be exposed beyond loopback without bearer or OAuth auth\n  plus TLS from an upstream reverse proxy.\n\n## Architecture\n\n```text\nMCP client / CLI\n       |\n       v\nrgotify\n       |\n       +-- MCP shim: JSON args -> GotifyService -> structured result\n       +-- CLI shim: argv -> GotifyService -> stdout\n       |\n       v\nGotifyService\n       |\n       v\nGotifyClient\n       |\n       v\nGotify REST API\n```\n\n| Path | Role |\n|---|---|\n| `src/app.rs` | Business service layer, destructive gate, response shaping. |\n| `src/gotify.rs` | Gotify REST client. |\n| `src/mcp/` | RMCP tool, prompts, resource, schema, and auth checks. |\n| `src/cli/` | CLI parser, doctor, setup helpers, and output formatting. |\n| `src/config.rs` | Env/config loading and defaults. |\n| `packages/gotify-rmcp/` | npm launcher and release-binary downloader. |\n\nThe thin-shim rule is intentional: MCP and CLI parse inputs, call\n`GotifyService`, and return output. Credential handling, destructive gates, and\nGotify API behavior stay outside the MCP and CLI shims.\n\n## Distribution Contract\n\n| Artifact | File(s) | Must align with |\n|---|---|---|\n| Rust crate/binary | `Cargo.toml`, `Cargo.lock` | Git tag, release assets, CLI docs, install scripts. |\n| npm launcher | `packages/gotify-rmcp/package.json`, `bin/rgotify.js`, `lib/platform.js`, `scripts/install.js` | GitHub Release tag and assets named `rgotify-x86_64.tar.gz` and `rgotify-windows-x86_64.tar.gz`. |\n| GitHub Releases | `.github/workflows/*`, `scripts/install.sh` | Package version, binary name, checksums, supported platforms. |\n| Docker / Compose | `config/Dockerfile`, `docker-compose*.yml` | Exposed port `40020`, healthcheck `/health`, env file contract. |\n| MCP registry | `server.json` | Server identity `tv.nashost/gotify-rmcp`, env vars, transport URL, package version. |\n| Plugin | `plugins/gotify` | Runtime command, user config, bundled metadata. No hooks are shipped. |\n| Docs | `README.md`, `docs/INVENTORY.md`, `docs/QUICKSTART.md` | Current binary name, default port, action list, and env names. |\n\nRelease invariant: npm package version, Rust crate version, `server.json.version`,\nGitHub Release tag, release asset names, and README install examples should move\ntogether. README examples must use canonical repo and binary names, not older\naliases.\n\n## Development\n\n```bash\ncargo fmt -- --check\ncargo clippy --all-targets -- -D warnings\ncargo test\ncargo build --release\nnpm --prefix packages/gotify-rmcp run check\n```\n\n## Verification\n\n```bash\n# Binary and CLI\ncargo build --release\n./target/release/rgotify --version\nGOTIFY_URL=https://gotify.example.com ./target/release/rgotify health --json\n\n# HTTP health\nGOTIFY_URL=https://gotify.example.com GOTIFY_MCP_HOST=127.0.0.1 ./target/release/rgotify serve\ncurl -sf http://127.0.0.1:40020/health\n\n# MCP tool call\ncurl -s -X POST http://127.0.0.1:40020/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Accept: application/json, text/event-stream\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/call\",\"params\":{\"name\":\"gotify\",\"arguments\":{\"action\":\"health\"}}}'\n```\n\nFor live send or management tests, add `GOTIFY_CLIENT_TOKEN` and\n`GOTIFY_APP_TOKEN` from your Gotify instance.\n\n## Deployment\n\n### Docker / Compose\n\n```bash\ncp .env.example .env\n$EDITOR .env\ndocker compose up -d\ncurl -sf http://127.0.0.1:40020/health\n```\n\nThe container stores app data under `/data`, normally mounted from\n`${HOME}/.gotify`.\n\n### Reverse Proxy\n\nExpose only `/mcp` and `/health`. Preserve Streamable HTTP headers, require TLS,\nand configure bearer or OAuth auth before exposing the server beyond loopback.\n\n### Plugin\n\nThe plugin ships **no Claude Code hooks**, so nothing runs setup for you. Run it\nonce by hand after installing or updating the plugin:\n\n```bash\nclaude plugin install plugins/gotify\n\nrgotify setup repair     # create ~/.gotify and its .env, then re-check\nrgotify setup install    # copy the binary into ~/.local/bin so it is on PATH\nrgotify setup check      # read-only verification\n```\n\n`rgotify setup repair` creates the appdata dir and a placeholder `.env`;\n`rgotify setup install` keeps a terminal-callable copy in `~/.local/bin` (repeat\nit after `/plugin update`). `rgotify setup check` verifies appdata, `.env`,\nbinary-on-PATH, and that port 40020 is free. The server itself takes its config\nfrom the plugin's `.mcp.json` `${user_config.*}` block, so these commands\nbootstrap the local environment rather than configure the server.\n\n## Troubleshooting\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| `401` from `/mcp` | Missing or wrong bearer/OAuth token. | Check `GOTIFY_MCP_TOKEN` and client headers, or use loopback dev mode locally. |\n| CLI health fails | `GOTIFY_URL` is missing or unreachable. | Export `GOTIFY_URL` and confirm Gotify is reachable from this host. |\n| `send` fails with auth error | Wrong token type. | Use `GOTIFY_APP_TOKEN` for send and `GOTIFY_CLIENT_TOKEN` for management. |\n| Destructive action is blocked | Confirmation gate is working. | Add `confirm=true`, `--confirm`, or a deliberate `GOTIFY_ALLOW_DESTRUCTIVE=true`. |\n| stdio MCP JSON parse errors | Logs went to stdout. | Keep protocol logs off stdout and lower `RUST_LOG` if needed. |\n| npm launcher cannot find binary | Release asset download failed or was skipped. | Reinstall, check `GOTIFY_RMCP_VERSION`, or build `rgotify` from source. |\n\n## Related Servers\n\n- [soma](https://github.com/dinglebear-ai/soma) - RMCP runtime for provider-backed MCP servers.\n- [unifi-rmcp](https://github.com/dinglebear-ai/runifi) - UniFi controller REST API bridge.\n- [tailscale-rmcp](https://github.com/dinglebear-ai/rtailscale) - Tailscale API bridge for devices, users, and tailnet operations.\n- [unraid](https://github.com/dinglebear-ai/unraid) - Unraid monorepo: GraphQL MCP bridges (`runraid`) and Unraid plugins.\n- [apprise-rmcp](https://github.com/dinglebear-ai/rapprise) - Apprise notification fan-out bridge for many delivery backends.\n- [arcane-rmcp](https://github.com/dinglebear-ai/rarcane) - Arcane Docker management bridge for containers and related resources.\n- [yarr](https://github.com/dinglebear-ai/yarr) - Media-stack bridge for Sonarr, Radarr, Prowlarr, Plex, and related services.\n- [ytdl-rmcp](https://github.com/dinglebear-ai/rytdl) - Media download and metadata workflow server.\n- [synapse-rmcp](https://github.com/dinglebear-ai/synapse) - Local Synapse workflow server for scout and flux actions.\n- [cortex](https://github.com/dinglebear-ai/cortex) - Syslog and homelab log aggregation MCP server.\n- [axon](https://github.com/dinglebear-ai/axon) - RAG, crawl, scrape, extract, and semantic search project.\n- [labby](https://github.com/dinglebear-ai/labby) - Homelab control plane and MCP gateway project.\n- [lumen](https://github.com/dinglebear-ai/lumen) - Local semantic code search MCP server.\n\n## Documentation\n\nStart here:\n\n- [`docs/QUICKSTART.md`](docs/QUICKSTART.md) - focused setup flow.\n- [`docs/INVENTORY.md`](docs/INVENTORY.md) - component inventory for actions,\n  CLI commands, env vars, and endpoints.\n- [`docs/RUST.md`](docs/RUST.md) - Rust development notes.\n- [`docs/stack/ARCH.md`](docs/stack/ARCH.md) - stack architecture details.\n- [`server.json`](server.json) - MCP registry metadata.\n- [`packages/gotify-rmcp/README.md`](packages/gotify-rmcp/README.md) - npm\n  package launcher notes.\n\nThis README is curated. Generated or exhaustive catalogs should be refreshed in\ntheir own files and treated as the source of truth for current branch details.\n\n## License\n\nOriginal Dinglebear-authored portions of this project are licensed under [AGPL-3.0-only](LICENSE). Separate commercial licensing is available for organizations that need terms outside the AGPL. Third-party material remains under its original license. See [LICENSING.md](https://github.com/dinglebear-ai/rgotify/blob/main/LICENSING.md).\n",
  "bytes": 23062,
  "sha": "9ee0a4f576e1486a9a01736c77f68c1d92dc671691f087e6046cc880f1364354",
  "repo_slug": "dinglebear-ai/rgotify",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_ai_dinglebear_rgotify_dc722ac1/readme"
}