返回 MCP 目录
public公开dns本地运行

news-mcp

一个智能新闻搜索MCP服务器,支持多API自动切换和配额管理,提供多语言新闻检索服务

article

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
}

🔧 技术细节

智能切换的工作原理

  1. 优先级顺序:按可靠性和配额限制顺序尝试API。
  2. 配额跟踪:系统跟踪每个API的每日使用情况。
  3. 自动故障转移:当某个API失败或达到限制时,自动尝试下一个API。
  4. 成功保证:持续尝试,直到获得成功响应或所有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

  1. src/config.ts 中添加API配置。
  2. src/tools/newsSearch.ts 中实现特定于API的请求逻辑。
  3. .env.example 中添加环境变量。

🤝 贡献

欢迎贡献代码!请随时提交拉取请求。

  1. 分叉仓库。
  2. 创建你的功能分支 (git checkout -b feature/AmazingFeature)。
  3. 提交你的更改 (git commit -m 'Add some AmazingFeature')。
  4. 推送到该分支 (git push origin feature/AmazingFeature)。
  5. 打开拉取请求。

📄 许可证

本项目采用Apache License 2.0许可 - 详情请参阅 LICENSE 文件。

👨‍💻 作者

陈星宇

🙏 致谢

  • 模型上下文协议 提供了出色的MCP框架。
  • 所有新闻API提供商提供了慷慨的免费套餐。
  • 开源社区提供了灵感和支持。

⭐ 如果这个项目对你有帮助,请给它点个星!

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端