News MCP Server
A smart news search server that automatically switches between multiple news APIs when one reaches its limit, enabling reliable searching across 20+ languages without worrying about API quotas.
README Documentation
š° News MCP Server
A smart news search MCP (Model Context Protocol) server with automatic API switching for reliable news fetching. Never worry about API limits again!
⨠Features
- š Smart API Switching: Automatically switches between multiple news APIs when one reaches its limit
- š Multiple Free APIs: Supports 5+ free news APIs with generous daily quotas
- š Quota Management: Intelligent tracking of daily API usage limits
- š Multi-language Support: Search news in 20+ languages
- ā” Fast & Reliable: Failover mechanism ensures you always get results
- š ļø Easy Setup: Simple configuration with environment variables
š Quick Start
1. Installation
# Clone the repository
git clone https://github.com/guangxiangdebizi/news-mcp.git
cd news-mcp
# Install dependencies
npm install
# Copy environment template
cp .env.example .env
2. API Configuration
Get free API keys from any of these services (you only need one, but more = better reliability):
| Service | Daily Limit | Sign Up Link | Priority |
|---|---|---|---|
| TheNewsAPI | Unlimited* | Get Key | š„ Highest |
| NewsData.io | ~200 requests | Get Key | š„ High |
| NewsAPI.org | 100 requests | Get Key | š„ Medium |
| GNews | 100 requests | Get Key | š Medium |
| Twingly | Trial available | Get Key | šļø Low |
*Claimed unlimited for free tier
3. Configure Environment
Edit .env file and add your API keys:
# Add at least one API key (more is better for reliability)
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. Build & Run
# Build the project
npm run build
# Start the MCP server
npm start
# Or run in development mode
npm run dev
š§ Usage
With Claude Desktop
Add to your Claude Desktop configuration:
Stdio Mode (Local Development):
{
"mcpServers": {
"news-mcp": {
"command": "node",
"args": ["path/to/news-mcp/build/index.js"]
}
}
}
SSE Mode (Web Access):
# Start SSE server
npm run sse
{
"mcpServers": {
"news-mcp": {
"type": "sse",
"url": "http://localhost:3100/sse",
"timeout": 600
}
}
}
Available Tools
search_news
Search for news articles with automatic API switching.
Parameters:
query(required): Search keywords or topicslanguage(optional): Language code (default: "en")limit(optional): Number of articles (1-10, default: 5)
Example:
// Search for technology news
{
"query": "artificial intelligence",
"language": "en",
"limit": 5
}
// Search for Chinese news
{
"query": "ē§ęę°é»",
"language": "zh",
"limit": 3
}
š§ How Smart Switching Works
- Priority Order: APIs are tried in order of reliability and quota limits
- Quota Tracking: System tracks daily usage for each API
- Automatic Failover: When an API fails or reaches limit, automatically tries the next one
- Success Guarantee: Continues until successful response or all APIs exhausted
TheNewsAPI (ā) ā NewsData.io (200) ā NewsAPI.org (100) ā GNews (100) ā Twingly (50)
š Supported Languages
- English (en) - All APIs
- Chinese (zh) - Most APIs
- Spanish (es) - Most APIs
- French (fr) - Most APIs
- German (de) - Most APIs
- And 15+ more languages
š ļø Development
Project Structure
src/
āāā index.ts # MCP server entry point
āāā config.ts # API configuration management
āāā tools/
āāā newsSearch.ts # Smart news search tool
Scripts
npm run build # Build TypeScript
npm run dev # Development mode with watch
npm start # Start built server
npm run sse # Start SSE server on port 3100
Adding New APIs
- Add API configuration to
src/config.ts - Implement API-specific request logic in
src/tools/newsSearch.ts - Add environment variable to
.env.example
š¤ Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
š License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
šØāš» Author
Xingyu Chen
- š Website: GitHub Profile
- š§ Email: guangxiangdebizi@gmail.com
- š¼ LinkedIn: Xingyu Chen
- š¦ NPM: @xingyuchen
š Acknowledgments
- Model Context Protocol for the amazing MCP framework
- All the news API providers for their generous free tiers
- The open-source community for inspiration and support
ā If this project helped you, please give it a star!