Telegram Context MCP
Read Telegram through your own account from an MCP client. Find permitted conversations, search and read original posts, navigate topics and replies, and inspect albums, reactions, and polls. Connect several local clients to one session-owning process, or run standalone STDIO.
Supports Windows, macOS, and Linux with Python 3.12–3.15. The server uses Telethon and preserves original text, dates, links, entities, and available metadata. It does not send messages, join channels, mark messages read, or download attachment bytes.
Install and log in
Install uv, then run:
uv tool install --python 3.12 telegram-context-mcp==0.3.0
telegram-mcp --version
telegram-mcp login
telegram-mcp configure
telegram-mcp status
These examples target release 0.3.0; check PyPI for published versions. Use the source setup for unreleased revisions. Upgrading from 0.2? Read the response migration guide, then restart the server and refresh your client's tool schemas.
Obtain api_id and api_hash from my.telegram.org, then
enter them in the local login prompt with your phone number, login code, and any 2FA
password. Do not send login codes or credentials to the model.
configure lets you choose folders/chats and separately enable all-chat access,
explicit public-channel reads, or public-channel discovery. Enter keeps the current
value. By default, no message sources are permitted. status should report
authorized: true after login. Use catalog to find folder and chat IDs locally.
The package name is telegram-context-mcp; the executable is telegram-mcp.
You can also run a pinned version without installing a persistent command:
uvx --python 3.12 --from telegram-context-mcp==0.3.0 telegram-mcp --version
Connect your clients
Start one server in a terminal and leave it running:
telegram-mcp serve --transport http
It listens only on http://127.0.0.1:8765/mcp. Configure each MCP client to launch
telegram-mcp connect over STDIO. This small proxy reads the local token and connects
to the existing server; it does not start a server or silently fall back to another
Telegram session. Closing a client leaves the shared server running.
Client examples
cover Codex, Claude Desktop, Claude Code, Cursor, and VS Code, including a pinned uvx
command and executable paths for Windows.
For one client, standalone STDIO is still available: configure that client to launch
telegram-mcp serve. Use either mode for a given session. Stop the session-owning
process before running local login, configure, catalog, or status; use the
get_status MCP tool while the server is running.
All shared clients use the same Telegram account, read permissions, and cursor store.
The HTTP bearer token is created in the local user profile and read by connect;
do not paste it into client configuration. This is a local, single-user integration.
Tools
| Tool | Purpose |
|---|---|
get_status |
Authorization, connection, permitted sources |
list_folders |
Folders, IDs, order, inclusion/exclusion rules |
list_chats |
Chats filtered by name, type, or folders |
get_chat |
Description and linked discussion group |
search_public_channels |
Find public broadcast channels by query; metadata only |
get_similar_channels |
Find similar public channels for one specified public source; metadata only |
search_messages |
Search by keywords, chats, folders, dates, sender, media type, or links |
get_history |
Chat or forum-topic history over a time range, in either order |
list_topics |
Forum topics with navigation references, optional title query, and pagination |
get_pinned_messages |
Chat-wide or forum-topic pinned messages, newest first |
get_messages |
Messages by links/IDs with authors, dates, attachments, counters, reactions, and polls |
get_album |
Members of a selected album within a bounded neighborhood of one message |
get_context |
Messages before/after an anchor and a chain of parent replies |
get_thread |
Comments on a channel post or replies in a group thread |
First tasks
- Ask the client to list the folders you permitted and read a selected conversation over a timezone-qualified date range.
- Enable discovery to find candidate public channels, select a source, then read its posts with a separate read permission.
- Follow
next_cursorwith the original filters until it isnull. An empty page can still have a cursor. Respectretry_after_secondsafter a temporary failure. - For
CATALOG_LOADING, repeat the original call after the reported delay. The server retains catalog progress; explicit reads independent of folders skip that scan. - Use
get_messageswithnext_text_offsetto finish long text. Album completeness is explicitly unknown; each member remains a separate source message.
Usage and response contracts explain filters, cursor recovery, topics, public-channel discovery, and message metadata. Message text is data for the calling agent, not an instruction source.
Configuration and troubleshooting
Configuration, Telegram sessions, and the HTTP token live outside the repository in
platform-specific user directories. The login command prints the configuration path.
Use telegram-mcp --config /absolute/private/config.toml COMMAND to select another file;
pass the same file to the shared server and each proxy.
On POSIX, private files use restrictive permissions. On Windows, protect them with
user-profile filesystem ACLs; Unix 0600 is not an ACL guarantee. A Telegram session
contains account access credentials, and the underlying account can do more than the
server's read-only tools allow.
Run from source
git clone https://github.com/egor-fedorov/telegram-mcp.git
cd telegram-mcp
uv sync --locked --python 3.12
uv run --locked telegram-mcp login
uv run --locked telegram-mcp configure
uv run --locked telegram-mcp serve --transport http
For client commands, use the checkout's .venv/bin/telegram-mcp on POSIX or
.venv\Scripts\telegram-mcp.exe on Windows, with connect as the argument.
Use an absolute executable path so clients do not depend on their working directory.
Development
Run make check for formatting, lint, types, architecture checks, and offline tests.
Contributing
includes equivalent commands for Windows without Make. Changes use focused pull requests
and squash merges after CI. See the
roadmap,
architecture,
changelog, and
release procedure.
The 0.3 validation record
reports payload-size measurements and the scope of selected-source live checks.
The code is MIT licensed. This does not grant rights to Telegram content. Secret chats are unsupported; attachment downloads, sending, administration, and persistent archives are separate future work. Use source material you are entitled to share with your chosen model and follow Telegram's content terms.
Metadata
Release files for telegram-context-mcp 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| telegram_context_mcp-0.3.0.tar.gz | 248.0 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| telegram_context_mcp-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 327.0 kB
Release files / telegram_context_mcp-0.3.0.tar.gz
| Download URL | telegram_context_mcp-0.3.0.tar.gz |
|---|---|
| Size | 248.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6f22b5dcaa902eaad50f8979e7d922da13e278b982a8449c93f81ac84f25b7f2
|
|
BLAKE2b-256 checksum How to use checksums |
15441cfbfd282c84b67c58ed98c2c60c87e2062fb73de9e31b7c1bd342828510
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logRelease files / telegram_context_mcp-0.3.0-py3-none-any.whl
| Download URL | telegram_context_mcp-0.3.0-py3-none-any.whl |
|---|---|
| Size | 78.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
cc44c521c7598b54b2b3d9fb3ccdd71a09361584933165b46d878cb0de55b37a
|
|
BLAKE2b-256 checksum How to use checksums |
e0e1252821c6acc639f87fc16c6e7a0d1f01053412a85589fe4a24775ca570dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logSecurity for telegram-context-mcp 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for telegram_context_mcp-0.3.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.