Tgreader
БесплатноНе проверенTelegram channel reader MCP server — exposes Telegram channels as MCP tools via Telethon MTProto.
Описание
Telegram channel reader MCP server — exposes Telegram channels as MCP tools via Telethon MTProto.
README
Telegram channel reader MCP server — exposes Telegram channels as MCP tools via Telethon MTProto.
Designed for use with Hermes Agent, Claude Desktop, and any MCP-compatible client.
Features
- List channels — discover channels the account is subscribed to, with optional RegExp search filter
- Read messages — fetch posts from any channel by
@usernameor numeric ID, with date-based pagination and text search - Multi-account — configure multiple Telegram accounts, switch between them per call
- MCP stdio transport — works out of the box with any MCP client
- Security-hardened — session files
0600, config0600, sanitized error messages, ReDoS protection viaregexlibrary with per-match timeout
Requirements
- Python ≥ 3.11 (developed on 3.13)
- uv (recommended) or
pip - Telegram
api_id/api_hash— get them at https://my.telegram.org
Quick start
git clone <repo-url> tgreader && cd tgreader
# Create venv and install deps (runtime + dev, editable)
./setup.sh
# or: make setup
# Activate
source .venv/bin/activate
# Login with your Telegram account
tgreader login --account main --phone +79001234567
# Check status
tgreader status
Register with Hermes Agent
Add to ~/.hermes/config.yaml:
mcp_servers:
tgreader:
command: /home/<user>/telegram_reader/.venv/bin/tgreader-mcp
args: []
Install the Hermes skill
The repo ships a ready-to-use Hermes Agent skill at skills/tgreader/SKILL.md.
Install it so the agent knows how to use the MCP tools:
# Copy (recommended)
cp -r skills/tgreader ~/.hermes/skills/tgreader
# Or symlink (tracks the repo, auto-updates on git pull)
ln -s ~/telegram_reader/skills/tgreader ~/.hermes/skills/tgreader
The skill teaches the agent when and how to call list_channels / read_messages,
including example workflows (find vacancies, read by date range, search across
channels) and pitfalls (FloodWait, session expiry, ReDoS-protected search).
Register with Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"tgreader": {
"command": "/home/<user>/telegram_reader/.venv/bin/tgreader-mcp"
}
}
}
MCP tools
list_channels
List Telegram channels the account is subscribed to.
| Parameter | Type | Default | Description |
|---|---|---|---|
account |
str | — | Account name (default: configured default) |
search |
str | — | RegExp pattern to filter by title/username (max 200 chars) |
limit |
int | 100 | Max channels to return (max 500) |
Returns: {"count": N, "channels": [{"id", "title", "username", "type", "participants_count"}]}
read_messages
Read messages from a Telegram channel.
| Parameter | Type | Default | Description |
|---|---|---|---|
channel |
str | — | Channel @username or numeric ID (required) |
account |
str | — | Account name (default: configured default) |
limit |
int | 20 | Max messages when offset_date is None (max 1000) |
offset_date |
str | — | ISO 8601 datetime — read messages before this date |
search |
str | — | RegExp pattern to filter message text (max 200 chars) |
Returns: {"count": N, "channel": {"id", "title", "username"}, "messages": [{"id", "date", "text", "views", "reactions", "media_type", "link"}]}
CLI
# Login (creates session, saves to config)
tgreader login --account main --phone +79001234567
# Account management
tgreader accounts list
tgreader accounts add --name work --phone +790011122233 --label "Work account"
tgreader accounts remove main
tgreader accounts default main
# Check session status
tgreader status
tgreader status --account work
# Start MCP server (stdio)
tgreader run
# or: tgreader-mcp
Configuration
Config lives at ~/.config/tgreader/config.json (XDG-aware):
{
"api_id": 123456,
"api_hash": "your_api_hash_here",
"default_account": "main",
"accounts": {
"main": {
"phone": "+79001234567",
"label": ""
}
}
}
Session files (.session) are stored at ~/.config/tgreader/sessions/ with 0600 permissions.
Development
# Setup
make setup # create .venv, install deps
# Tests
make test # full suite (113 tests)
make test-fast # without isolation (debugging)
# Lint
make lint # py_compile syntax check
# Run server
make run
# Clean
make clean # remove .venv and caches
Test suite
- 113 tests — unit + integration + BDD (pytest-bdd with Gherkin
.featurefiles) - BDD features cover: login flow, channel listing, message reading
- Security tests: ReDoS, error sanitization, session permissions, config validation
Project structure
tgreader-mcp/
├── src/tgreader_mcp/
│ ├── __init__.py # version
│ ├── server.py # FastMCP server — tool definitions
│ ├── client.py # Telethon client — channel/message logic
│ ├── config.py # Config load/save, account management
│ └── cli.py # Click CLI — login, accounts, status
├── skills/tgreader/
│ └── SKILL.md # Hermes Agent skill — tool usage guide
├── tests/
│ ├── test_server.py # MCP tool tests
│ ├── test_client.py # Telegram client tests
│ ├── test_config.py # Config validation tests
│ ├── test_security.py # ReDoS, sanitization, permissions
│ ├── test_cli.py # CLI command tests
│ ├── features/ # Gherkin .feature files
│ └── test_steps/ # pytest-bdd step implementations
├── pyproject.toml
├── Makefile
├── setup.sh
└── .python-version
Security
- Session files —
0600permissions, stored in~/.config/tgreader/sessions/ - Config file —
0600permissions, atomic write (tmp → rename) - Error sanitization — internal exceptions (Telethon, network) are caught; only safe, generalized messages reach the LLM
- ReDoS protection —
regexlibrary (not stdlibre) with 2s per-match timeout;RegexTimeoutErroris caught and surfaced safely - Config validation — full type checking on load; malformed config raises
ConfigErrorwith a clear message
License
MIT © Andrey Romanchuk
Установить Tgreader в Claude Desktop, Claude Code, Cursor
unyly install tgreader-mcpСтавит в Claude Desktop, Claude Code, Cursor и VS Code — сам разбирается с npx, uvx и сборкой из исходников.
Впервые? Поставь CLI: curl -fsSL https://unyly.org/install | sh
Или настроить вручную
Выполни в терминале:
claude mcp add tgreader-mcp -- uvx --from git+https://github.com/ramich2077/tgreader-mcp tgreader-mcpFAQ
Tgreader MCP бесплатный?
Да, Tgreader MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Tgreader?
Нет, Tgreader работает без API-ключей и переменных окружения.
Tgreader — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Tgreader в Claude Desktop, Claude Code или Cursor?
Открой Tgreader на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
Gmail
Read, send and search emails from Claude
автор: GoogleSlack
Send, search and summarize Slack messages
автор: SlackRunbear
No-code MCP client for team chat platforms, such as Slack, Microsoft Teams, and Discord.
Discord Server
A community discord server dedicated to MCP by [Frank Fiegel](https://github.com/punkpeye)
Compare Tgreader with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории communication
