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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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