Files
funstat-mcp/docs/DEPLOYMENT_FOR_OTHERS.md
2025-11-01 21:58:03 +08:00

591 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 为其他用户部署 Funstat MCP 工具
## 📝 概述
这个文档说明如何让其他人(你的团队成员、朋友等)在他们自己的电脑上使用 Funstat MCP 工具。
---
## 🎯 三种部署方案
### 方案 1完全独立部署推荐
**适用场景**
- 每个人有自己的电脑
- 每个人有自己的 Telegram 账号
- 需要各自独立使用
**优势**
- ✅ 完全独立,互不影响
- ✅ 每人有自己的积分和配额
- ✅ 安全性最高
- ✅ 可以使用不同的 Telegram 账号
**缺点**
- ❌ 每人需要申请自己的 API 凭证
- ❌ 每人需要自己配置
---
### 方案 2共享 Session不推荐
**适用场景**
- 临时测试
- 演示使用
**优势**
- ✅ 部署快速
**缺点**
- ❌ 安全风险:所有人使用同一个 Telegram 账号
- ❌ 并发问题:可能导致 session 冲突
- ❌ 配额共享:积分被所有人共用
-**不推荐用于生产环境**
---
### 方案 3中心化 API 服务(未来扩展)
**适用场景**
- 大规模团队使用
- 需要统一管理
**架构**
```
多个用户 → 中心 API 服务器 → MCP Server → @openaiw_bot
```
**说明**:这需要额外开发,当前版本不支持。
---
## 🚀 方案 1完全独立部署指南
### 前置要求
每个用户需要:
- ✅ macOS / Linux / Windows带 WSL
- ✅ Python 3.10+
- ✅ Claude Code 已安装
- ✅ 一个 Telegram 账号(可以是新注册的)
### 步骤 1分享项目文件
#### 方法 AGitHub推荐
如果你的项目在 GitHub
```bash
# 其他用户克隆仓库
git clone https://github.com/your-username/funstat-mcp.git
cd funstat-mcp
```
#### 方法 B直接分享文件
打包项目文件夹:
```bash
# 在你的电脑上
cd /Users/lucas/chat--1003255561049
tar -czf funstat-mcp.tar.gz \
funstat_mcp/ \
create_session_safe.py \
mermaid_diagrams.md \
*.md
# 发送 funstat-mcp.tar.gz 给其他用户
```
其他用户解压:
```bash
tar -xzf funstat-mcp.tar.gz
cd funstat_mcp
```
### 步骤 2申请 Telegram API 凭证
**重要**:每个用户需要申请自己的 API 凭证!
1. 访问https://my.telegram.org/apps
2. 登录他们自己的 Telegram 账号
3. 创建新应用
4. 获取 `api_id``api_hash`
### 步骤 3配置 API 凭证
编辑 `server.py``create_session_safe.py`,替换 API 凭证:
```python
# server.py 和 create_session_safe.py 中
API_ID = 你的_api_id # 替换这里
API_HASH = "你的_api_hash" # 替换这里
```
**更好的方法**:使用环境变量(推荐)
创建 `.env` 文件:
```bash
# .env
TELEGRAM_API_ID=你的_api_id
TELEGRAM_API_HASH=你的_api_hash
```
然后修改代码读取环境变量:
```python
import os
from dotenv import load_dotenv
load_dotenv()
API_ID = int(os.getenv('TELEGRAM_API_ID'))
API_HASH = os.getenv('TELEGRAM_API_HASH')
```
### 步骤 4安装依赖
```bash
cd funstat_mcp
pip3 install -r requirements.txt
# 如果使用 .env
pip3 install python-dotenv
```
### 步骤 5创建 Session 文件
```bash
cd ..
python3 create_session_safe.py
```
按照提示:
1. 输入手机号
2. 输入验证码
3. 如果有两步验证,输入密码
### 步骤 6配置 Claude Code
编辑 Claude Code 配置文件:
**macOS**:
```bash
nano ~/Library/Application\ Support/Claude/claude_desktop_config.json
```
**Linux**:
```bash
nano ~/.config/claude-code/config.json
```
添加配置(**注意修改路径**
```json
{
"mcpServers": {
"funstat": {
"command": "python3",
"args": [
"/完整路径/到/funstat_mcp/server.py"
]
}
}
}
```
### 步骤 7测试
```bash
cd funstat_mcp
python3 test_server.py
```
应该看到:
```
✅ 登录成功
✅ 已连接到: KT超级数据
✅ 当前账号: @你的用户名
```
### 步骤 8重启 Claude Code 并使用
完全退出并重启 Claude Code然后测试
```
你: "帮我搜索 Python 学习群组"
```
---
## 🔐 安全配置指南
### 敏感信息管理
**不要在代码中硬编码 API 凭证!**
#### 方法 1使用 .env 文件(推荐)
```bash
# .env
TELEGRAM_API_ID=你的api_id
TELEGRAM_API_HASH=你的api_hash
```
```python
# server.py
import os
from dotenv import load_dotenv
load_dotenv()
API_ID = int(os.getenv('TELEGRAM_API_ID'))
API_HASH = os.getenv('TELEGRAM_API_HASH')
```
**记得添加到 .gitignore**
```bash
echo ".env" >> .gitignore
echo "*.session" >> .gitignore
```
#### 方法 2使用配置文件
创建 `config.json`(不提交到 Git
```json
{
"api_id": 你的_api_id,
"api_hash": "你的_api_hash"
}
```
```python
# server.py
import json
with open('config.json') as f:
config = json.load(f)
API_ID = config['api_id']
API_HASH = config['api_hash']
```
---
## 👥 多用户部署示例
### 场景:团队 3 人使用
**用户 A**(你):
- API ID: 24660516
- Session: ~/telegram_sessions/funstat_bot.session
- 账号: @xiaobai_80
**用户 B**(同事):
- API ID: 12345678他自己申请的
- Session: ~/telegram_sessions/funstat_bot.session
- 账号: @colleague_account
**用户 C**(朋友):
- API ID: 87654321他自己申请的
- Session: ~/telegram_sessions/funstat_bot.session
- 账号: @friend_account
**每个人完全独立,互不影响**
---
## 📦 创建分发包
### 自动化部署脚本
创建一个 `setup.sh` 脚本:
```bash
#!/bin/bash
#
# Funstat MCP 自动部署脚本
#
echo "=================================="
echo "Funstat MCP 工具部署向导"
echo "=================================="
echo ""
# 检查 Python
if ! command -v python3 &> /dev/null; then
echo "❌ 未找到 Python 3"
echo "请先安装 Python 3.10 或更高版本"
exit 1
fi
echo "✅ Python 版本: $(python3 --version)"
echo ""
# 安装依赖
echo "📦 安装依赖..."
pip3 install -r requirements.txt
echo ""
# 检查 API 凭证
echo "=================================="
echo "配置 Telegram API 凭证"
echo "=================================="
echo ""
echo "请访问 https://my.telegram.org/apps"
echo "获取你的 API ID 和 API Hash"
echo ""
read -p "请输入你的 API ID: " api_id
read -p "请输入你的 API Hash: " api_hash
# 创建 .env 文件
cat > .env << EOF
TELEGRAM_API_ID=$api_id
TELEGRAM_API_HASH=$api_hash
EOF
echo "✅ API 凭证已保存到 .env 文件"
echo ""
# 创建 session
echo "=================================="
echo "创建 Telegram Session"
echo "=================================="
echo ""
echo "现在将引导你登录 Telegram 账号..."
echo ""
python3 create_session_safe.py
echo ""
echo "=================================="
echo "✅ 部署完成!"
echo "=================================="
echo ""
echo "下一步:"
echo "1. 配置 Claude Code参考文档"
echo "2. 重启 Claude Code"
echo "3. 测试: python3 test_server.py"
echo ""
```
使用:
```bash
chmod +x setup.sh
./setup.sh
```
---
## 🌐 Web 界面部署(高级)
如果需要提供 Web 界面供多人使用,可以创建 API 服务:
### 架构
```
多个用户浏览器
Web 界面 (FastAPI/Flask)
认证层 (JWT)
MCP Server Pool
@openaiw_bot
```
### 示例代码框架
```python
# api_server.py
from fastapi import FastAPI, Depends, HTTPException
from fastapi.security import HTTPBearer
from server import FunstatMCPServer
app = FastAPI()
security = HTTPBearer()
# 用户认证(简化版本)
async def verify_token(credentials = Depends(security)):
# 实现你的认证逻辑
if credentials.credentials != "你的密钥":
raise HTTPException(status_code=401)
return credentials
@app.post("/search")
async def search(
query: str,
credentials = Depends(verify_token)
):
server = FunstatMCPServer()
await server.initialize()
result = await server.call_tool("funstat_search", {"query": query})
await server.client.disconnect()
return {"result": result}
```
**注意**:这需要额外的开发和安全配置。
---
## 🔒 安全检查清单
在分享给其他人之前,确保:
- [ ] **移除所有个人 API 凭证**
- [ ] **移除所有 session 文件**
- [ ] **添加 .gitignore**
```
.env
config.json
*.session
*.session-journal
__pycache__/
```
- [ ] **提供清晰的文档**
- [ ] **说明数据隐私政策**
- [ ] **说明使用限制**
---
## 📄 提供给用户的文档模板
创建一个 `README_FOR_USERS.md`
```markdown
# Funstat MCP 工具 - 用户指南
## 快速开始
1. 申请 Telegram API 凭证
访问https://my.telegram.org/apps
2. 安装依赖
```bash
pip3 install -r requirements.txt
```
3. 配置 API 凭证
编辑 `server.py` 替换 API_ID 和 API_HASH
4. 创建 Session
```bash
python3 create_session_safe.py
```
5. 配置 Claude Code
添加配置到 Claude Code 配置文件
6. 测试
```bash
python3 test_server.py
```
## 支持
如有问题,请联系:[你的联系方式]
```
---
## 🎯 最佳实践总结
### 推荐做法 ✅
1. **每个用户独立部署**
- 各自申请 API 凭证
- 各自创建 session
- 各自配置 Claude Code
2. **使用环境变量**
- 不在代码中硬编码凭证
- 使用 .env 文件
- 添加到 .gitignore
3. **提供自动化脚本**
- setup.sh 一键部署
- 详细的使用文档
- 故障排除指南
### 避免做法 ❌
1. **不要共享 session 文件**
- 安全风险
- 并发冲突
- 积分混乱
2. **不要在 Git 中提交敏感信息**
- API 凭证
- Session 文件
- 配置文件
3. **不要使用同一个 API 凭证**
- 可能违反 Telegram ToS
- 配额限制问题
---
## 💡 常见问题
### Q: 多个用户会互相影响吗?
A: 不会。只要每个用户:
- 使用自己的 API 凭证
- 创建自己的 session
- 在自己的电脑上运行
就完全独立,互不影响。
### Q: 需要购买服务器吗?
A: 不需要。每个用户在自己的电脑上运行 MCP 服务器即可。
### Q: 可以共享一个 Telegram 账号吗?
A: 技术上可以,但**强烈不推荐**
- 安全风险
- Session 冲突
- 积分共享问题
### Q: 如何限制使用次数?
A: 可以在 MCP 服务器中添加使用计数:
```python
# server.py
class FunstatMCPServer:
def __init__(self):
self.usage_count = 0
self.usage_limit = 100 # 每天限制
async def call_tool(self, name, arguments):
if self.usage_count >= self.usage_limit:
raise Exception("今日使用次数已达上限")
self.usage_count += 1
# ... 原有逻辑
```
---
## 📞 支持和帮助
如果其他用户在部署时遇到问题:
1. 查看文档:`QUICK_START_GUIDE.md`
2. 运行诊断:`python3 test_server.py`
3. 检查 session`~/telegram_sessions/check_session.sh`
4. 联系你获取支持
---
**部署给其他用户?完全可以!**
只要每个人按照这个指南独立部署,就可以安全、稳定地使用 Funstat MCP 工具。