# What Happen MCP
为 [What Happen](https://github.com/LYX9527/what-happen) 项目提供后端数据服务的 MCP (Model Context Protocol) 服务器。
## 项目简介
本项目是 [What Happen](https://github.com/LYX9527/what-happen) 新闻聚合平台的官方 MCP 服务器,提供:
- 📰 **多平台新闻聚合**: 支持 70+ 新闻平台的数据获取
- 🔌 **MCP 协议支持**: 可作为 MCP 工具集成到支持 MCP 的应用中
- 🖥️ **CLI 工具**: 独立的命令行工具,支持 JSON 和友好格式输出
- 🚀 **高性能**: 基于 Cheerio + Axios 的轻量级爬虫方案
## 与 What Happen 前端的配合
本项目专为 [What Happen](https://github.com/LYX9527/what-happen) 前端项目提供后端 API 服务,支持:
- `GET /platforms` - 获取可用新闻平台配置
- `GET /news` - 获取新闻数据,支持平台过滤
### 配置 What Happen 前端
在前端项目的 `.env` 文件中配置:
```bash
VITE_API_BASE_URL=http://localhost:10010
```
## 安装
### 作为 CLI 工具使用
```bash
# 全局安装
npm install -g what-happen-mcp
# 或本地安装
npm install what-happen-mcp
# 或使用 npx 直接运行(无需安装)
npx what-happen-mcp
```
#### 使用 npx 的优势
- **无需安装**:直接运行,不占用全局空间
- **自动更新**:每次运行都使用最新版本
- **版本灵活**:可以指定特定版本 `npx what-happen-mcp@0.1.0`
### 作为 MCP 服务器使用
在 MCP 配置文件中添加:
**推荐使用 npx(无需安装):**
```json
{
"mcpServers": {
"what-happen": {
"command": "npx",
"args": [
"-y",
"what-happen-mcp@latest"
]
}
}
}
```
**全局安装版本:**
```json
{
"mcpServers": {
"what-happen": {
"type": "stdio",
"command": "what-happen-mcp",
"env": {},
"alwaysAllow": ["get_news_by_platform", "get_news_by_category", "list_platforms"]
}
}
}
```
**本地路径版本:**
```json
{
"mcpServers": {
"what-happen": {
"type": "stdio",
"command": "node",
"args": [
"path/to/what-happen-mcp/build/index.js"
],
"env": {},
"alwaysAllow": ["get_news_by_platform", "get_news_by_category", "list_platforms"]
}
}
}
```
**平台差异说明:**
- **Linux/macOS**: 直接使用 `node` 命令和脚本路径。Node.js 在这些系统上可作为可执行文件直接访问。
- **Windows**: 使用 `cmd /c` 前缀来通过命令处理器运行 `node`。这是因为 Windows 上 Node.js 通常作为 `.cmd` 脚本安装在 PATH 中,需要 cmd 来解析。
- **跨平台替代方案**: 如果你的环境已配置,也可在 Windows 上尝试直接使用 `node` 命令(某些 Node.js 安装方式支持),或使用 `node.cmd`。
请将 `path/to/what-happen-mcp` 替换为实际的项目路径(绝对路径推荐)。
## CLI 使用方法
### 列出所有可用平台
```bash
# 使用 npx 直接运行(推荐)
npx what-happen list
# 或使用全局安装的命令
what-happen list
```
### 获取特定平台新闻
```bash
# 获取 GitHub 热门项目
npx what-happen get --platform github --limit 5
# 获取微博热搜
npx what-happen get --platform weibo --limit 10
# JSON 格式输出
npx what-happen get --platform zhihu --json
```
### 获取分类新闻
```bash
# 获取科技资讯
npx what-happen get --category tech --limit 15
# 获取热搜榜
npx what-happen get --category hot --limit 20
```
## MCP 工具
### 可用工具
1. **get_news_by_platform** - 获取特定平台新闻
- 参数: `platform` (必需), `limit` (可选)
- 支持平台: weibo, github, zhihu, baidu 等 70+ 平台
2. **get_news_by_category** - 获取分类新闻
- 参数: `category` (必需), `limit` (可选)
- 支持分类: hot, tech, finance, social, entertainment, sports, car
3. **list_platforms** - 列出所有平台和分类
- 参数: 无
### MCP 使用示例
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_news_by_platform",
"arguments": {
"platform": "github",
"limit": 5
}
}
}
```
## 支持的平台
### 热搜榜
- 微博热搜、百度热搜、抖音热点、知乎热榜、快手热门、今日头条
### 科技资讯
- GitHub趋势、36氪、IT之家、Solidot、V2EX、掘金、CSDN、少数派等
### 社会新闻
- 澎湃新闻、参考消息、联合早报、贴吧、靠谱新闻、虎扑
### 娱乐资讯
- B站热门、豆瓣电影、百度电视剧、酷狗音乐、QQ音乐等
### 体育赛事
- 虎扑LOL、FIFA、NBA、CBA、中超、Valorant等
### 汽车资讯
- 懂车帝、汽车之家等
### 财经新闻
- 华尔街见闻、集思录、财联社、格隆汇、股票市场等
## 开发
### 本地开发
```bash
# 克隆仓库
git clone https://github.com/LYX9527/what-happen-mcp.git
cd what-happen-mcp
# 安装依赖
npm install
# 构建
npm run build
# 运行 CLI
npm run cli -- list
# 运行 MCP 服务器
npm start
```
### 添加新平台
1. 在 `src/aggregator.ts` 中添加新的 API 函数
2. 在 `initializeApis()` 方法中注册新平台
3. 更新 `initializePlatforms()` 中的平台配置
4. 重新构建项目
## API 接口
### 获取平台列表
```
GET /platforms
```
返回所有可用的新闻平台配置。
### 获取新闻数据
```
GET /news?platform={platform}&limit={limit}
```
参数:
- `platform`: 平台名称(可选)
- `limit`: 返回数量限制(可选)
响应格式:
```json
{
"code": 200,
"msg": "success",
"data": [
{
"id": "string",
"title": "string",
"url": "string",
"extra": {
"info": "string",
"time": "string",
"rank": 0,
"thumbnail": { "url": "string" }
}
}
]
}
```
## 许可证
本项目采用 MIT 许可证 - 与 [What Happen](https://github.com/LYX9527/what-happen) 前端项目保持一致。
## 相关项目
- [What Happen 前端](https://github.com/LYX9527/what-happen) - 现代化的新闻聚合平台前端
- [What Happen MCP](https://github.com/LYX9527/what-happen-mcp) - 本项目,提供后端数据服务
## 贡献
欢迎贡献代码!请查看贡献指南了解详情。
- Fork 本仓库
- 创建功能分支 (`git checkout -b feature/amazing-feature`)
- 提交更改 (`git commit -m 'Add some amazing feature'`)
- 推送到分支 (`git push origin feature/amazing-feature`)
- 创建 Pull Request
## 致谢
- 感谢所有提供公开 API 的新闻平台
- 使用 Vue 3 和现代 Web 技术构建
- 为统一新闻阅读体验而生