Files
funstat-mcp/README.md
你的用户名 c4be264ea5 Add deployment scripts and documentation
- Add deployment scripts (deploy.sh, test_connection.sh, core/start_server.sh)
- Add deployment documentation (DEPLOYMENT_INFO.md, DEPLOYMENT_SUCCESS.md)
- Add .env.example configuration template
- Add requirements.txt for Python dependencies
- Update README.md with latest information
- Update core/server.py with improvements

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-04 15:19:44 +08:00

420 lines
10 KiB
Markdown

# Funstat MCP 完整打包
**版本**: 1.16.0
**打包时间**: 2025-10-27
**协议**: MCP Streamable HTTP (2025-03-26+)
## 项目说明
Funstat MCP 提供一个面向多客户端的统一接口,将 Telegram 上的 @openaiw_bot 能力封装为标准化的 MCP 工具。项目集成速率限制、响应缓存与 SSE 输出,方便 Codex、Cursor、Claude Code 等开发工具快速调用。配套脚本覆盖环境初始化、会话创建与生产部署,使得在新机器上即可一键启动 Funstat 服务。
---
## 📦 包内容概览
这个打包包含了完整的 Funstat MCP 服务器实现,以及所有相关文档、配置和工具。
### 目录结构
```
funstat_mcp_package/
├── README.md # 本文件
├── core/ # 核心代码
│ ├── server.py # MCP 服务器主程序 ⭐️
│ ├── start_sse_prod.sh # 生产环境启动脚本 ⭐️
│ ├── setup.sh # 一键安装脚本
│ └── ... # 其他测试和调试脚本
├── docs/ # 文档
│ ├── ALL_AI_TOOLS_MCP_SETUP.md # 统一配置指南 ⭐️
│ ├── CODEX_CLI_MCP_SETUP.md # Codex CLI 配置
│ ├── CURSOR_MCP_SETUP.md # Cursor IDE 配置
│ ├── STREAMABLE_HTTP_FIX_FINAL.md # 协议修复文档 ⭐️
│ ├── 007翻译客户获取-多工具组合方案.md # 客户获取方案
│ ├── 007翻译客户获取-执行报告.md # 执行报告
│ └── ... # 其他技术文档
├── scripts/ # 工具脚本
│ ├── funstat_auto_query.py # 自动查询客户脚本 ⭐️
│ ├── analyze_customers_v2.py # 客户分析脚本
│ └── ... # 其他辅助脚本
├── customer_data/ # 客户数据
│ ├── funstat_query_results.json # 原始查询结果
│ ├── 高质量客户清单.json # 高质量客户列表
│ └── 客户分类清单.json # 分类客户列表
└── config_examples/ # 配置示例
├── cursor-mcp.json # Cursor IDE 配置
└── claude-code-mcp-config.json # Claude Code 配置
```
---
## 🎯 核心功能
### MCP 工具列表 (9个)
| 工具名 | 功能 | 对应命令 |
|--------|------|---------|
| `funstat_start` | 启动会话 | `/start` |
| `funstat_balance` | 查询余额 | `/余额` |
| `funstat_search` | 搜索群组 | `/search [关键词]` |
| `funstat_topchat` | 热门群组 | `/topchat` |
| `funstat_menu` | 显示菜单 | `/menu` |
| `funstat_text` | 搜索消息内容 | `/text [关键词]` |
| `funstat_human` | 搜索用户 | `/human [关键词]` |
| `funstat_user_info` | 查询用户详情 | `/user_info [username]` |
| `funstat_user_messages` | 获取用户聊天记录(自动翻页) | `/user_info [username] ➜ Messages ➜ All` |
### 协议支持
-**Streamable HTTP** (MCP 2025-03-26+) - 主要协议
-**AgentAPI Proxy** - 用于 Claude Code 和 Cursor
-**直接 HTTP** - Codex CLI 原生支持
### 客户端兼容性
| 客户端 | 配置方式 | 状态 |
|--------|---------|------|
| **Claude Code** | AgentAPI Proxy | ✅ 已测试 |
| **Cursor IDE** | `.cursor/mcp.json` | ✅ 已测试 |
| **Codex CLI** | `~/.codex/config.toml` | ✅ 已修复 (405错误) |
---
## 🚀 快速开始
### 前置要求
1. **Python 3.9+**
2. **Telegram Session 文件**: `/Users/lucas/telegram_sessions/funstat_bot.session`
3. **依赖包**:
- `mcp` (1.16.0+)
- `telethon`
- `starlette`
- `uvicorn`
### 安装步骤
#### 1. 安装依赖
```bash
cd core
chmod +x setup.sh
./setup.sh
```
或手动安装:
```bash
pip3 install mcp telethon starlette uvicorn
```
#### 2. 配置 Session 文件
确保你有有效的 Telegram session 文件:
```bash
ls -l /Users/lucas/telegram_sessions/funstat_bot.session
```
如果没有,请先创建 session (参考 `docs/SESSION_MANAGEMENT.md`)。
#### 3. 启动 MCP 服务器
**生产环境 (推荐)**:
```bash
cd core
chmod +x start_sse_prod.sh
./start_sse_prod.sh
```
**开发环境**:
```bash
cd core
python3 server.py
```
服务器将在 `http://127.0.0.1:8091/sse` 启动。
#### 4. 配置客户端
**Codex CLI**:
```bash
codex mcp add --url http://127.0.0.1:8091/sse funstat
codex mcp get funstat # 验证配置
```
**Cursor IDE**:
复制 `config_examples/cursor-mcp.json` 到你的项目 `.cursor/` 目录:
```bash
mkdir -p /path/to/your/project/.cursor
cp config_examples/cursor-mcp.json /path/to/your/project/.cursor/mcp.json
```
**Claude Code**:
已自动配置 (通过 AgentAPI)。
---
## 📚 文档索引
### 设置与配置
- **`docs/ALL_AI_TOOLS_MCP_SETUP.md`** - 所有 AI 工具的统一配置指南 ⭐️
- **`docs/CODEX_CLI_MCP_SETUP.md`** - Codex CLI 详细配置
- **`docs/CURSOR_MCP_SETUP.md`** - Cursor IDE 详细配置
- **`docs/AGENTAPI_PROXY_SETUP.md`** - AgentAPI 代理配置
### 技术文档
- **`docs/STREAMABLE_HTTP_FIX_FINAL.md`** - Streamable HTTP 协议修复说明 ⭐️
- **`docs/MCP_SSE_FIX_SUMMARY.md`** - SSE 端点修复总结
- **`docs/PERMANENT_SSE_FIX.md`** - 永久修复方案
- **`docs/SESSION_MANAGEMENT.md`** - Session 管理文档
### 部署文档
- **`docs/FUNSTAT_MCP_DEPLOYMENT_REPORT.md`** - 部署报告
- **`docs/DOCKER_DEPLOYMENT.md`** - Docker 部署方案
- **`docs/DEPLOYMENT_FOR_OTHERS.md`** - 为他人部署指南
### 客户获取文档
- **`docs/007翻译客户获取-多工具组合方案.md`** - 客户获取策略 ⭐️
- **`docs/007翻译客户获取-执行报告.md`** - 执行结果报告 ⭐️
---
## 🔧 核心文件说明
### `core/server.py` (主程序)
**关键实现**:
```python
from mcp.server.streamable_http import StreamableHTTPServerTransport
# 创建 Streamable HTTP 传输
session_id = str(uuid.uuid4())
transport = StreamableHTTPServerTransport(
mcp_session_id=session_id,
is_json_response_enabled=True,
)
# 后台运行 MCP 服务器
async def run_mcp_server():
async with transport.connect() as streams:
await self.server.run(streams[0], streams[1], ...)
asyncio.create_task(run_mcp_server())
# 创建 Starlette 应用
app = Starlette()
app.mount("/", transport.handle_request)
```
**端口**: 8091
**协议**: Streamable HTTP (MCP 2025-03-26+)
### `core/start_sse_prod.sh` (启动脚本)
**功能**:
- 停止旧服务器实例
- 检测并释放 session 文件锁
- 启动新服务器
- 自动验证 GET/POST 端点
**日志**: `/tmp/funstat_sse.log`
### `scripts/funstat_auto_query.py` (自动查询工具)
**用途**: 批量查询关键词并解析结果
**示例**:
```python
queries = [
{"type": "pain_point", "keyword": "翻译不准"},
{"type": "pain_point", "keyword": "翻译太慢"},
{"type": "recommendation", "keyword": "翻译软件推荐"},
]
# 运行查询
python3 scripts/funstat_auto_query.py
```
**输出**: `funstat_query_results.json`
### `scripts/analyze_customers_v2.py` (客户分析工具)
**功能**: 将客户分类为:
- 💼 代理商/同行 (3 users)
- 🏢 B端客户 (1 user)
- 👤 C端/个人用户 (17 users)
**输出**: `客户分类清单.json`, `客户清单-表格版.md`
---
## 🧪 测试验证
### 1. 验证服务器启动
```bash
# 检查进程
ps aux | grep server.py
# 检查日志
tail -f /tmp/funstat_sse.log
```
应该看到:
```
INFO: Uvicorn running on http://127.0.0.1:8091
```
### 2. 测试 GET 端点
```bash
curl -N -H "Accept: text/event-stream" http://127.0.0.1:8091/sse
```
预期输出:
```
event: endpoint
data: /messages?session_id=xxx
```
### 3. 测试 POST 端点
```bash
curl -X POST http://127.0.0.1:8091/sse \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
```
预期输出:
```json
{
"jsonrpc":"2.0",
"id":1,
"result":{
"protocolVersion":"2025-03-26",
"capabilities":{...},
"serverInfo":{"name":"funstat-mcp","version":"1.16.0"}
}
}
```
### 4. 测试 Codex CLI
```bash
codex
# 然后输入: "列出可用的 MCP 工具"
```
应该看到 8 个 funstat 工具。
---
## ⚠️ 常见问题
### 1. 405 Method Not Allowed
**问题**: Codex CLI 报错 `405 Method Not Allowed`
**原因**: 使用了旧版 `SseServerTransport` 而不是 `StreamableHTTPServerTransport`
**解决**: 已在 `core/server.py` 中永久修复 (Git commit: c4f3673)
### 2. Database Locked
**问题**: `sqlite3.OperationalError: database is locked`
**原因**: 多个进程同时访问 session 文件
**解决**: 使用 `start_sse_prod.sh` 启动,自动处理锁问题
### 3. Connection Closed
**问题**: `connection closed: initialize response`
**原因**: 服务器未正确返回初始化响应
**解决**: 已在 Streamable HTTP 协议中修复
---
## 📊 项目成果
### 客户获取结果
- **查询关键词**: 6 个
- **找到消息**: 25 条
- **提取用户**: 21 个
- **高质量客户**: 13 个 (S/A 级)
- **痛点明确率**: 92%
### 客户分类
| 类别 | 数量 | 特点 | 优先级 |
|------|-----|------|--------|
| 代理商/同行 | 3 | 可发展为合作伙伴 | S 级 |
| B端客户 | 1 | 企业/团队采购 | A 级 |
| C端用户 | 17 | 个人用户 | A-C 级 |
详见: `customer_data/客户分类清单.json`
---
## 🔗 相关资源
- **MCP 官方文档**: https://modelcontextprotocol.io/docs
- **Streamable HTTP 规范**: https://spec.modelcontextprotocol.io/specification/2025-03-26/basic/transports/#streamable-http
- **MCP Python SDK**: https://github.com/modelcontextprotocol/python-sdk
- **Codex CLI 文档**: https://docs.openai.com/codex/cli
---
## 📝 版本历史
### v1.16.0 (2025-10-27)
- ✅ 完全支持 Streamable HTTP 协议
- ✅ 修复 Codex CLI 405 错误
- ✅ 支持 Cursor IDE 和 Claude Code
- ✅ 完成客户获取自动化工具
- ✅ 生产级启动脚本
### v1.0.0 (2025-10-26)
- ✅ 初始版本
- ✅ 8 个 MCP 工具实现
- ✅ SSE 传输支持
- ✅ Claude Code 集成
---
## 🤝 支持
如有问题,请查看:
1. **`docs/ALL_AI_TOOLS_MCP_SETUP.md`** - 配置问题
2. **`docs/STREAMABLE_HTTP_FIX_FINAL.md`** - 协议问题
3. **`/tmp/funstat_sse.log`** - 服务器日志
---
**开发者**: Claude Code
**项目**: Funstat MCP 服务器
**协议**: MIT License (如适用)
---
🎉 **感谢使用 Funstat MCP!**