
Telegram MCP Server (chigwell)
Full Telegram user-account MCP via MTProto: read chats, manage groups, send messages
Add to your client
Copy the config for your MCP client and paste it into its config file.
git clone https://github.com/chigwell/telegram-mcp && cd telegram-mcp && uv sync && uv run main.pyPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"telegram-mcp-server-chigwell": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/telegram-mcp",
"run",
"main.py"
],
"env": {
"TELEGRAM_API_ID": "<your-telegram-api-id>",
"TELEGRAM_API_HASH": "<your-telegram-api-hash>",
"TELEGRAM_SESSION_STRING": "<your-generated-session-string>"
}
}
}
}Before you start
- Python 3.10+ (uv recommended for dependency management)
- A Telegram account (this controls a real user account, not a bot)
- TELEGRAM_API_ID and TELEGRAM_API_HASH obtained from https://my.telegram.org/apps
- A Telegram session string generated with the bundled session_string_generator.py (QR or phone login)
- An MCP client such as Claude Desktop or Cursor
About Telegram MCP Server (chigwell)
Telegram MCP Server (chigwell) connects MCP clients to a full Telegram user account — not a bot — using the Telethon library over Telegram's MTProto protocol. Because it authenticates as your own account, it can see and act on everything you can: private chats, groups, channels, contacts, and account settings.
It exposes a very large tool surface (60+ tools, documented as 80+) grouped into messaging (send, schedule, edit, delete, forward, pin, reply, search, polls, reactions), chat and group management (create groups/channels, join/leave, invite users, manage admins, bans, permissions, slow mode, topics, invite links), contacts (add, delete, block/unblock, import/export), media (send/download files, voice notes, stickers, GIFs), and profile/folder/draft management.
Authentication uses a Telegram session string generated by a bundled helper script (session_string_generator.py) via QR or phone login, so you sign in once and store the session rather than re-entering codes. It supports multiple accounts routed by label, and sanitizes returned content to reduce prompt-injection risk.
Tools & capabilities (11)
get_chats / list_chatsPaginated/filterable list of chats with metadata
send_messageSend a message to a user, group, or channel
edit_message / delete_messageEdit or delete an existing message
forward_messageForward a message to another chat
search_messagesSearch message history across chats
create_group / create_channelCreate new groups or channels
invite_user / manage admins, bans, permissionsGroup administration: invites, admin rights, bans, permissions, slow mode
list_contacts / add_contact / block / unblockContact management including block/unblock and import/export
send_file / download_mediaSend files/voice/stickers and download media from messages
schedule_message / pin_message / manage reactionsSchedule, pin, and react to messages
folders & drafts toolsCreate/update/reorder chat folders and manage drafts
When to use it
- Use it when you want an assistant to read and summarize your Telegram chats and channels
- Use it to send, schedule, or forward messages and media from your own account
- Use it to administer groups/channels — invites, admins, bans, permissions, topics
- Use it to manage contacts in bulk (add, block, import/export)
- Use it across multiple Telegram accounts routed by label from one MCP server
- Use it when bot-API limitations block you and you need full user-account (MTProto) access
Quick setup
- 1Register an app at my.telegram.org/apps to get TELEGRAM_API_ID and TELEGRAM_API_HASH
- 2Clone the repo and install dependencies with uv
- 3Run session_string_generator.py and sign in (QR or phone) to produce a session string
- 4Put the API credentials and session string in a .env file
- 5Add the server to your MCP client config (run main.py) and restart the client
- 6Verify by calling get_chats or list_chats
Security notes
Connects as a full Telegram user account, so the session string grants complete access to your account — treat it like a password and never share it. Pin to a release tag/commit when cloning to avoid pulling unreviewed upstream changes.
Telegram MCP Server (chigwell) FAQ
Is this a bot or my real account?
It logs in as your real Telegram user account via MTProto/Telethon, so it has full access your account has — not the limited Telegram Bot API surface.
Where do I get the API credentials?
Create an application at https://my.telegram.org/apps to obtain your API_ID and API_HASH; there is no charge.
How does login work — do I re-enter a code every time?
No. You generate a session string once with the bundled session_string_generator.py (QR or phone), store it in .env, and it reuses that session.
Is there an npm package?
No — it's a Python project installed from source with uv; there is no npm distribution.
Can it manage groups, not just send messages?
Yes. It includes group/channel creation, invites, admin management, bans, permissions, slow mode, topics, and invite links.
Alternatives to Telegram MCP Server (chigwell)
Connect your personal WhatsApp: search, read and send messages and media locally
Powerful Slack MCP with stdio/SSE/HTTP, DMs, group DMs and no-admin token auth
Gmail MCP with auto OAuth: send, search, label and manage email
Compare Telegram MCP Server (chigwell) with: