Atlas / MCP servers / kstonekuan / Telegram Notifications

Telegram NotificationsBLOCK

mcp/kstonekuan/telegram-notifications

Simple MCP server to send you notifications on telegram

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
1 0r · 1w · 0d
Transport
—
License
MIT
Stars
22
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

An MCP (Model Context Protocol) server that sends notifications to Telegram when Claude Code completes tasks. Built with TypeScript using the Cloudflare Agents SDK and deployable on Cloudflare Workers.

📢 Prefer Discord? Check out Discord Notification MCP for Discord notifications instead.

Features

  • 🤖 MCP Tool: Provides a send_telegram_message tool for sending notifications
  • 🚀 Cloudflare Workers: Runs serverless with global distribution
  • 🔐 Authenticated: Requires a bearer token stored as a Cloudflare secret
  • 🌐 Streamable HTTP: Uses the current stateless MCP transport
  • 💬 Message Formatting: Supports Markdown and HTML formatting
  • 📝 Formatting: Supports Markdown and HTML message formatting

Architecture

This server implements the MCP specification using Cloudflare's Agents SDK:

  • POST /mcp: Stateless Streamable HTTP endpoint for MCP communication
  • GET /sse: Returns 410 Gone; legacy SSE clients must migrate to /mcp
  • Built with TypeScript, MCP SDK, and Cloudflare Agents SDK
  • Proper JSON-RPC 2.0 error handling
  • Node.js compatibility mode enabled

Setup

Prerequisites

  1. Telegram Bot: Create a bot via @BotFather and get your bot token
  2. Chat ID: Get your chat ID by sending a message to your bot and visiting:
https://api.telegram.org/bot/getUpdates
  1. Cloudflare Account: Sign up at cloudflare.com

Installation

  1. Clone this repository
  2. Install dependencies:
pnpm install

Configuration

  1. Create a .dev.vars file from the example:
cp .dev.vars.example .dev.vars

Then edit .dev.vars with your bot token and chat ID. This file is used for both local development a

Read from source at commit 962384e53ab4OBSERVED · 2026-10-10
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control.

claude-code
claude mcp add telegram-notification-mcp -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "telegram-notification-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ]
    }
  }
}
03

Exposed tools (1)

0 read · 1 write · 0 destructive.

ToolRiskDescription
send_telegram_messagewrite
04

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (5 observation(s))
Shell
declared (2 observation(s))
Dependencies
not all pinned
Secrets in source
none-found

Findings (9)

HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
worker-configuration.d.ts:2927
exec(input?: (string | URLPatternInit), baseURL?: string): URLPatternResult | null;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
worker-configuration.d.ts:9438
exec(query: string): Promise<D1ExecResult>;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInventory / provenance · inv.hidden_file · CWE-1104
.dev.vars.example
.dev.vars.example
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
worker-configuration.d.ts:282
atob(data: string): string;
LOWObfuscation / stealth · obf.decode_call · CWE-506, CWE-94
worker-configuration.d.ts:368
declare function atob(data: string): string;
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
agents, zod, @biomejs/biome, @grammyjs/types, @types/node, typescript, vitest, wrangler
Why it matters. 8 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOInventory / provenance · inv.oversize · CWE-1104
images/logo.png
images/logo.png
Why it matters. 1071709 bytes not read
INFOInventory / provenance · inv.oversize · CWE-1104
images/telegram.jpg
images/telegram.jpg
Why it matters. 1279371 bytes not read
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
README.md:206
For local development, Wrangler will automatically load environment variables from your `.dev.vars` file.
Why it matters. asks the agent to read credentials

Gates applied: no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha 962384e53ab4full audit observations/trust-audit/mcp-server/kstonekuan__telegram-notifications.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-10962384e53ab4BLOCKD69first audit
06

Questions

What is the Telegram Notifications MCP server?

Simple MCP server to send you notifications on telegram

What tools does Telegram Notifications expose?

1 in total: 0 read-only, 1 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is Telegram Notifications safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does Telegram Notifications need?

No credential environment variables were found in its source, so it appears to need none.

How current is this page?

The grade is for one exact copy of the source (962384e53ab4), read on 2026-10-10. The repository is watched and re-audited when it changes.

Advertisement