Telegram MCP Server
A local-first Model Context Protocol server that gives an AI agent real Telegram-account access without handing it the keys to your account. It starts read-only, hides write tools until you opt in, and runs over STDIO for desktop clients or Streamable HTTP at /mcp for managed deployments. Built on TDLib (via tdlight-java), so an agent can read and act on your actual account, not only a Bot API subset.
Package and access
Local package with source-attributed installation metadata. Koskamo does not execute packages during review.
What you can do with it
- Read and act on actual Telegram accounts
- Send messages with idempotency keys
- Manage isolated multi-account sessions
Source and maintenance
- Maintenance checked
Packages and installation
Source-provided package data. Koskamo has not executed or live-probed this package.
ghcr.io/tolboy/telegram-mcp-tdlib:1.18.0-stdio
{
"transport": "stdio",
"identifier": "ghcr.io/tolboy/telegram-mcp-tdlib:1.18.0-stdio",
"registryType": "oci",
"environmentVariables": [
{
"name": "TDLIB_API_ID",
"format": "string",
"isRequired": true,
"description": "Telegram API ID from my.telegram.org"
},
{
"name": "TDLIB_API_HASH",
"format": "string",
"isRequired": true,
"description": "Telegram API hash from my.telegram.org"
},
{
"name": "TDLIB_PHONE_NUMBER",
"format": "string",
"description": "Telegram phone number; omit after preparing a persisted session when using QR authentication"
},
{
"name": "TDLIB_AUTH_CODE",
"format": "string",
"description": "One-time Telegram login code for a fresh headless container"
},
{
"name": "TDLIB_2FA_PASSWORD",
"format": "string",
"description": "Telegram 2FA password when the account requires it"
},
{
"name": "MCP_READ_ONLY",
"format": "string",
"default": "true",
"description": "Keep true for safe first use"
},
{
"name": "MCP_TOOL_PROFILE",
"format": "string",
"default": "reader",
"description": "Tool surface: reader, inbox, community-admin, research, or all"
}
]
}Tools
Reported by the attributed source; not independently observed by Koskamo.
Connect from your client
Each snippet configures the same source-provided package; replace placeholders before use.
Cursor
{
"mcpServers": {
"telegram-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TDLIB_API_ID=<YOUR_TDLIB_API_ID>",
"-e",
"TDLIB_API_HASH=<YOUR_TDLIB_API_HASH>",
"-e",
"TDLIB_PHONE_NUMBER=<YOUR_TDLIB_PHONE_NUMBER>",
"-e",
"TDLIB_AUTH_CODE=<YOUR_TDLIB_AUTH_CODE>",
"-e",
"TDLIB_2FA_PASSWORD=<YOUR_TDLIB_2FA_PASSWORD>",
"-e",
"MCP_READ_ONLY=<YOUR_MCP_READ_ONLY>",
"-e",
"MCP_TOOL_PROFILE=<YOUR_MCP_TOOL_PROFILE>",
"ghcr.io/tolboy/telegram-mcp-tdlib:1.18.0-stdio"
],
"env": {
"TDLIB_API_ID": "<YOUR_TDLIB_API_ID>",
"TDLIB_API_HASH": "<YOUR_TDLIB_API_HASH>",
"TDLIB_PHONE_NUMBER": "<YOUR_TDLIB_PHONE_NUMBER>",
"TDLIB_AUTH_CODE": "<YOUR_TDLIB_AUTH_CODE>",
"TDLIB_2FA_PASSWORD": "<YOUR_TDLIB_2FA_PASSWORD>",
"MCP_READ_ONLY": "<YOUR_MCP_READ_ONLY>",
"MCP_TOOL_PROFILE": "<YOUR_MCP_TOOL_PROFILE>"
}
}
}
}Cline
{
"mcpServers": {
"telegram-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TDLIB_API_ID=<YOUR_TDLIB_API_ID>",
"-e",
"TDLIB_API_HASH=<YOUR_TDLIB_API_HASH>",
"-e",
"TDLIB_PHONE_NUMBER=<YOUR_TDLIB_PHONE_NUMBER>",
"-e",
"TDLIB_AUTH_CODE=<YOUR_TDLIB_AUTH_CODE>",
"-e",
"TDLIB_2FA_PASSWORD=<YOUR_TDLIB_2FA_PASSWORD>",
"-e",
"MCP_READ_ONLY=<YOUR_MCP_READ_ONLY>",
"-e",
"MCP_TOOL_PROFILE=<YOUR_MCP_TOOL_PROFILE>",
"ghcr.io/tolboy/telegram-mcp-tdlib:1.18.0-stdio"
],
"env": {
"TDLIB_API_ID": "<YOUR_TDLIB_API_ID>",
"TDLIB_API_HASH": "<YOUR_TDLIB_API_HASH>",
"TDLIB_PHONE_NUMBER": "<YOUR_TDLIB_PHONE_NUMBER>",
"TDLIB_AUTH_CODE": "<YOUR_TDLIB_AUTH_CODE>",
"TDLIB_2FA_PASSWORD": "<YOUR_TDLIB_2FA_PASSWORD>",
"MCP_READ_ONLY": "<YOUR_MCP_READ_ONLY>",
"MCP_TOOL_PROFILE": "<YOUR_MCP_TOOL_PROFILE>"
}
}
}
}VS Code
{
"servers": {
"telegram-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TDLIB_API_ID=<YOUR_TDLIB_API_ID>",
"-e",
"TDLIB_API_HASH=<YOUR_TDLIB_API_HASH>",
"-e",
"TDLIB_PHONE_NUMBER=<YOUR_TDLIB_PHONE_NUMBER>",
"-e",
"TDLIB_AUTH_CODE=<YOUR_TDLIB_AUTH_CODE>",
"-e",
"TDLIB_2FA_PASSWORD=<YOUR_TDLIB_2FA_PASSWORD>",
"-e",
"MCP_READ_ONLY=<YOUR_MCP_READ_ONLY>",
"-e",
"MCP_TOOL_PROFILE=<YOUR_MCP_TOOL_PROFILE>",
"ghcr.io/tolboy/telegram-mcp-tdlib:1.18.0-stdio"
],
"env": {
"TDLIB_API_ID": "<YOUR_TDLIB_API_ID>",
"TDLIB_API_HASH": "<YOUR_TDLIB_API_HASH>",
"TDLIB_PHONE_NUMBER": "<YOUR_TDLIB_PHONE_NUMBER>",
"TDLIB_AUTH_CODE": "<YOUR_TDLIB_AUTH_CODE>",
"TDLIB_2FA_PASSWORD": "<YOUR_TDLIB_2FA_PASSWORD>",
"MCP_READ_ONLY": "<YOUR_MCP_READ_ONLY>",
"MCP_TOOL_PROFILE": "<YOUR_MCP_TOOL_PROFILE>"
}
}
}
}Claude Desktop
{
"mcpServers": {
"telegram-mcp-server": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"TDLIB_API_ID=<YOUR_TDLIB_API_ID>",
"-e",
"TDLIB_API_HASH=<YOUR_TDLIB_API_HASH>",
"-e",
"TDLIB_PHONE_NUMBER=<YOUR_TDLIB_PHONE_NUMBER>",
"-e",
"TDLIB_AUTH_CODE=<YOUR_TDLIB_AUTH_CODE>",
"-e",
"TDLIB_2FA_PASSWORD=<YOUR_TDLIB_2FA_PASSWORD>",
"-e",
"MCP_READ_ONLY=<YOUR_MCP_READ_ONLY>",
"-e",
"MCP_TOOL_PROFILE=<YOUR_MCP_TOOL_PROFILE>",
"ghcr.io/tolboy/telegram-mcp-tdlib:1.18.0-stdio"
],
"env": {
"TDLIB_API_ID": "<YOUR_TDLIB_API_ID>",
"TDLIB_API_HASH": "<YOUR_TDLIB_API_HASH>",
"TDLIB_PHONE_NUMBER": "<YOUR_TDLIB_PHONE_NUMBER>",
"TDLIB_AUTH_CODE": "<YOUR_TDLIB_AUTH_CODE>",
"TDLIB_2FA_PASSWORD": "<YOUR_TDLIB_2FA_PASSWORD>",
"MCP_READ_ONLY": "<YOUR_MCP_READ_ONLY>",
"MCP_TOOL_PROFILE": "<YOUR_MCP_TOOL_PROFILE>"
}
}
}
}Let your agent find its tools
Find servers like Telegram MCP Server from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.