README
🚀 新闻MCP服务器
这是一个智能新闻搜索MCP(模型上下文协议)服务器,具备自动API切换功能,可实现可靠的新闻获取。从此无需再担心API使用限制!
🚀 快速开始
1. 安装
# 克隆仓库
git clone https://github.com/guangxiangdebizi/news-mcp.git
cd news-mcp
# 安装依赖
npm install
# 复制环境模板
cp .env.example .env
2. API配置
从以下任意服务获取免费API密钥(只需一个,但多个密钥可提高可靠性):
| 服务 | 每日限制 | 注册链接 | 优先级 | |---------|-------------|--------------|----------| | TheNewsAPI | 无限制* | 获取密钥 | 🥇 最高 | | NewsData.io | 约200次请求 | 获取密钥 | 🥈 高 | | NewsAPI.org | 100次请求 | 获取密钥 | 🥉 中等 | | GNews | 100次请求 | 获取密钥 | 🏅 中等 | | Twingly | 有试用版 | 获取密钥 | 🎖️ 低 |
*免费套餐声称无限制
3. 配置环境
编辑 .env 文件并添加你的API密钥:
# 至少添加一个API密钥(多个密钥可提高可靠性)
THE_NEWS_API_KEY=your_api_key_here
NEWSDATA_IO_KEY=your_api_key_here
NEWSAPI_ORG_KEY=your_api_key_here
GNEWS_API_KEY=your_api_key_here
TWINGLY_API_KEY=your_api_key_here
4. 构建并运行
# 构建项目
npm run build
# 启动MCP服务器
npm start
# 或者以开发模式运行
npm run dev
✨ 主要特性
- 🔄 智能API切换:当某个新闻API达到使用限制时,自动在多个新闻API之间切换。
- 🆓 多个免费API:支持5个以上免费新闻API,每日配额充足。
- 📊 配额管理:智能跟踪每日API使用限制。
- 🌍 多语言支持:支持20多种语言的新闻搜索。
- ⚡ 快速可靠:故障转移机制确保始终能获取结果。
- 🛠️ 易于设置:通过环境变量进行简单配置。
💻 使用示例
基础用法
与Claude Desktop配合使用
添加到Claude Desktop配置中:
标准输入输出模式(本地开发):
{
"mcpServers": {
"news-mcp": {
"command": "node",
"args": ["path/to/news-mcp/build/index.js"]
}
}
}
服务器发送事件(SSE)模式(Web访问):
# 启动SSE服务器
npm run sse
{
"mcpServers": {
"news-mcp": {
"type": "sse",
"url": "http://localhost:3100/sse",
"timeout": 600
}
}
}
可用工具
search_news
使用自动API切换功能搜索新闻文章。
参数:
query(必需):搜索关键词或主题。language(可选):语言代码(默认:"en")。limit(可选):文章数量(1 - 10,默认:5)。
示例:
// 搜索科技新闻
{
"query": "artificial intelligence",
"language": "en",
"limit": 5
}
// 搜索中文新闻
{
"query": "科技新闻",
"language": "zh",
"limit": 3
}
🔧 技术细节
智能切换的工作原理
- 优先级顺序:按可靠性和配额限制顺序尝试API。
- 配额跟踪:系统跟踪每个API的每日使用情况。
- 自动故障转移:当某个API失败或达到限制时,自动尝试下一个API。
- 成功保证:持续尝试,直到获得成功响应或所有API都已耗尽。
TheNewsAPI (∞) → NewsData.io (200) → NewsAPI.org (100) → GNews (100) → Twingly (50)
支持的语言
- 英语(en) - 所有API支持
- 中文(zh) - 大多数API支持
- 西班牙语(es) - 大多数API支持
- 法语(fr) - 大多数API支持
- 德语(de) - 大多数API支持
- 以及15种以上其他语言
🛠️ 开发
项目结构
src/
├── index.ts # MCP服务器入口点
├── config.ts # API配置管理
└── tools/
└── newsSearch.ts # 智能新闻搜索工具
脚本
npm run build # 构建TypeScript项目
npm run dev # 开发模式,实时监听文件变化
npm start # 启动已构建的服务器
npm run sse # 在端口3100上启动SSE服务器
添加新API
- 在
src/config.ts中添加API配置。 - 在
src/tools/newsSearch.ts中实现特定于API的请求逻辑。 - 在
.env.example中添加环境变量。
🤝 贡献
欢迎贡献代码!请随时提交拉取请求。
- 分叉仓库。
- 创建你的功能分支 (
git checkout -b feature/AmazingFeature)。 - 提交你的更改 (
git commit -m 'Add some AmazingFeature')。 - 推送到该分支 (
git push origin feature/AmazingFeature)。 - 打开拉取请求。
📄 许可证
本项目采用Apache License 2.0许可 - 详情请参阅 LICENSE 文件。
👨💻 作者
陈星宇
- 🌐 网站:GitHub个人资料
- 📧 邮箱:guangxiangdebizi@gmail.com
- 💼 LinkedIn:陈星宇
- 📦 NPM:@xingyuchen
🙏 致谢
- 模型上下文协议 提供了出色的MCP框架。
- 所有新闻API提供商提供了慷慨的免费套餐。
- 开源社区提供了灵感和支持。
⭐ 如果这个项目对你有帮助,请给它点个星!
Scan to join WeChat group