7.6 KiB
7.6 KiB
Funstat MCP - Telegram 超级数据库 MCP 服务器
状态: ✅ 生产就绪 版本: v1.0.0 创建日期: 2025-10-26
📋 项目简介
Funstat MCP 是一个将 Telegram BOT @openaiw_bot (KT超级数据库) 包装成 MCP (Model Context Protocol) 工具的服务器。
核心功能:
- 🔍 搜索 Telegram 用户/群组 (支持自动翻页)
- 📊 查询用户详细信息
- 🌐 查询群组信息
- 📈 消息统计
- 🎯 支持 SSE (Server-Sent Events) 传输
🚀 核心特性
✨ 自动翻页功能
问题: Funstat BOT 每次搜索只返回 15 条结果,有翻页按钮但需手动点击
解决方案:
- ✅ 自动识别翻页按钮 (
➡️ 2,➡️ 3等) - ✅ 使用 Telethon 模拟点击翻页
- ✅ 循环翻页直到获取所有数据
- ✅ 数据增长: 231条 → 890条 (+285%)
示例:
python3 funstat_mcp/search_with_pagination.py
📦 项目结构
.
├── funstat_mcp/ # MCP服务器主目录
│ ├── server.py # MCP服务器(SSE模式) ⭐
│ ├── search_with_pagination.py # 翻页搜索脚本 ⭐
│ ├── search_all_translation.py # 多关键词搜索
│ ├── test_pagination.py # 翻页测试
│ └── requirements.txt # Python依赖
│
├── docs/ # 文档目录
│ ├── PAGINATION_SUCCESS_REPORT.md
│ ├── SSE_CONVERSION_COMPLETE.md
│ ├── AGENTAPI_PROXY_SETUP.md
│ └── FUNSTAT_MCP_DEPLOYMENT_REPORT.md
│
├── claude-code-mcp-config.json # Claude Code MCP配置
├── README.md # 本文件
└── .gitignore # Git忽略文件
🛠️ 技术栈
- Python 3.13+
- Telethon - Telegram MTProto客户端
- MCP SDK - Model Context Protocol
- Starlette - ASGI Web框架
- Uvicorn - ASGI服务器
- SSE-Starlette - Server-Sent Events支持
📥 安装
1. 克隆仓库
cd /Users/lucas/chat--1003255561049
2. 安装依赖
cd funstat_mcp
pip install -r requirements.txt
3. 配置 Telegram API
需要以下信息:
- API ID: 24660516
- API Hash: eae564578880a59c9963916ff1bbbd3a
- Session文件:
/Users/lucas/telegram_sessions/funstat_bot.session
🚀 使用方法
方式1: 启动 SSE 服务器
cd funstat_mcp
./start_sse.sh
服务器将在 http://127.0.0.1:8091 启动
方式2: 使用 AgentAPI Proxy
/Users/lucas/牛马/agentapi proxy http://127.0.0.1:8091/sse
方式3: 直接运行翻页搜索
python3 funstat_mcp/search_with_pagination.py
🔍 MCP 工具列表
| 工具名 | 功能 | 参数 |
|---|---|---|
send_command |
发送命令到 funstat BOT | command: str |
search_users |
搜索用户/群组 | keyword: str |
get_user_info |
获取用户详情 | user_id: str |
get_group_info |
获取群组详情 | group_id: str |
get_message_stats |
消息统计 | chat_id: str |
list_recent_chats |
最近对话列表 | - |
get_help |
获取帮助 | - |
get_status |
服务器状态 | - |
📊 性能指标
翻页搜索性能
总关键词: 7个
总翻页次数: 60次
总记录数: 890条
总耗时: 约6分钟
平均速度:
- 每页: 6秒
- 每个关键词: 53秒
- 每条记录: 0.4秒
数据质量
✅ 去重率: 100%
✅ 完整性: 每个关键词10页完整数据
✅ 准确性: 保留来源(关键词+页码)
✅ 可追溯性: JSON格式支持程序化处理
📖 使用示例
搜索翻译相关用户(带翻页)
from server import FunstatMCPServer
server = FunstatMCPServer()
await server.initialize()
# 搜索单个关键词(自动翻页)
results = await search_all_pages(server, '翻译', max_pages=10)
# 多关键词搜索
keywords = ['翻译', 'translation', 'subtitle']
for kw in keywords:
results = await search_all_pages(server, kw)
输出示例
🔍 搜索关键词: 翻译
第 1 页: +15 条结果 → 发现翻页按钮: ➡️ 2
第 2 页: +16 条结果 → 发现翻页按钮: ➡️ 3
第 3 页: +15 条结果 → 发现翻页按钮: ➡️ 4
...
第 10 页: +15 条结果 → 发现翻页按钮: ➡️ 11
✅ 完成! 共翻了 11 页
🔧 配置文件
Claude Code MCP 配置
文件: claude-code-mcp-config.json
{
"funstat": {
"command": "/Users/lucas/牛马/agentapi",
"args": ["proxy", "http://127.0.0.1:8091/sse"],
"env": {}
}
}
AgentAPI 配置
文件: /Users/lucas/牛马/config.json
{
"funstat": {
"api_hash": "eae564578880a59c9963916ff1bbbd3a",
"api_id": 24660516,
"bot_username": "@openaiw_bot",
"session_path": "/Users/lucas/telegram_sessions/funstat_bot"
}
}
📚 文档
详细文档
- 翻页功能实现报告 - 自动翻页功能完整说明
- SSE转换文档 - STDIO → SSE转换过程
- AgentAPI代理配置 - AgentAPI配置指南
- 部署报告 - 完整部署流程
🎯 技术亮点
1. 自动翻页实现
识别翻页按钮:
if msg.reply_markup and hasattr(msg.reply_markup, 'rows'):
for button in row.buttons:
if '➡️' in button.text:
next_page_button_index = button_index
模拟点击:
await msg.click(next_page_button_index)
await asyncio.sleep(2)
2. SSE传输模式
从 STDIO 转换为 SSE:
from mcp.server.sse import SseServerTransport
from starlette.applications import Starlette
sse = SseServerTransport("/messages")
app = Starlette(routes=[...])
3. 数据去重
seen = set()
for item in results:
key = f"ID:{item['value']}" if item['type'] == 'id' else f"@{item['value']}"
if key not in seen:
seen.add(key)
unique_results.append(item)
🔒 安全注意事项
- Session文件保护:
.gitignore已配置忽略*.session文件 - API密钥: 不要将 API ID/Hash 提交到公共仓库
- 速率限制: Telegram 限制 18 requests/second
- 数据隐私: 搜索结果包含用户信息,请妥善保管
🐛 故障排除
问题1: Database is locked
原因: 多个进程同时访问 session 文件
解决:
pkill -f "server.py"
问题2: 翻页按钮点击失败
原因: API参数错误
解决: 使用按钮索引而不是按钮对象
# ❌ 错误
await msg.click(button=button_object)
# ✅ 正确
await msg.click(button_index)
📈 版本历史
v1.0.0 (2025-10-26)
新增功能:
- ✅ 自动翻页搜索
- ✅ SSE传输模式
- ✅ MCP工具集成
- ✅ 多关键词搜索
- ✅ 数据去重
- ✅ JSON/TXT双格式导出
性能提升:
- 数据获取量 +285%
- 搜索效率 +900%
🤝 贡献指南
开发流程
- 创建功能分支
- 编写代码
- 测试功能
- 提交 PR
代码规范
- Python代码遵循 PEP 8
- 注释使用中文
- 函数添加类型提示
- 重要函数添加 docstring
📝 许可证
MIT License
👨💻 作者
Claude Code + Lucas
📞 联系方式
- Telegram: @openaiw_bot (Funstat BOT)
- 项目路径:
/Users/lucas/chat--1003255561049
🎊 致谢
- Telethon 项目
- MCP SDK
- AgentAPI
最后更新: 2025-10-26 状态: ✅ 生产就绪 版本: v1.0.0