<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Telegram on Михаил Ледин</title>
    <link>https://blog.ledin.pro/ru/tags/telegram/</link>
    <description>Recent content in Telegram on Михаил Ледин</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>ru-RU</language>
    <managingEditor>m@ledin.pro (Михаил Ледин)</managingEditor>
    <webMaster>m@ledin.pro (Михаил Ледин)</webMaster>
    <lastBuildDate>Tue, 17 Mar 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.ledin.pro/ru/tags/telegram/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Telegram MCP в Claude и ChatGPT</title>
      <link>https://blog.ledin.pro/ru/posts/telegram-mcp-in-claude-and-chatgpt/</link>
      <pubDate>Tue, 17 Mar 2026 00:00:00 +0000</pubDate>
      <author>m@ledin.pro (Михаил Ледин)</author>
      <guid>https://blog.ledin.pro/ru/posts/telegram-mcp-in-claude-and-chatgpt/</guid>
      <description>&lt;p&gt;Я хотел подключить Telegram к Claude и ChatGPT так, чтобы можно было массово подгружать сообщения из каналов в контекст и работать с ними прямо из AI-инструмента. Казалось бы, задача простая: взять готовый MCP-сервер, подключить и пользоваться. На практике пришлось немного допилить чужой проект.&lt;/p&gt;</description>
      <content>&lt;p&gt;Я хотел подключить Telegram к Claude и ChatGPT так, чтобы можно было массово подгружать сообщения из каналов в контекст и работать с ними прямо из AI-инструмента. Казалось бы, задача простая: взять готовый MCP-сервер, подключить и пользоваться. На практике пришлось немного допилить чужой проект.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;что-не-хватало-из-коробки&#34;&gt;Что не хватало из коробки&lt;/h2&gt;
&lt;p&gt;В качестве основы я взял &lt;a href=&#34;https://github.com/chigwell/telegram-mcp&#34;&gt;&lt;code&gt;telegram-mcp&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;После подключения выяснилось, что для реальной работы не хватает нескольких вещей:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;не распознаются расшаренные папки Telegram;&lt;/li&gt;
&lt;li&gt;поиск чатов по умолчанию ограничен 20 результатами;&lt;/li&gt;
&lt;li&gt;нет глобального поиска по сообщениям.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Раньше такой набор недочетов означал бы полноценное мини-исследование: нужно разобраться в чужом Python-коде, понять, как работает MTProto, и только потом что-то править. Сейчас на это ушло буквально пару часов — Codex помог быстро дотащить изменения до рабочего состояния и даже оформить &lt;a href=&#34;https://github.com/chigwell/telegram-mcp/pull/72&#34;&gt;PR&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;базовая-установка-telegram-mcp&#34;&gt;Базовая установка Telegram MCP&lt;/h2&gt;
&lt;p&gt;Сначала нужно развернуть сам сервер:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone https://github.com/chigwell/telegram-mcp.git
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;cd&lt;/span&gt; telegram-mcp
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Дальше поставить &lt;code&gt;uv&lt;/code&gt; и зависимости:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;curl -LsSf https://astral.sh/uv/install.sh &lt;span class=&#34;p&#34;&gt;|&lt;/span&gt; sh
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv sync
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;После этого нужно сгенерировать session string и подготовить &lt;code&gt;.env&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;uv run session_string_generator.py
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cp .env.example .env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;И наконец — создать свое Telegram-приложение на &lt;a href=&#34;https://my.telegram.org/apps&#34;&gt;my.telegram.org/apps&lt;/a&gt;, получить &lt;code&gt;TELEGRAM_API_ID&lt;/code&gt; и &lt;code&gt;TELEGRAM_API_HASH&lt;/code&gt; и прописать их в &lt;code&gt;.env&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;как-подключить-к-claude&#34;&gt;Как подключить к Claude&lt;/h2&gt;
&lt;p&gt;В &lt;code&gt;claude_desktop_config.json&lt;/code&gt; нужно добавить MCP-сервер:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;mcpServers&amp;#34;&lt;/span&gt;&lt;span class=&#34;err&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;telegram-mcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;uv&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;--directory&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;/path/to/telegram-mcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;run&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;s2&#34;&gt;&amp;#34;main.py&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;После перезапуска Claude Desktop сервер должен появиться в &lt;code&gt;Customize =&amp;gt; Connectors =&amp;gt; Desktop&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;И дальше уже можно делать вполне прикладные запросы вроде: &amp;ldquo;Напиши саммари по 20 последним сообщениям из Telegram&amp;rdquo;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;почему-с-chatgpt-сложнее&#34;&gt;Почему с ChatGPT сложнее&lt;/h2&gt;
&lt;p&gt;У ChatGPT проблема в том, что он не умеет работать с локальными MCP-серверами так же напрямую, как Claude Desktop. Теоретически можно поднять публичный MCP-сервер и подключить его через свое приложение для ChatGPT, но это означает выводить наружу сервис, который имеет доступ к личному Telegram-аккаунту. Даже с авторизацией это выглядит как плохая идея.&lt;/p&gt;
&lt;p&gt;Поэтому более практичный путь — использовать сторонний клиент, который умеет и в модели OpenAI, и в локальные MCP-серверы.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;вариант-с-opencode&#34;&gt;Вариант с OpenCode&lt;/h2&gt;
&lt;p&gt;В качестве такого клиента подойдет &lt;a href=&#34;https://opencode.ai/&#34;&gt;OpenCode&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;В &lt;code&gt;~/.config/opencode/opencode.json&lt;/code&gt; можно добавить локальный MCP так:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;$schema&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;https://opencode.ai/config.json&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;mcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;telegram&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;type&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;local&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;uv&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;--directory&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;/Users/michaelledin/Documents/projects/telegram-mcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;run&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;main.py&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;enabled&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;kc&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;После этого остается подключить OpenAI-аккаунт через &lt;code&gt;/connect&lt;/code&gt;, а затем проверить через &lt;code&gt;/mcp&lt;/code&gt;, что сервер действительно в статусе &lt;code&gt;connected&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;что-в-этом-самое-интересное&#34;&gt;Что в этом самое интересное&lt;/h2&gt;
&lt;p&gt;Для меня важнее всего здесь не сам Telegram MCP, а скорость, с которой теперь можно закрывать такие инфраструктурные задачи. Еще недавно на подобную доработку чужого проекта уходила бы неделя. Сейчас это обычная вечерняя инженерная задача.&lt;/p&gt;
</content>
    </item>
    
  </channel>
</rss>
