MCP, MCP server
Mcp Telegram
A local Telegram mirror and MCP server for personal AI agents.
Compatibility: Not stated.
Grade B
Minor issues only, no Medium or High. Worth a quick look at the findings below before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
PERMISSION_DELETE_FILES NETWORK_NO_FIXED_HOST SECRETS_PATH_DOTENV SECRETS_ENV_READ OBFUSCATION_FILE_OVER_READ_CAP OBFUSCATION_FILE_CAP_REACHED
Why this grade
- PERMISSION_DELETE_FILES Low
Contains a call that can delete files.
deploy/telegram_qr_login.py, line 150
os.system("clear" if os.name == "posix" else "cls") - NETWORK_NO_FIXED_HOST Low
Makes a network call whose host is not written as a fixed address.
deploy/scripts/healthcheck_http.py, line 26
with cast(HTTPResponse, urllib.request.urlopen(url, timeout=5)) as response: - SECRETS_PATH_DOTENV Low
Mentions a .env file.
deploy/telegram_qr_login.py, line 83
print("TELEGRAM_API_ID or TELEGRAM_API_HASH is not set in .env") - SECRETS_ENV_READ Note
Reads an environment variable whose name contains KEY, SECRET, TOKEN, PASSWORD or CREDENTIAL.
deploy/telegram_qr_login.py, line 80
two_fa_password = os.getenv("TELEGRAM_2FA_PASSWORD", "") - OBFUSCATION_FILE_OVER_READ_CAP Note
A file was over the read cap and was not fully read.
uv.lock, line 1
version = 1 - OBFUSCATION_FILE_CAP_REACHED Note
The 400 file cap was reached before every file was read.
uv.lock, line 1
version = 1
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
can delete files.
PERMISSION_DELETE_FILES
deploy/telegram_qr_login.py, line 150
os.system("clear" if os.name == "posix" else "cls")
scripts/check_packaging_smoke.py, line 12
subprocess.run(command, cwd=cwd, env=env, check=True)
scripts/check_runtime_seams.py, line 44
result = subprocess.run(
Show more
scripts/ci_pytest_runner.py, line 36
subprocess.run(args, check=False)
scripts/ci_pytest_runner.py, line 84
process = subprocess.Popen(
scripts/ci_pytest_runner.py, line 108
shutil.rmtree(work_dir)
scripts/ci_pytest_runner.py, line 121
shutil.rmtree(work_dir / f"a{attempt}")
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Concern
can reach a host that is not written as a fixed address.
NETWORK_NO_FIXED_HOST
deploy/scripts/healthcheck_http.py, line 26
with cast(HTTPResponse, urllib.request.urlopen(url, timeout=5)) as response:
src/mcp_telegram/errors.py, line 43
f'Topic "{topic_name}" resolved, but Telegram rejected thread fetch ({detail}).',
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
deploy/telegram_qr_login.py, line 80
two_fa_password = os.getenv("TELEGRAM_2FA_PASSWORD", "")
deploy/telegram_qr_login.py, line 83
print("TELEGRAM_API_ID or TELEGRAM_API_HASH is not set in .env")
deploy/telegram_qr_login.py, line 211
"Run this script in a normal TTY or set TELEGRAM_2FA_PASSWORD in .env."
Show more
src/mcp_telegram/telegram.py, line 21
"""Reads TELEGRAM_* settings from environment or ``.env`` in CWD."""
src/mcp_telegram/telegram.py, line 23
model_config = SettingsConfigDict(env_prefix="TELEGRAM_", env_file=".env")
.gitignore, line 1
.env
AGENTS.md, line 246
- Treat session files and `.env` credentials as secrets.
README.md, line 271
4. Create `/opt/docker/mcp-telegram/.env`.
deploy/AGENTS.md, line 9
- `.env` contains Telegram API credentials and must stay private.
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Note
a file was over the read cap and was not fully read. the file cap was reached before every file was read.
OBFUSCATION_FILE_OVER_READ_CAP OBFUSCATION_FILE_CAP_REACHED
uv.lock, line 1
version = 1
src/mcp_telegram/sync_db.py, line 1
import fcntl
tests/test_daemon_api.py, line 1
"""Tests for DaemonAPIServer - Unix socket request handlers (Plan 29-01, Task 2).
Show more
tests/test_mcp_test_client.py, line 1
from __future__ import annotations
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit 5d8cb6e7c073. can delete files. can reach a host that is not written as a fixed address. reads a credential or environment file. a file was over the read cap and was not fully read. the file cap was reached before every file was read.
Date and source
Date checked:
github.com
Commit graded: 5d8cb6e7c073b1d58a7f51535d23a553b17d2b6b
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.