Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
By jmagar
Gotify push notifications and management via MCP tools with HTTP fallback. Sends alerts for long-running tasks, plan completions, and blocked states.
npx claudepluginhub jmagar/claude-homelab --plugin gotify-mcpThis plugin requires configuration values that are prompted when the plugin is enabled. Sensitive values are stored in your system keychain.
gotify_urlBase URL of your Gotify server, e.g. http://gotify or https://gotify.example.com. No trailing slash.
${user_config.gotify_url}Admin access level
Server config contains admin-level keywords
Requires secrets
Needs API keys or credentials to function
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
gotify_app_tokenGotify application token for sending messages. Found in Gotify UI under Settings -> Apps -> Create Application.
${user_config.gotify_app_token}gotify_client_tokenGotify client token for management operations (list messages, manage apps/clients). Found in Gotify UI under Settings -> Clients.
${user_config.gotify_client_token}Pushover notification hooks - get notified when tasks complete or permissions are needed. Requires: python3 and psutil. Install: pip install psutil. Verify: python3 -c 'import psutil; print(psutil.__version__)'
Send notifications via Apprise when Claude Code needs input
Core skills library for Claude Code: TDD, debugging, collaboration patterns, and proven techniques
Reliable automation, in-depth debugging, and performance analysis in Chrome using Chrome DevTools and Puppeteer
v9.39.0 — Codex marketplace icon, session provider controls, and OpenCode catalog/logging maintenance. Run /octo:setup.
Plugin that includes the Figma MCP server and Skills for common workflows
Query, 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.
Agents, commands, skills, and scripts for scaffolding, reviewing, aligning, and deploying homelab MCP server plugins. Includes canonical Python, TypeScript, and Rust server templates.
Spider-powered self-hosted RAG engine — scrape, map, extract, crawl, embed, and query via MCP or CLI. 16 skills covering web crawling, GitHub/Reddit/YouTube ingest, semantic vector search, and grounded LLM answers over indexed content.
MCP server for self-hosted Gotify. Exposes a unified gotify action router and a gotify_help companion tool for sending notifications and managing Gotify messages, applications, clients, and account metadata.
Two MCP tools are exposed:
| Tool | Purpose |
|---|---|
gotify | Unified action router for all Gotify operations |
gotify_help | Returns markdown documentation for all actions and parameters |
The server supports HTTP (default) and stdio transports. HTTP transport requires bearer authentication via GOTIFY_MCP_TOKEN.
gotify_mcp/server.py: FastMCP server, action router, and BearerAuth middlewaregotify_mcp/services/gotify.py: Async HTTP client for the Gotify REST APIskills/gotify/SKILL.md: Client-facing skill documentationdocs/gotify-api.json: Bundled upstream Gotify API reference.claude-plugin/plugin.json, .codex-plugin/plugin.json, gemini-extension.json: Client manifestsdocker-compose.yml, Dockerfile, entrypoint.sh: Container deploymentscripts/: Smoke tests and contract checksgotifySingle entry point for all Gotify operations. Select the operation with the action parameter.
gotify(action="send_message", app_token="AbCdEf", message="Build finished", priority=5)
gotify_helpReturns the full action reference as Markdown. Call this to discover available actions.
gotify_help()
send_messageSend a push notification. Requires an app_token — this is the per-application token, not the client token.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
app_token | string | yes | — | Application token from Gotify UI (Settings > Apps) |
message | string | yes | — | Notification body. Supports Markdown when extras sets contentType. |
title | string | no | — | Notification title |
priority | integer | no | app default | Priority 0–10. See Priority Levels below. |
extras | dict | no | — | Extended metadata. See Extras Structure below. |
Response fields:
| Field | Type | Description |
|---|---|---|
id | integer | Assigned message ID |
appid | integer | Application ID that sent the message |
message | string | Message body |
title | string | Message title |
priority | integer | Effective priority |
date | string | ISO 8601 timestamp |
extras | dict | Extras as submitted |
Example:
gotify(action="send_message",
app_token="AbCdEf",
title="Deployment done",
message="## Summary\n- All steps complete\n- Ready for review",
priority=7,
extras={"client::display": {"contentType": "text/markdown"}})
list_messagesList messages with pagination and optional filtering.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
app_id | integer | no | — | Filter to messages from one application |
offset | integer | no | 0 | Cursor offset (message ID) — items before this ID are skipped |
limit | integer | no | 50 | Maximum number of messages to return |
sort_by | string | no | "id" | Field to sort by. Valid values: id, date, priority |
sort_order | string | no | "desc" | "asc" or "desc" |
query | string | no | "" | Case-insensitive substring filter applied to title and message body |
Response fields:
| Field | Type | Description |
|---|---|---|
items | array | Array of message objects (same shape as send_message response) |
total | integer | Total messages before pagination |
limit | integer | Limit used |
offset | integer | Offset used |
has_more | boolean | Whether more pages exist |
Note: Gotify uses cursor-style pagination internally. The offset parameter maps to the since query parameter (a message ID), not a row count.
Example:
gotify(action="list_messages", limit=20, sort_order="desc")
gotify(action="list_messages", app_id=3, query="error", limit=10)
delete_messageDelete a single message by ID. Destructive — requires confirm=True.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
message_id | integer | yes | — | ID of the message to delete |
confirm | boolean | yes | False | Must be True to proceed |
Example:
gotify(action="delete_message", message_id=42, confirm=True)
delete_all_messagesDelete all messages across all applications. Destructive — requires confirm=True.