tgbot-mcp

tgbot-mcp

A trusted, open-source MCP server for Telegram that enables LLMs to send messages, structured notifications with buttons, and wait for user replies using only bot token authentication.

Category
Visit Server

README

tgbot-mcp

PyPI version Python License: MIT

A trusted, open-source MCP (Model Context Protocol) server for Telegram.

Built as a clean alternative to closed-source or opaque Telegram MCP packages — bot token authentication only, no personal account access, no proprietary backend.


Features

  • Bot token auth only — uses the official Telegram Bot API (api.telegram.org). Your personal account is never touched.
  • 4 purpose-built tools for LLM workflows: send messages, send structured notifications, send notifications with action buttons, and wait for user replies.
  • Language-agnostic — tools are written in English, but the LLM responds to users in their own language automatically. No language is hardcoded.
  • Smart polling in wait_for_reply to minimise API calls while staying responsive.
  • Zero external services. Pure Python + httpx + fastmcp.

Quick Start

1. Create a Telegram Bot

  1. Open Telegram and message @BotFather.
  2. Send /newbot and follow the prompts.
  3. Copy the bot token (looks like 123456:ABC-DEF...).
  4. Start a chat with your new bot, then visit:
    https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates
    
    Send any message to the bot and look for "chat":{"id":...} — that is your chat ID.

2. Register with Your MCP Client

Add the following to your MCP client configuration (e.g. claude_desktop_config.json):

{
  "mcpServers": {
    "tgbot-mcp": {
      "command": "uvx",
      "args": ["tgbot-mcp"],
      "env": {
        "TELEGRAM_BOT_TOKEN": "YOUR_BOT_TOKEN",
        "TELEGRAM_CHAT_ID": "YOUR_CHAT_ID"
      }
    }
  }
}

uvx runs the server directly from PyPI without a separate install step. If you don't have uv yet:

curl -LsSf https://astral.sh/uv/install.sh | sh

Alternatively, install manually and run with pip:

pip install tgbot-mcp

Then use "command": "tgbot-mcp" (without uvx) in the config above.


Tools

send_message

Send a free-form text message to the configured chat.

Parameter Type Default Description
text str (required) Message body. Telegram Markdown supported.
parse_mode "Markdown" | "HTML" | "" "Markdown" Text formatting mode.

Example prompt: "Send a Telegram message: 'Build finished successfully in 2m 14s.'"


send_notification

Send a structured notification with an automatic event emoji.

Event Emoji
completed
error
progress 🔄
question
Parameter Type Default Description
event str (required) One of the four event types above.
summary str (required) One-line summary (≤200 chars).
details str "" Optional multi-line detail body.

Example prompt: "Notify me on Telegram that the data pipeline completed. Include row counts."


send_notification_with_buttons

Send a notification with up to 4 inline action buttons. Ideal when you want the user to pick an option without typing.

Parameter Type Default Description
event str (required) Event type.
summary str (required) One-line summary.
buttons list[str] (required) 1–4 button labels. Each label is also the reply value.
details str "" Optional context text.

Example prompt: "Ask me via Telegram whether to deploy to staging or production."


wait_for_reply

Block until the user replies (text message or button tap) or the timeout expires.

Parameter Type Default Max Description
max_wait_seconds int 1800 no limit How long to wait for a reply.

Smart polling schedule:

Elapsed time Poll interval
0 – 10 minutes 30 seconds
10 minutes – 1 hr 60 seconds
1 hr+ 120 seconds

LLM guidelines for max_wait_seconds:

Scenario Recommended value
Simple yes/no question 300 (5 min)
General task approval 1800 (30 min) ✓
Stock price / event alert 1800 (30 min)
End-of-day review 7200 (2 hr)
Overnight / long-running job 86400 (24 hr)
Multi-day wait any value — no limit

Typical LLM Workflow

LLM: [does some long task]
  → send_notification_with_buttons(
        event="question",
        summary="Finished analysis. What should I do next?",
        buttons=["📊 Generate report", "📧 Send email", "🔁 Re-run with new params"]
    )
  → wait_for_reply(max_wait_seconds=1800)
  → [user taps "📊 Generate report"]
LLM: [generates the report]
  → send_notification(event="completed", summary="Report ready!", details="...")

Environment Variables

Variable Required Description
TELEGRAM_BOT_TOKEN Bot token from @BotFather
TELEGRAM_CHAT_ID Chat ID to send messages to

Development

# Clone and install in editable mode
git clone https://github.com/TGLEEEE/tgbot-mcp
cd tgbot-mcp
pip install -e ".[dev]"

# Run directly
TELEGRAM_BOT_TOKEN=... TELEGRAM_CHAT_ID=... python -m tgbot_mcp.server

Security

  • Only the official Telegram Bot API is used (api.telegram.org). No third-party relay.
  • Bot tokens are read from environment variables — never hardcoded.
  • Only the chat configured via TELEGRAM_CHAT_ID receives messages.
  • No personal Telegram account credentials are ever required.

License

MIT — see LICENSE.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured