This plugin requires configuration values that are prompted when the plugin is enabled. Sensitive values are stored in your system keychain.
no_authRun gotify-mcp without bearer token auth. Use only when an upstream reverse proxy enforces auth before traffic reaches the server, or for local-only loopback deployments.
${user_config.no_auth}api_tokenOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Bearer token for MCP HTTP authentication, sent as `Authorization: Bearer <token>`. Generate with `openssl rand -hex 32` or `just gen-token`. Must match GOTIFY_MCP_TOKEN on the server side.
${user_config.api_token}auth_modeServer auth mode. 'bearer' uses the static API token only. 'oauth' enables Google OAuth/JWT for clients like Codex while the static token is still accepted for this plugin connection. OAuth mode requires public_url, google_client_id, google_client_secret, and auth_admin_email.
${user_config.auth_mode}gotify_urlURL of your Gotify server, e.g. https://gotify.example.com. This is the upstream Gotify push notification service, not the gotify-mcp MCP endpoint. Required.
${user_config.gotify_url}public_urlPublic base URL for OAuth issuer and resource metadata, e.g. https://gotify-mcp.example.com. Required when auth_mode=oauth. If empty and server_url starts with https://, setup derives it from server_url.
${user_config.public_url}server_urlBase URL the MCP client connects to. Keep the default http://localhost:9158 when running gotify-mcp locally. Set to the remote host URL (e.g. http://gotify-mcp.lan:9158) when connecting to a remote server. Must include scheme and port; do NOT include a trailing /mcp path — the plugin appends it.
${user_config.server_url}use_dockerDeployment method. True: run via the bundled docker compose stack (containerized, exposes port 9158, mounts /data volume). False: run the binary as a systemd user service (lighter weight, logs go to journald).
${user_config.use_docker}auth_admin_emailBootstrap allowlisted Google account for OAuth mode. The server refuses to start OAuth without at least one allowlisted account. Required when auth_mode=oauth.
${user_config.auth_admin_email}google_client_idGoogle OAuth client ID used when auth_mode=oauth. Create a Web application OAuth client at Google Cloud Console. Required when auth_mode=oauth.
${user_config.google_client_id}gotify_app_tokenGotify application token (starts with A) used exclusively for sending messages via POST /message. Do not use a client token here.
${user_config.gotify_app_token}allow_destructiveWhen true, skip the confirm=true gate on delete_message, delete_all_messages, delete_application, and delete_client. Set to false (default) to require explicit confirmation for every destructive operation.
${user_config.allow_destructive}gotify_client_tokenGotify client token (starts with C) used for all management operations: list/create/delete apps, clients, and messages; read user info. Do not use an app token here.
${user_config.gotify_client_token}google_client_secretGoogle OAuth client secret used when auth_mode=oauth. Stored in the plugin env file with mode 600. Required when auth_mode=oauth.
${user_config.google_client_secret}Rust MCP server that bridges Claude (and other MCP clients) to a self-hosted Gotify push notification server. Send notifications, manage applications and clients, and query messages — all from Claude or the CLI.
Claude / MCP client
│
▼
RMCP Streamable HTTP :9158/mcp (or stdio for local clients)
│
▼
gotify-mcp (GotifyService)
│ X-Gotify-Key header
▼
Gotify REST API
The binary runs in three modes:
| Mode | Invocation | Use case |
|---|---|---|
| HTTP MCP server | gotify or gotify serve | Claude Code, remote MCP clients |
| stdio MCP server | gotify mcp | Local child-process MCP clients |
| CLI | gotify <command> | Direct shell use |
Gotify uses two distinct token types. gotify-mcp requires both.
| Token | Env var | Prefix | Used for |
|---|---|---|---|
| Client token | GOTIFY_CLIENT_TOKEN | C | Management: list, create, delete messages/apps/clients, read current user |
| App token | GOTIFY_APP_TOKEN | A | Sending messages (POST /message only) |
The client token authorizes all read and management operations. The app token is used exclusively for send. Both must be set; if the app token is empty, send fails with an explicit error.
Create a Gotify client token and an app token in your Gotify web UI (or see docs/QUICKSTART.md).
Set environment variables:
export GOTIFY_URL=https://gotify.example.com
export GOTIFY_CLIENT_TOKEN=Cxxxxxxxxxxxxxxxx
export GOTIFY_APP_TOKEN=Axxxxxxxxxxxxxxxx
# Build
cargo build --release
# HTTP MCP server (port 9158)
./target/release/gotify
# Or with an MCP bearer token
GOTIFY_MCP_TOKEN=my-secret ./target/release/gotify
~/.claude/claude_desktop_config.json):{
"mcpServers": {
"gotify": {
"type": "http",
"url": "http://localhost:9158/mcp",
"headers": {
"Authorization": "Bearer my-secret"
}
}
}
}
For stdio mode:
{
"mcpServers": {
"gotify": {
"command": "/path/to/gotify",
"args": ["mcp"],
"env": {
"GOTIFY_URL": "https://gotify.example.com",
"GOTIFY_CLIENT_TOKEN": "Cxxxxxxxxxxxxxxxx",
"GOTIFY_APP_TOKEN": "Axxxxxxxxxxxxxxxx"
}
}
}
}
One MCP tool is exposed: gotify. Use the required action argument to select the operation.
| Action | Description | Required params | Optional params |
|---|---|---|---|
health | Server health check (no auth) | — | — |
version | Server version (no auth) | — | — |
me | Current authenticated user | — | — |
messages | List messages | — | app_id, limit (default 50), since |
applications | List all applications | — | — |
clients | List all clients | — | — |
| Action | Description | Required params | Optional params |
|---|---|---|---|
send | Send a push notification | message | title, priority, extras |
create_application | Create an application | name | description, default_priority |
update_application | Update an application | app_id | name, description, default_priority |
create_client | Create a client | name | — |
These require either confirm=true in the call arguments or GOTIFY_ALLOW_DESTRUCTIVE=true in the environment. Without one of these, the call returns: "destructive operation — pass confirm=true or set GOTIFY_ALLOW_DESTRUCTIVE=true".
| Action | Description | Required params |
|---|---|---|
delete_message | Delete one message | id, confirm |
delete_all_messages | Delete all messages | confirm |
delete_application | Delete an application | app_id, confirm |
delete_client | Delete a client | client_id, confirm |
| Action | Description |
|---|---|
help | Returns built-in markdown documentation |
# Health check
curl -s -X POST http://localhost:9158/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"gotify","arguments":{"action":"health"}}}'
# Send a notification
curl -s -X POST http://localhost:9158/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer my-secret" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"gotify","arguments":{"action":"send","message":"Deploy complete","title":"CI","priority":5}}}'
npx claudepluginhub jmagar/dendrite --plugin gotifyQuery, monitor, and manage Unraid servers via GraphQL API through MCP tools. Supports system info, Docker, VMs, array/parity, notifications, plugins, rclone, and live telemetry.
Core homelab agents, commands, and setup/health skills for self-hosted service management. Includes interactive credential setup wizard and unified service health dashboard.
UniFi network management via MCP tools. Monitor devices, clients, network health, firewall rules, and perform management operations.
Gotify push notifications and management via MCP tools with HTTP fallback. Sends alerts for long-running tasks, plan completions, and blocked states.
Agents, commands, skills, and scripts for scaffolding, reviewing, aligning, and deploying homelab MCP server plugins. Includes canonical Python, TypeScript, and Rust server templates.
Memory compression system for Claude Code - persist context across sessions
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Curate auto-memory, promote learnings to CLAUDE.md and rules, extract proven patterns into reusable skills.
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.