Free key

Give your agent Telegram in five lines of config

Six of the eighteen Telegram servers in the official MCP registry ask you to log in as yourself. To read public channels you need a config block and a key.

19 Sept 2026

Of the eighteen Telegram servers listed in the official MCP registry, six ask you to log in as yourself: an api_id, an api_hash, a phone number, a session file kept on disk (read from the registry on 18 September 2026). From then on the agent acts with your account's powers and your account's risk.

If what you need is to read public channels, there is a shorter path.

The five lines

{
  "mcpServers": {
    "tgatlas": {
      "command": "npx",
      "args": ["-y", "tgatlas-mcp"],
      "env": { "TELEGRAM_API_KEY": "<your key>" }
    }
  }
}

That block goes into your client's MCP config: claude_desktop_config.json for Claude Desktop, .mcp.json in the project root for Claude Code, its own file for every other client. No install step, no build, no clone — npx fetches the package on first run.

The key comes from the listing on RapidAPI, and the free plan carries 2,500 requests and 2,500 lookups a month — enough to find out whether this fits your project before you pay anything.

What the agent gets

Three tools, all declared read-only to the client:

ToolWhat it answersParameters
telegram_channel who this channel is: title, description, exact subscriber count, verification and scam flags, posting cadence channel, format, cadence
telegram_similar_channels which channels Telegram itself recommends alongside this one channel, format, enrich
telegram_search_channels Telegram's own global search over public channels and groups query, format

Every tool takes format, so you can ask for Markdown when a human will read the answer and JSON when your code will. That one parameter removes the usual glue layer between «the agent showed me something» and «my program can use it».

Checking it works without a client

The server speaks JSON-RPC over stdio, so a pipe is enough:

REQ='{"jsonrpc":"2.0","id":1,"method":"initialize","params":'
REQ=$REQ'{"protocolVersion":"2025-06-18","capabilities":{},'
REQ=$REQ'"clientInfo":{"name":"probe","version":"1"}}}'

printf '%s\n' "$REQ" | TELEGRAM_API_KEY=your_key npx -y tgatlas-mcp

What comes back on stdout, with line breaks added to fit the page:

{"jsonrpc":"2.0","id":1,"result":{
  "protocolVersion":"2025-06-18",
  "capabilities":{"tools":{}},
  "serverInfo":{"name":"tgatlas","title":"tgAtlas — public Telegram channels",
                "version":"0.1.2"},
  "instructions":"Public Telegram channels. telegram_channel for a profile and
    whether it is still alive, telegram_similar_channels to discover neighbours
    Telegram itself groups together, telegram_search_channels to find a starting
    point. Message contents are out of scope."}}

The version and the host go to stderr, not stdout, so a client that reads only stdout sees clean JSON. If that response comes back, the config block above will work in any client. Run on 18 September 2026 against tgatlas-mcp@0.1.2.

What it costs you in calls

The handshake is free. initialize and tools/list are answered inside the server and never reach Telegram, so an agent that connects and lists capabilities costs nothing. You pay when a tool actually looks something up, which is the behaviour you want from anything you let an autonomous agent hold.

telegram_similar_channels takes enrich, and it is worth knowing what it does before you turn it on: enriching each recommendation with an exact subscriber count costs one lookup per channel. The server caps that at twelve per call, so one question cannot quietly turn into a hundred.

Where this is registered

The package is tgatlas-mcp on npm, and the server is listed in the official MCP registry as io.github.starnikovoleg/tgatlas. Either one is a fine place to check which version is current before you pin it.

The part worth repeating

A read-only server over public data cannot post as you, cannot join anything, and cannot get your account limited. When you hand tools to something that decides on its own what to call next, that distinction stops being philosophical. The timer that punishes an over-eager client is the same story one layer down.

Run the same measurements yourself

Free tier, no card. Every figure above came from one endpoint on a weekly schedule.

Get a free API key

More notes