UNPKG

world-news-api-mcp

Version:

MCP server for the World News API - search news, get headlines, extract articles, and more

235 lines (177 loc) 6.78 kB
# World News API MCP Server A Model Context Protocol (MCP) server that provides access to the [World News API](https://worldnewsapi.com/). This server enables AI assistants to search for news, get top headlines, extract articles, retrieve newspaper front pages, and more through the MCP protocol. [![npm version](https://img.shields.io/npm/v/world-news-api-mcp.svg)](https://www.npmjs.com/package/world-news-api-mcp) [![npm downloads](https://img.shields.io/npm/dm/world-news-api-mcp.svg)](https://www.npmjs.com/package/world-news-api-mcp) [![License: ISC](https://img.shields.io/badge/License-ISC-blue.svg)](https://opensource.org/licenses/ISC) ## Features - **News Search**: Search and filter news by text, date, location, category, language, and more - **Top Headlines**: Get top news from any country in any language - **Newspaper Front Pages**: Retrieve front pages of newspapers from around the world - **Article Extraction**: Extract full articles from news URLs - **News Links Discovery**: Extract news links from websites - **Source Search**: Find monitored news sources - **Location Coordinates**: Get geo-coordinates for location-based filtering - **Content Analysis**: Extract entities, detect sentiment, and more ## Quick Start ### Installation ```bash npm install -g world-news-api-mcp ``` ### Setup 1. **Get a World News API key** (free at https://worldnewsapi.com/register) 2. **Set your API key as an environment variable:** ```bash # Windows (PowerShell) $env:WORLD_NEWS_API_KEY="your_api_key_here" # macOS/Linux export WORLD_NEWS_API_KEY="your_api_key_here" ``` ### Usage with MCP Clients Add this configuration to your MCP client (Claude Desktop, etc.): ```json { "servers": { "world-news-api": { "command": "world-news-api-mcp", "env": { "WORLD_NEWS_API_KEY": "your_api_key_here" } } } } ``` ### Test the Installation ```bash # Set your API key export WORLD_NEWS_API_KEY="your_key_here" # Test the server echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | world-news-api-mcp ``` ## Available Tools ### `search_news` Search and filter news by text, date, location, category, language, and more. **Parameters:** - `text` (string, optional): Text to match in news content (min 3 chars) - `source-country` (string, optional): ISO 3166 country code (e.g., "us", "gb") - `language` (string, optional): ISO 6391 language code (e.g., "en", "es") - `min-sentiment` / `max-sentiment` (number, optional): Sentiment range [-1,1] - `earliest-publish-date` / `latest-publish-date` (string, optional): Date range (YYYY-MM-DD HH:MM:SS) - `news-sources` (string, optional): Comma-separated list of sources - `authors` (string, optional): Comma-separated list of authors - `categories` (string, optional): Categories (politics, sports, business, technology, etc.) - `entities` (string, optional): Filter by entities (ORG:Tesla,PER:Elon Musk) - `location-filter` (string, optional): "latitude,longitude,radius_km" - `sort` (string, optional): Sorting criteria (publish-time) - `sort-direction` (string, optional): ASC or DESC - `offset` (number, optional): Number of results to skip - `number` (number, optional): Number of results to return (1-100, default: 10) ### `get_top_news` Get the top news from a country in a language for a specific date. **Parameters:** - `source-country` (string, required): ISO 3166 country code - `language` (string, required): ISO 6391 language code - `date` (string, optional): Date (YYYY-MM-DD), defaults to current day - `headlines-only` (boolean, optional): Return only basic info (default: false) ### `retrieve_newspaper_front_page` Get front pages of newspapers from around the world. **Parameters:** - `source-country` (string, optional): ISO 3166 country code - `source-name` (string, optional): Publication identifier (e.g., "herald-sun") - `date` (string, optional): Date (YYYY-MM-DD), earliest: 2024-07-09 ### `retrieve_news_articles` Retrieve detailed information about specific news articles by their IDs. **Parameters:** - `ids` (string, required): Comma-separated list of news IDs ### `extract_news` Extract a news article from a website to a well-structured JSON object. **Parameters:** - `url` (string, required): URL of the news article - `analyze` (boolean, optional): Analyze content (entities, sentiment, etc.) ### `extract_news_links` Extract news links from a news website. **Parameters:** - `url` (string, required): URL of the news website - `analyze` (boolean, optional): Analyze extracted content ### `search_news_sources` Search whether a news source is monitored by the World News API. **Parameters:** - `name` (string, required): (Partial) name of the source ### `get_geo_coordinates` Get latitude and longitude of a location for use in location-filter. **Parameters:** - `location` (string, required): Address or location name ## Usage Examples ### Search for recent news about AI ```json { "name": "search_news", "arguments": { "text": "artificial intelligence", "language": "en", "categories": "technology", "number": 5 } } ``` ### Get top news from the US ```json { "name": "get_top_news", "arguments": { "source-country": "us", "language": "en" } } ``` ### Extract an article from URL ```json { "name": "extract_news", "arguments": { "url": "https://www.bbc.com/news/world-us-canada-59340789", "analyze": true } } ``` ### Search for news near a location ```json { "name": "search_news", "arguments": { "text": "earthquake", "location-filter": "35.6762,139.6503,50", "language": "en" } } ``` ## Development To run in development mode: ```bash npm run dev ``` To build: ```bash npm run build ``` To test: ```bash npm test ``` ## API Rate Limits The World News API has different rate limits based on your subscription: - **Free Plan**: 150 requests per day - **Paid Plans**: Higher limits available Check the [World News API pricing](https://worldnewsapi.com/pricing) for details. ## Error Handling The server handles common API errors: - **401 Unauthorized**: Invalid API key - **402 Payment Required**: API quota exceeded - **429 Too Many Requests**: Rate limit exceeded ## License ISC ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. ## Related - [World News API Documentation](https://worldnewsapi.com/docs/) - [Model Context Protocol](https://modelcontextprotocol.io/) - [MCP SDK](https://github.com/modelcontextprotocol/typescript-sdk)