Skip to content

Releases

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 05 Oct 13:12

Full Changelog: v0.4.4...v0.5.0

v0.4.4

Choose a tag to compare

@github-actions github-actions released this 04 Oct 19:13

Full Changelog: v0.4.3...v0.4.4

v0.4.3

Choose a tag to compare

@github-actions github-actions released this 27 Sep 06:48

Full Changelog: v0.4.2...v0.4.3

v0.4.2

Choose a tag to compare

@thenavidm thenavidm released this 08 Sep 15:26

Fixes the bug that made the hosted connector unusable.

A server instance is now built per session. One McpServer was connected to every new transport, which the SDK refuses, so the process crashed the moment a client opened a second session. A hand-run curl only ever opens one, which is why it passed every test and returned 502s against a real client.

Also in 0.4.1: a bare GET answers 405 rather than 400, so clients probing the endpoint before opening a session no longer read it as "not an MCP server".

Profile Tools Every turn
core (default) 13 2,218
read 31 4,673
full 74 11,643
npm install -g @thenavidm/telegram-mcp-cli

Full Changelog: v0.4.0...v0.4.2

v0.4.0

Choose a tag to compare

@thenavidm thenavidm released this 07 Sep 20:01

The channel surface, which is the part nobody else has.

telegram-mcp --channel pushes real Telegram messages into a Claude Code session that is already open. The official Telegram channel is a BotFather bot and can only see messages sent to that bot. This one is backed by MTProto, so an event can come from any chat you are actually in.

Nothing forwards until a chat is allowed. allow_chat opts one in. That default is deliberate: without it every message in every group you are in becomes model input, which is both expensive and a prompt-injection surface.

Personas. Each allowed chat can carry a name, delivered on the event as persona, so one session can answer as a different assistant depending on which chat a message came from.

Also in this release: the channel keeps its MCP surface up when Telegram is unreachable rather than exiting, and the publish workflow no longer fails a tag when the npm token is unset or the version is already published.

Profile Tools Every turn
core (default) 13 2,218
read 31 4,673
full 74 11,643
CLI all 74 175
npm install -g @thenavidm/telegram-mcp-cli

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@thenavidm thenavidm released this 07 Sep 19:46

Full capability coverage.

74 tools, up from 54. Forum topics, inline buttons, stickers, GIFs, albums, contact cards, transcription, folder CRUD, contact import and export, and privacy writes.

Several accounts. TELEGRAM_SESSION_<LABEL> adds one, and every account-scoped tool takes an optional account.

HTTP transport. telegram-mcp --http for an always-on process. Loopback and a bearer token by default, because a process holding a session string should not be reachable from the network.

core is still 13 tools and still 2,218 tokens. Third release running where the default did not move.

Profile Tools Every turn
core (default) 13 2,218
read 31 4,673
full 74 11,643
CLI all 74 175

For comparison, measured the same way on the same day: the leading Telegram MCP server is 127 tools at 21,096 tokens, with no CLI and no way to load fewer.

npm install -g @thenavidm/telegram-mcp-cli

v0.2.0

Choose a tag to compare

@thenavidm thenavidm released this 07 Sep 19:35

Full capability coverage, without moving what the default costs.

54 tools, up from 13. Contacts, groups and admin, reactions, pins, polls, scheduled messages, archive, mute, folders, drafts, profile and privacy.

core is still 13 tools and still 2,218 tokens. Every new tool landed in full, so connecting this did not get more expensive. Measured before and after with a tokeniser, not assumed.

Profile Tools Every turn
core (default) 13 2,218
read 24 3,710
full 54 8,502
CLI all 54 175

Capability goes on arguments, not extra tools. get_participants filters to admins or banned, set_admin demotes with promote: false, set_banned unbans, pin unpins, react clears, archive and mute both reverse, save_draft clears with an empty string. The same ground the leading Telegram MCP server covers with 127 definitions takes 54 here, at 8,502 tokens against its 21,096.

All six new irreversible tools are guarded like the rest: confirmation plus TELEGRAM_ALLOW_DESTRUCTIVE=1.

npm install -g @thenavidm/telegram-mcp-cli

v0.1.0

Choose a tag to compare

@thenavidm thenavidm released this 07 Sep 18:57

First release.

Telegram MCP server and CLI on a real account over MTProto, not a bot. Every chat, full history, search, sending, media and contacts.

Both surfaces from one tool array. telegram-mcp for AI clients, telegram-cli for the shell. CLI flags are derived from the same Zod schemas an MCP client receives as JSON Schema, so they cannot drift.

Tool profiles, because context is rent. Measured with a tokeniser against a real tools/list handshake: core is 13 tools and 2,218 tokens, read is 7 and 1,241. Most Telegram MCP servers ship 80+ tools, which is 15,000 to 25,000 tokens on every turn.

Responses are projected, not dumped. A raw MTProto message has 40+ fields of mostly nulls. Chats and messages come back as flat rows, bodies truncated to previews, lists paginated with a cursor, and --fields cuts further. Roughly 30 tokens per chat row against 300 raw.

Writes are on and guarded. delete refuses without confirmation and is off entirely unless TELEGRAM_ALLOW_DESTRUCTIVE=1. TELEGRAM_READ_ONLY=1 never registers a write tool at all. Control, zero-width and bidi characters are stripped from inbound message text.

npm install -g @thenavidm/telegram-mcp-cli

Setup is in INSTALL.md.