npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

tg-mcp

v1.3.0

Published

Local MCP server for your Telegram personal account — channels, digests, messaging, folders and more.

Readme

Telegram MCP Tools

npm version License: MIT Node.js

A local MCP server for Cursor, Claude, Codex, or any other client. It reads your Telegram subscriptions over MTProto (personal account, not a bot) and exposes channel posts to the agent for digests and natural-language questions like “what’s new in my Travel folder this week?”

Features

  • 21 MCP tools across domains: channels (create/rename/join/leave/discover/search), subscriptions (list/archive/mute), folders, messages, send
  • Post links — every message includes a url field (https://t.me/...)
  • Archived channels — included when listing subscriptions
  • QR login — scan from the terminal, no SMS or in-app codes

Requirements

Quick start (npm package)

Use this path if you consume the published package — no git clone needed.

1. Create a project directory and install the package

mkdir my-telegram-mcp && cd my-telegram-mcp
npm install tg-mcp
cp node_modules/tg-mcp/.env.example .env

2. Add API credentials to .env

TELEGRAM_API_ID=12345678
TELEGRAM_API_HASH=your_api_hash

3. Authorize (QR in terminal; session is saved to .env)

npx tg-mcp-auth

On your phone: Telegram → Settings → Devices → Link Desktop Device → scan the QR code. TELEGRAM_SESSION is written to .env automatically.

4. Connect MCP

Cursor

Add to .cursor/mcp.json in the same directory as .env:

{
  "mcpServers": {
    "telegram": {
      "command": "npx",
      "args": ["-y", "tg-mcp"]
    }
  }
}

The server loads .env from the current working directory (your project root). You don't need to duplicate env vars in mcp.json.

Reload Cursor after changing the config (Developer: Reload Window).

Claude Desktop

Open the config file: Settings → Developer → Edit Config

Add a telegram entry under mcpServers. Put credentials in env — Claude Desktop does not load .env from disk:

{
  "mcpServers": {
    "telegram": {
      "command": "npx",
      "args": ["-y", "tg-mcp"],
      "env": {
        "TELEGRAM_API_ID": "12345678",
        "TELEGRAM_API_HASH": "your_api_hash",
        "TELEGRAM_SESSION": "your_session_string"
      }
    }
  }
}

Copy the three values from .env after npx tg-mcp-auth. If you re-authorize, update TELEGRAM_SESSION here too.

Fully quit Claude Desktop (system tray → Exit), then relaunch. The connector appears under Connectors.


Development (git clone)

Use this path if you work from the repository — local src/, rebuilds, and MCP Inspector.

1. Clone and install

git clone https://github.com/ausievich/tg-mcp-tools.git
cd tg-mcp-tools
npm install
cp .env.example .env

2. Add API credentials to .env (same as above)

3. Build and authorize

npm run build
npm run auth

4. Connect MCP

Cursor

{
  "mcpServers": {
    "telegram": {
      "command": "npm",
      "args": ["run", "mcp"]
    }
  }
}

Run npm run build after code changes. npm run inspect builds and opens MCP Inspector for interactive tool testing.


MCP tools

| Tool | Purpose | | ----------------------------- | ---------------------------------------------------------------------------------------------------------- | | tg_create_channel | Create a new broadcast channel (title and optional description) | | tg_set_channel_title | Rename a channel or group (requires admin rights) | | tg_get_similar_channels | Telegram-recommended similar public channels (by channel, folder, or all subscriptions) | | tg_search_channels | Global search for public channels/groups by name or post content | | tg_join_channel | Subscribe to a channel/group by @username, id, or invite link | | tg_leave_channel | Unsubscribe from a channel or leave a group | | tg_mute_chats | Mute notifications for chats/channels (forever by default) | | tg_unmute_chats | Restore notifications for muted chats/channels | | tg_get_folders | Telegram chat folders (tabs) with id and name | | tg_create_folder | Create a folder with channels and filter rules | | tg_edit_folder | Update an existing folder: replace included chats or rename it | | tg_get_dialogs | List channels, groups, and chats; optional folder filter | | tg_get_messages | Posts from one channel; pagination (beforeMessageId), date filters (sinceHours, minDate) | | tg_get_post_comments | Comments on a channel post by t.me URL or channelId + messageId; pagination (offsetId, offsetDate) | | tg_search_messages | Full-text search in one chat across entire history | | tg_search_in_folder | Search by text across all channels/groups in a folder | | tg_get_recent_from_channels | Digest from multiple channels, sorted by date | | tg_get_recent_from_folder | Digest from all channels/groups in a folder | | tg_send_message | Send formatted text to a user (@username), chat id, or "me" (Markdown/HTML) | | tg_archive_chats | Move chats/channels to Archive | | tg_unarchive_chats | Restore chats/channels from Archive |

Example prompts:

What’s new in my Travel folder this week?

Get all comments on https://t.me/channel/123 and summarize the discussion

Security

  • Do not commit .env — it contains your Telegram session (full account access)
  • Claude Desktop / Codex: config files with inline env hold the same secrets as .env — treat them like .env
  • Never share TELEGRAM_SESSION in logs, issues, or chats
  • Revoke API credentials or sessions at my.telegram.org
  • Log out locally: npx tg-mcp-logout (npm) or npm run logout (git clone)

Stack