Telethon Plus

io.github.psyb0tPublished by GitHub account psyb0tv0.7.1Updated Nov 7, 2026

Self-hosted MCP server: Telegram userbot control (Telethon) via HTTP and MCP.

Overview

AI-generated overview

Self-hosted Docker service that exposes a Telegram user account (Telethon userbot) to an assistant over MCP and a JSON HTTP API.

What you can do
  • Act on Telegram as the logged-in account through a shared tool registry served over MCP and REST
  • Log in once and reuse a stored session string instead of re-entering codes
  • Receive incoming messages live or via webhook
  • Apply throttling, flood guard and entity caching to stay under Telegram limits
  • Monitor metrics, flood state and health of the service
When to use it
Useful when you want an AI agent to read or act on your own Telegram account rather than a bot account, and you are willing to self-host a container and manage a session string.
Requirements
Docker (image psyb0t/telethon-plus) running locally; Telegram API_ID and API_HASH from my.telegram.org; a one-time interactive login (phone number, code, optional 2FA) producing a session string; environment variables TELETHON_API_ID, TELETHON_API_HASH, TELETHON_SESSION and TELETHON_AUTH_KEY; network access to Telegram; a /cache volume.
Before you install
The session string grants full access to the account, so anyone holding it is the account owner; keep it out of commits and chats. Without TELETHON_AUTH_KEY anyone who reaches the port acts as the account. The assistant can send and read messages as you, and Telegram may rate-limit or ban the account, so read the security and throttling guidance before exposing the port.

Installation

In SourceWeft

  1. Open Telethon Plus in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

docker-telethon-plus

[CI] [version] [license] [Docker Pulls]

Your Telegram account, but it takes HTTP requests. Wraps Telethon, the real MTProto userbot client and not that neutered Bot API garbage, behind a JSON HTTP API and a Model Context Protocol endpoint.

Same tools, two doors. POST some JSON, or point your AI agent at /mcp/ and let it go nuts. Either way it's talking to Telegram as you, with full account access.

One login. One session string. Never type a code again.

Table of Contents

Documentation

The full documentation is at psyb0t.github.io/docker-telethon-plus.

You want toRead
Log in once and get the container answeringGetting started
Set an environment variable, a proxy or the portConfiguration
See every tool, its route and its parametersTools
Call the REST API: auth, responses, errors, examplesHTTP API
Hook up Claude, Codex or another agentMCP and agents
Receive incoming messages live or by webhookUpdates and webhooks
Keep the account from getting rate-limited or bannedThrottling and cache
Watch metrics, flood state and healthObservability
Lock it down before exposing itSecurity
Fix a startup error or a failing callTroubleshooting
Change the code, run the tests, cut a releaseDevelopment

How it works

+-------------------+        +-----------------------+|  Any HTTP client  | -----> |  REST  /api/...       | --++-------------------+        +-----------------------+   |                                                         |   +-----------+        Telegram+-------------------+        +-----------------------+   +-> |  Telethon | <----> Servers|  MCP-aware agent  | -----> |  /mcp  (Streamable    | --+   +-----------+       (MTProto)|  (Claude, etc.)   |        |   HTTP transport)     |+-------------------+        +-----------------------+

One Telethon client. One async lock. Both surfaces share the same tool registry, so there is no duplication, no weird state, no bullshit. On top of that sits a flood guard (per-method buckets, per-chat gaps, adaptive backoff and an entity cache) that keeps the account under Telegram's limits; Throttling and cache has the details.

Quick start

Get API_ID / API_HASH from https://my.telegram.org/apps, then log in once. Telegram makes you prove you're a human once: phone number, login code, optionally 2FA. The login prints a session string:

bash
docker run --rm -it \  -e TELETHON_API_ID=123456 \  -e TELETHON_API_HASH=your-api-hash \  psyb0t/telethon-plus login

Then run it with that string:

yaml
services:  telethon-plus:    image: psyb0t/telethon-plus    ports:      - "127.0.0.1:8080:8080"    environment:      TELETHON_API_ID: "123456"      TELETHON_API_HASH: "your-api-hash"      TELETHON_SESSION: "1Aa...long-string-from-login..."      TELETHON_AUTH_KEY: "a-long-random-string"    volumes:      - telethon-cache:/cache    restart: unless-stopped
volumes:  telethon-cache:
bash
export TELETHON_AUTH_KEY=a-long-random-string  # the key from the compose filecurl -H "Authorization: Bearer $TELETHON_AUTH_KEY" http://127.0.0.1:8080/api/me

The session string is full account access. Whoever has it is you. Don't commit it, don't paste it in Slack, don't tattoo it anywhere. Without TELETHON_AUTH_KEY, anyone who reaches the port is you too. Read Security before exposing it.

From a checkout, make login writes the session string into .env and make run starts the container. Getting started has every step.

Agent integrations

The skill works in any agent that reads .agents/skills/ (such as peen), and installs natively in the clients below.

Claude Code

bash
claude plugin marketplace add psyb0t/agentsclaude plugin install telethon-plus@psyb0t

Claude Code prompts for the telethon-plus server URL and, if auth is enabled, the bearer token, which it keeps in your OS keychain.

Codex

bash
codex plugin marketplace add psyb0t/agentscodex plugin add telethon-plus@psyb0t

Installed via the marketplace, the skill invokes as $telethon-plus:telethon-plus. Codex also picks the skill up automatically with no install in any repo containing .agents/skills/, where it invokes as plain $telethon-plus.

OpenClaw

The skill is published to ClawHub on every release:

bash
openclaw skills install @psyb0t/telethon-plus

For MCP clients that speak local stdio, the @psyb0t/telethon-plus plugin bridges to the service's /mcp/ endpoint:

bash
openclaw plugins install clawhub:@psyb0t/telethon-plus

Then set TELETHON_PLUS_URL (and TELETHON_AUTH_KEY if the server requires auth).

License

Copyright (C) 2026 Ciprian Mandache. Licensed under the GNU General Public License, version 2 or later. The image includes hachoir, which is GPL v2 only, so the image as a whole is distributed under GPL v2.

Source: README.md at commit ab798ba

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the package type cannot run in the sandbox.

Version history

2
  1. v0.7.1LatestNov 7, 2026
  2. v0.5.7Sep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts