Telegram机器人MCP服务

一个将Telegram Bot API作为工具暴露的MCP服务器,允许Claude和其他MCP客户端通过Telegram机器人发送消息、照片、投票等。

  • by Eweol
  • Python
  • 混合部署
  • 更新于
在 GitHub 查看 Eweol/telegram-bot-mcp

使用说明

电报机器人mcp

A. 模型上下文协议(MCP) 暴露的服务器 电报机器人API 作为工具——让克劳德和其他MCP客户端通过Telegram机器人发送消息、照片、民意调查等。

建于 FastMCP python无需外部身份验证代理——内置OIDC/JWT身份验证。

特性

  • 工具: get_me, list_chats, send_message, send_photo, send_document, send_location, send_poll, edit_message_text, delete_message, get_chat, get_chat_member_count
  • 三种身份验证模式:stdio(无身份验证)、静态承载令牌、完整的OIDC OAuth2代理(例如Authentik、Keycloak)
  • 运输:stdio(克劳德桌面)+可流式HTTP(远程/K8s)
  • 多拱形Docker镜像:linux/amd64+linux/arm64

快速开始

stdio(克劳德桌面/本地)

pip install .
export TELEGRAM_BOT_TOKEN=your_token_here
python -m telegram_bot_mcp

添加到克劳德桌面 claude_desktop_config.json:

{
  "mcpServers": {
    "telegram": {
      "command": "python",
      "args": ["-m", "telegram_bot_mcp"],
      "env": {
        "TELEGRAM_BOT_TOKEN": "your_token_here"
      }
    }
  }
}

流式HTTP(远程)

export TELEGRAM_BOT_TOKEN=your_token_here
export AUTH_TOKEN=your_secret_bearer_token   # optional: require auth
python -m telegram_bot_mcp --transport streamable-http --port 8000

从克劳德代码连接:

claude mcp add telegram --transport http https://your-host:8000/mcp \
  --header "Authorization: Bearer your_secret_bearer_token"

OIDC OAuth2(生产)

完整的OAuth2流——服务器充当OIDC代理。用户通过您的身份提供者(Authentik、Keycloak、Auth0等)进行身份验证,并接收持续的会话 SESSION_LIFETIME_HOURS (默认:8小时)。

export TELEGRAM_BOT_TOKEN=your_token_here
export OIDC_DISCOVERY_URL=https://auth.example.com/application/o/my-app/.well-known/openid-configuration
export OIDC_CLIENT_ID=your_client_id
export OIDC_CLIENT_SECRET=your_client_secret
export BASE_URL=https://telegram-bot-mcp.example.com
python -m telegram_bot_mcp --transport streamable-http --port 8000

环境变量

变量 必填 描述
TELEGRAM_BOT_TOKEN 是 来自的Bot令牌 @植物学家
OIDC_DISCOVERY_URL 否* OIDC发现URL--启用完整的OAuth2代理模式
OIDC_CLIENT_ID 否* OAuth2客户端ID
OIDC_CLIENT_SECRET 否* OAuth2客户端机密
BASE_URL 否* 此服务器的公共基URL(OAuth2重定向所需)
JWT_SIGNING_KEY 否 用于签名会话JWTs的稳定密钥;如果未设置,则每次启动都是随机的
SESSION_LIFETIME_HOURS 否 会话持续时间(小时)(默认值: 8)
AUTH_TOKEN 否 静态承载令牌(OIDC的更简单替代方案)
KNOWN_CHATS 否 预配置聊天: Name=chat_id,Name2=chat_id2
CHAT_STORE_PATH 否 已发现聊天缓存的路径(默认值: ~/.local/share/fastmcp/chats.json)

*必须将所有四个OIDC变量设置在一起才能启用OAuth2模式。

码头工人

docker run -p 8000:8000 \
  -e TELEGRAM_BOT_TOKEN=your_token_here \
  -v telegram-data:/data \
  ghcr.io/your-org/telegram-bot-mcp:latest

命名卷(telegram-data:/data)在容器重新启动时持久化发现的聊天ID。

或者使用Docker Compose:

cp .env.example .env  # fill in your token
docker compose up -d

许可证

麻省理工学院——见 许可证.