内容
# Weather Briefing MCP Server
一个用于获取中国气象局天气简报信息的MCP服务器。
## 功能特性
- 获取当前的台风预警信息(仅在3天内有预警信息发布时返回)
- 获取当前的每日天气公报
- 获取当前的重要天气提示
- 自动将网页内容转换为Markdown格式
- 文件管理(保存在项目 temp 目录,每次执行前清理)
- 自动下载并保存图片到本地
- 智能内容清洗(移除无意义字符、HTML实体等)

## 数据源
- **中央气象台 nmc.cn**
## 快速开始
### 一键安装(推荐)
```bash
./setup.sh
```
脚本会自动创建虚拟环境并安装依赖,完成后会显示配置信息。
### Cherry Studio 配置
**推荐方式(使用启动脚本):**
- 命令: `/完整路径/weather-briefing/start-mcp.sh`
- 参数: 留空
**或者直接使用 venv Python:**
- 命令: `/完整路径/weather-briefing/venv/bin/python`
- 参数: `["/完整路径/weather-briefing/wb_mcpserver.py"]`
### Claude Desktop 配置
**推荐方式(使用启动脚本):**
```json
{
"mcpServers": {
"weather-briefing": {
"command": "/完整路径/weather-briefing/start-mcp.sh"
}
}
}
```
**或者直接使用 venv Python:**
```json
{
"mcpServers": {
"weather-briefing": {
"command": "/完整路径/weather-briefing/venv/bin/python",
"args": ["/完整路径/weather-briefing/wb_mcpserver.py"]
}
}
}
```
## 使用方法
配置完成后,在 Cherry Studio 或 Claude Desktop 中可以:
- 询问:"请获取台风预警信息" - 调用 `get_typhoon_warning` 工具
- 询问:"请获取每日天气公报" - 调用 `get_daily_weather_briefing` 工具
- 询问:"请获取重要天气提示" - 调用 `get_important_bulletin` 工具
每个工具都会返回独立的 Markdown 格式内容,包含文字和本地图片。
## 测试
```bash
# 测试核心功能
python3 test_server.py
# 测试完整流程
python3 run_server.py
```
## 故障排除
### Connection closed 错误
说明依赖未安装或脚本无法执行。解决方案:
- 运行 `./setup.sh` 创建虚拟环境并安装依赖
- 或手动安装:`pip3 install -r requirements.txt`
### 为什么要使用虚拟环境?
- macOS 系统保护了系统 Python,不允许直接安装包
- 虚拟环境是 Python 开发的最佳实践,避免包冲突
- 使用 `start-mcp.sh` 脚本可以简化配置
### 找不到命令
- 检查路径是否正确(使用绝对路径)
- 确保脚本有执行权限:`chmod +x start-mcp.sh`
### 网络问题
- 确保能够访问中国气象局网站
- 检查防火墙设置
## 技术细节
### 可用工具
- `get_typhoon_warning`: 获取台风预警信息(仅返回3天内发布的信息)
- `get_daily_weather_briefing`: 获取每日天气公报
- `get_important_bulletin`: 获取重要天气提示
### 特殊处理逻辑
- 台风信息只有在3天内发布时才会返回,避免过时信息
- 文件保存在项目 temp 目录,图片按类型保存在 temp/attachments/{typhoon|daily|bulletin} 目录
- 图片使用 MD5 命名,防止冲突
- 每次执行前会清理 temp 目录,保留最新数据
- 自动提取网页正文内容,过滤导航、广告等无关信息
- 智能清洗 Markdown 内容:
- 替换 HTML 实体(` ` 等)
- 移除多余的星号和空白行
- 自动添加标题格式
### 文件结构
```
weather-briefing/
├── wb_mcpserver.py # MCP 服务器主程序
├── start-mcp.sh # 启动脚本(推荐使用)
├── setup.sh # 一键安装脚本
├── requirements.txt # Python 依赖
├── venv/ # 虚拟环境目录
└── temp/ # 临时文件目录
├── typhoon.md # 台风预警 Markdown
├── daily.md # 每日天气公报 Markdown
├── bulletin.md # 重要天气提示 Markdown
└── attachments/ # 图片目录
├── typhoon/ # 台风图片
├── daily/ # 每日天气图片
└── bulletin/ # 重要天气图片
```
### 依赖项
- mcp: MCP协议支持
- httpx: HTTP客户端
- beautifulsoup4: HTML解析
- markitdown: HTML到Markdown转换
## 开发说明
如需修改或扩展功能:
1. 修改 `WEATHER_SOURCES` 字典添加新的数据源
2. 调整 `extract_main_content` 方法改进内容提取
3. 修改 `is_typhoon_recent` 方法调整台风信息的时效性判断
4. 调整 `clean_markdown` 方法自定义内容清洗规则