MCP与Telegram集成示例
基于Python的模型上下文协议(MCP)客户端和服务器,使LLM能够通过Telegram发送通知并接收用户响应。
特性
- 向Telegram聊天发送文本提醒,并可自定义紧急程度
- 检查具有可配置超时的用户回复
- 与MCP兼容的LLM应用程序集成的灵活模板
MCP与函数调用或代理工具
MCP协议(模型上下文协议):
- 将法学硕士的推理(“上下文”)与外部行动的执行分开。例如,LLM决定采取什么行动,MCP服务器处理如何执行该行动。
- 这种解耦意味着您可以在不更改核心LLM模型或其提示的情况下更新或交换外部工具。
- 它还允许更安全、更可控地执行操作。
LLM函数调用或代理:
- 直接函数调用或基于代理的方法通常会混合决策和执行逻辑,这会使系统模块化程度降低。
- 执行操作方式的更改可能需要重新设计代理或修改LLM的提示,从而增加维护难度。
先决条件
- Python 3.11+
- Telegram机器人代币(来自 @植物学家)
- 您的Telegram聊天ID
安装
- 克隆存储库:
git git@github.com:arananet/mcp-telegram-poc.git
cd mcp-telegram-poc- 安装依赖项:
pip install -r requirements.txt- 创建虚拟环境:
python3 -m venv .venv- 复制
.env.example向.env并填写您的Telegram凭据:
cp .env.example .env
nano .env配置
编辑 .env 与:
- TELEGRAM_BOT_TOKEN=你的赌注_在这里
- TELEGRAM_CHAT_ID=你的帽子在这里
- OPENAI_API_KEY=your_OPENAI_apikey
获取Telegram Bot令牌
- 与聊天 @植物学家 在Telegram上。
- 发送
/newbot并在此电报之后提供一个名称(例如mcp_example),然后提供一个用户名(例如mci_example_bot),botfather将用令牌进行回复。 - 复制提供的令牌。
查找您的聊天ID
- 向您的机器人发送消息(转到创建的机器人并发送一些示例,例如嗨)。
- 访问
https://api.telegram.org/bot/getUpdates. - 查找
chat对象的id现场。您将看到类似这样的内容(例如“聊天”:{“id”:107184517,“first_name”:“Edu”,“last_name”:”Arana“…),聊天id为107184517。
用法
独立运行
python3 src/mcp_handler.py程序化使用
对于发送和接收警报的测试:
python3 examples/test_client.py代理集成
用于使用autogen 0.4框架的代理测试MCP的集成
python3 examples/test_autogen_agent.py本地测试
使用测试脚本(Linux/macOS):
chmod +x test_server.sh
./test_server.sh可用工具
send_alert
- 参数:
- message (str,必填):要发送的消息(支持Markdown)。 - project (str,必填):项目名称。 - urgency (str,可选):“低”、“中”、“高”(默认值:“中”)。
- 描述:发送电报警报并等待回复。
check_reply
- 参数:
- message_id (int,必填):要检查的消息ID。 - timeout_seconds (int,可选):等待时间(默认值:60)。
- 描述:针对特定消息的回复进行民意调查。
发展
- 安装依赖项:
pip install -r requirements.txt - 运行服务器:
python3 src/mcp_handler.py - 测试客户端:
python3 examples/test_client.py - 测试代理:
python3 examples/test_autogen_agent.py
例子
这 examples 文件夹包含:
test_server.py:独立运行服务器。
test_client.py:演示客户端交互。
test_autogen_agent.py:演示AutoGen Agent之间的MCP集成
- 在images文件夹中,您可以找到一些测试的截图。
开发者
- 爱德华多·阿兰纳
可用性
- MCPHub认证https://mcphub.com/mcp-servers/arananet/mcp-telegram-poc
