# Notify MCP Server (oci · ghcr.io/aahl/mcp-notify:latest)

MCP Server for notify to Weixin, Telegram, Bark, Lark, Feishu, DingTalk

- Trust score: 38/100 (low)
- Change this week: −3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- oci · `ghcr.io/aahl/mcp-notify:latest`: 38/100 (this document), [markdown](https://verifymcp.io/servers/aahl-mcp-notify/ghcr-io-aahl-mcp-notify-latest.md), [page](https://verifymcp.io/servers/aahl-mcp-notify/ghcr-io-aahl-mcp-notify-latest)
- pypi · `mcp-notify`: 28/100, [markdown](https://verifymcp.io/servers/aahl-mcp-notify/mcp-notify.md), [page](https://verifymcp.io/servers/aahl-mcp-notify/mcp-notify)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/aahl/mcp-notify:latest`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Supply Chain Security**: 0/100
  - Malware scan not yet available for this package.
  - CVE data not yet available for this package.
  - Install-script risk not yet assessed.
  - Dependency-health data not yet available.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 130 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 63/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2076 tokens (~138/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 23/100
  - Stability observed for 7 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 96/100
  - 93% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### Claude

```bash
claude mcp add aahl-mcp-notify -- docker run --rm -i ghcr.io/aahl/mcp-notify:latest
```

### Codex

```bash
codex mcp add aahl-mcp-notify -- docker run --rm -i ghcr.io/aahl/mcp-notify:latest
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "aahl-mcp-notify": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/aahl/mcp-notify:latest"
      ],
      "enabled": true
    }
  }
}
```

### Hermes

```yaml
mcp_servers:
  aahl-mcp-notify:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/aahl/mcp-notify:latest"]
```

### Other

```json
{
  "mcpServers": {
    "aahl-mcp-notify": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/aahl/mcp-notify:latest"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-03 (score 38, +4)

- [functional improvement] Stability: unverified → 0.23

### 2026-07-31 (score 34, −7)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 41, +30)

- [functional improvement] Tool coverage: unverified → 93
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: good
- [functional] First check of Tool coverage: 100
- [functional] First check of Schema quality: fail

### 2026-07-26 (score 11)

First indexed and scored.

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

## MCP tools (15)

### `wework_send_text` (~94 tokens)

企业微信群机器人-发送文本消息

通过企业微信群机器人发送文本或Markdown消息

Input parameters:

- `bot_key` (string): 企业微信群机器人key，uuid格式，默认从环境变量获取
- `msgtype` (string): 内容类型，仅支持: text/markdown_v2
- `text` (string, required): 消息内容，长度限制: (text: 2048个字节, markdown_v2: 4096个字节)

### `wework_send_image` (~49 tokens)

企业微信群机器人-发送图片消息

通过企业微信群机器人发送图片消息

Input parameters:

- `bot_key` (string): 企业微信群机器人key，uuid格式，默认从环境变量获取
- `url` (string, required): 图片url

### `wework_send_news` (~96 tokens)

企业微信群机器人-发送图文消息

通过企业微信群机器人发送图文链接消息

Input parameters:

- `bot_key` (string): 企业微信群机器人key，uuid格式，默认从环境变量获取
- `description` (string): 描述，不超过512个字节
- `picurl` (string): 图片URL
- `title` (string, required): 标题，不超过128个字节
- `url` (string, required): 跳转链接，必填

### `tg_send_message` (~102 tokens)

Telegram send text

Send text or markdown message via telegram bot

Input parameters:

- `chat_id` (string): Telegram chat id, Default to get from environment variables
- `parse_mode` (string): Mode for parsing entities in the message text. [text/MarkdownV2]
- `reply_to_message_id` (integer): Identifier of the message that will be replied to
- `text` (string, required): Text of the message to be sent, 1-4096 characters after entities parsing

### `tg_send_photo` (~116 tokens)

Telegram send photo

Send photo via telegram bot

Input parameters:

- `caption` (string): Photo caption, 0-1024 characters after entities parsing
- `chat_id` (string): Telegram chat id, Default to get from environment variables
- `parse_mode` (string): Mode for parsing entities in the caption. [text/MarkdownV2]
- `photo` (string, required): Photo URL or base64 data URI (e.g., data:image/png;base64,...
- `reply_to_message_id` (integer): Identifier of the message that will be replied to

### `tg_send_video` (~134 tokens)

Telegram send video

Send video via telegram bot

Input parameters:

- `caption` (string): Video caption, 0-1024 characters after entities parsing
- `chat_id` (string): Telegram chat id, Default to get from environment variables
- `cover` (string): Cover for the video in the message. Optional
- `parse_mode` (string): Mode for parsing entities in the caption. [text/MarkdownV2]
- `reply_to_message_id` (integer): Identifier of the message that will be replied to
- `video` (string, required): Video URL or base64 data URI (e.g., data:video/mp4;base64,...

### `tg_send_audio` (~118 tokens)

Telegram send audio

Send audio via telegram bot

Input parameters:

- `audio` (string, required): Audio URL or base64 data URI (e.g., data:audio/wav;base64,...
- `caption` (string): Audio caption, 0-1024 characters after entities parsing
- `chat_id` (string): Telegram chat id, Default to get from environment variables
- `parse_mode` (string): Mode for parsing entities in the caption. [text/MarkdownV2]
- `reply_to_message_id` (integer): Identifier of the message that will be replied to

### `tg_send_file` (~103 tokens)

Telegram send file

Send general files via telegram bot

Input parameters:

- `caption` (string): File caption, 0-1024 characters after entities parsing
- `chat_id` (string): Telegram chat id, Default to get from environment variables
- `parse_mode` (string): Mode for parsing entities in the caption. [text/MarkdownV2]
- `reply_to_message_id` (integer): Identifier of the message that will be replied to
- `url` (string, required): File URL

### `ding_send_text` (~79 tokens)

钉钉群机器人-发送文本消息

钉钉群机器人发送文本或Markdown消息

Input parameters:

- `bot_key` (string): 钉钉群机器人access_token，默认从环境变量获取
- `msgtype` (string): 内容类型，仅支持: text/markdown
- `text` (string, required): 消息内容
- `title` (string): 消息标题

### `lark_send_text` (~94 tokens)

飞书/Lark机器人-发送文本消息

飞书/Lark群机器人发送文本或Markdown消息

Input parameters:

- `bot_key` (string): 飞书/Lark机器人key，uuid格式，默认从环境变量获取
- `is_lark` (integer): 根据用户描述识别 0:飞书 1:Lark
- `msgtype` (string): 内容类型，仅支持: text/markdown
- `text` (string, required): 消息内容

### `bark_send_notify` (~196 tokens)

Bark推送通知

通过Bark推送通知

Input parameters:

- `body` (string, required): 推送内容
- `device_key` (string): 设备key，默认从环境变量获取
- `icon` (string): 自定义图标URL
- `level` (string): 推送中断级别。critical: 重要警告, 在静音模式下也会响铃active：默认值，系统会立即亮屏显示通知timeSensitive：时效性通知，可在专注状态下显示通知。passive：仅将通知添加到通知列表，不会亮屏提醒。
- `subtitle` (string): 推送副标题
- `title` (string): 推送标题
- `url` (string): 点击推送时，跳转的URL ，支持URL Scheme 和 Universal Link
- `volume` (integer): 重要警告的通知音量(0-10)，默认为5

### `ntfy_send_notify` (~366 tokens)

Ntfy Push Notification

Push a notification via Ntfy

Input parameters:

- `actions`: List of action buttons. The following actions are supported: - view: Opens a website or app when the action button is tapped - broadcast: Sends an Android broadcast intent when the action button is t…
- `attach` (string): URL of an attachment
- `click` (string): URL opened when notification is clicked
- `delay` (string): Timestamp or duration for delayed delivery. Example: 30min, 9am
- `filename` (string): File name of the attachment
- `icon` (string): URL of notification icon
- `markdown` (boolean): Set to `true` if the message is Markdown-formatted
- `message` (string, required): Notification message body; set to `triggered` if empty or not passed
- `priority` (integer): Message priority with 1=min, 3=default and 5=max
- `title` (string): Notification title
- `topic` (string): Target topic name or URL

### `pushplus_send_msg` (~106 tokens)

PushPlus推送消息

通过PushPlus(推送加)推送消息

Input parameters:

- `channel` (string): 发送渠道: `wechat`(默认)/`webhook`/`mail`
- `content` (string, required): 消息内容
- `template` (string): 消息内容格式: `html`(默认)/`txt`/`markdown`
- `title` (string): 消息标题
- `token` (string): 用户token，默认从环境变量获取

### `ha_send_mobile` (~337 tokens)

Send to HomeAssistant Mobile APP

Send a notification to Home Assistant Mobile APP

Input parameters:

- `data`: Extended data, json string. ```json {   "image": "http://a.com/photo.jpg",   "video": "http://a.com/video.mp4",   "audio": "http://a.com/audio.mp3", # ios only   "actions": [     {       "action": "Y…
- `device_key` (string): Device key, Default to get from environment variables
- `message` (string, required): Notification content
- `subtitle` (string): Notification subtitle
- `title` (string): Notification title
- `url` (string): Opening a URL when tapping on a notification

### `text_to_sound` (~86 tokens)

文本转音频

将一段文本转成mp3音频链接

Input parameters:

- `lang` (string): 目标语言，支持: en/zh/cte(粤语)/ara/de/fra/kor/pt/ru/spa/th, 建议根据文本内容选择
- `speed` (integer): 语速，默认7
- `text` (string, required): 文本内容

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/aahl-mcp-notify/ghcr-io-aahl-mcp-notify-latest#diagnostics

## Score history

- 2026-08-03: 38
- 2026-08-02: 34
- 2026-08-01: 34
- 2026-07-31: 34
- 2026-07-30: 41
- 2026-07-29: 41
- 2026-07-28: 41
- 2026-07-27: 41
- 2026-07-26: 11

## Links

- Repository: https://github.com/aahl/mcp-notify
- Changelog RSS feed: https://verifymcp.io/servers/aahl-mcp-notify/ghcr-io-aahl-mcp-notify-latest/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/aahl-mcp-notify/ghcr-io-aahl-mcp-notify-latest/changelog.json
- HTML version of this page: https://verifymcp.io/servers/aahl-mcp-notify/ghcr-io-aahl-mcp-notify-latest
