Telegram消息摘要服务

一个独立的Go MCP服务器,连接Telegram MTProto并暴露用于摘要工作流的工具,适用于社交媒体分析和社区映射。

  • by juanitolaguna
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 juanitolaguna/telegram-mcp-server

使用说明

电报摘要MCP服务器

独立的Go-MCP服务器,连接到Telegram MTProto,并公开用于摘要工作流的工具。

目录

  • main.go -MCP服务器+电报客户端
  • auth.go -OAuth/OIDC中间件和元数据/代理端点
  • logging.go -日志级助手(MCP_LOG_LEVEL=info|debug)
  • auth_test.go -auth中间件测试
  • Makefile -构建/运行/测试/隧道帮助程序
  • Dockerfile -多阶段Linux容器构建
  • docker-compose.yml -本地Docker编写模板

先决条件

  • 转到1.23+
  • 电报API凭证(api_id, api_hash)从https://my.telegram.org/apps
  • cloudflared (可选,适用于临时公共隧道)
  • Docker+Compose插件(可选,用于容器化运行)

快速开始

cp .env.example .env
# edit .env with your real values

make tidy
make build
make run

首次交互式运行可能会要求提供Telegram身份验证码。

Docker(推荐用于部署)

cp .env.example .env
# edit .env with real values

docker compose build

第一次运行应该是交互式的,以完成Telegram登录并持久会话:

make docker-auth

登录成功后,正常启动:

make docker-up
make docker-logs

笔记:

  • Compose将Telegram会话数据存储在Docker卷中 telegram_mcp_data.
  • 集装箱套装 SESSION_DIR=/data,因此gotd会话在重新启动时保持不变。
  • docker-compose.yml 绑定到 127.0.0.1:8765 默认情况下,仅适用于本地曝光。
  • 仅适用于反向代理,请删除 ports 并将该服务连接到您的代理网络。

快速MCP检查(无验证)

在无身份验证模式下启动服务器:

make docker-up-noauth

使用FastMCP检查MCP连接:

fastmcp list http://127.0.0.1:8765/mcp

预期结果:FastMCP打印可用工具(此服务器中有3个工具)。

发出命令

make tidy        # go mod tidy
make test        # go test ./...
make build       # go build -o telegram-digest-mcp .
make run         # run with current env
make run-debug   # run with MCP_LOG_LEVEL=debug
make run-noauth  # run with MCP_AUTH_MODE=off (local testing only)
make tunnel      # cloudflared temporary tunnel to http://localhost:${PORT}
make docker-up   # docker compose up -d --build
make docker-up-noauth # docker compose up -d --build with MCP_AUTH_MODE=off
make docker-down # docker compose down
make docker-logs # follow container logs
make docker-auth # interactive first run for Telegram OTP/2FA

默认值:

  • BIN_NAME=telegram-digest-mcp
  • PORT=8765

覆盖示例:

make PORT=9000 tunnel

OAuth/OIDC

安全模式为默认模式:

  • MCP_AUTH_MODE=oauth
  • MCP_OAUTH_ISSUER=https://<tenant>.auth0.com/
  • MCP_OAUTH_AUDIENCE=https://<your-public-host>/mcp (必须与Auth0 API标识符完全匹配)
  • MCP_OAUTH_REQUIRED_SCOPES=mcp.read
  • MCP_PUBLIC_BASE_URL=https://<public-host>

详细的Auth0设置指南: AUTH0_MCP配置.md

服务器公开:

  • GET /.well-known/oauth-protected-resource
  • GET /.well-known/oauth-authorization-server
  • GET /authorize (代理)
  • POST /token (代理)

MCP工具

此服务器公开了3个MCP工具:

  1. get_messages(channels, hours_back=24) 从一个或多个公共Telegram频道获取最近的帖子,并返回文本、时间戳、视图、转发和消息链接。

  2. get_similar_channels(channels) 使用Telegram推荐为所提供的种子查找相邻/相似的频道。

  3. expand_and_collect(seed_channels, depth=2, hours_back=24) 运行完整的管道:从种子频道扩展到附近的频道,然后从完整的发现集中收集最近的帖子。

为什么这对社交媒体泡沫分析有用:

  • 您可以从已知的频道开始,自动绘制附近社区的地图。
  • 你可以比较相邻泡沫中的叙述,而不是孤立地看待一个渠道。
  • 您可以将结构化的跨渠道数据馈送到人工智能,以便随着时间的推移进行聚类、总结、趋势检测和叙事漂移分析。

安全说明

  • 保持 .env Telegram会话文件为私有。
  • 不要跑步 MCP_AUTH_MODE=off 在公共互联网上。
  • 日志转到 stderr (MCP协议使用 stdout).