tgreader-mcp
Provides tools to list subscribed Telegram channels and read messages, with account management, date-based pagination, and text search.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@tgreader-mcpshow me recent messages from @python_weekly"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
tgreader-mcp
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 searchMulti-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
Related MCP server: mcp-telegram
Requirements
Python ≥ 3.11 (developed on 3.13)
uv (recommended) or
pipTelegram
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 statusRegister 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/tgreaderThe 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 |
| str | — | Account name (default: configured default) |
| str | — | RegExp pattern to filter by title/username (max 200 chars) |
| 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 |
| str | — | Channel |
| str | — | Account name (default: configured default) |
| int | 20 | Max messages when |
| str | — | ISO 8601 datetime — read messages before this date |
| 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-mcpConfiguration
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 cachesTest 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-versionSecurity
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 safelyConfig validation — full type checking on load; malformed config raises
ConfigErrorwith a clear message
License
MIT © Andrey Romanchuk
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ramich2077/tgreader-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server