README.mdā¢3.42 kB
# Mediastack News MCP Server
A FastMCP server that exposes the Mediastack News API as MCP (Model Context Protocol) tools. This server can be used as a plug-and-play backend for Smithery.ai or any other MCP-compatible agent platform.
## ⨠Features
- **`get_latest_news`**: Fetches the most recent news stories with various filtering options.
- **`get_sources`**: Lists available news sources with filtering capabilities.
## š Installation
1. Clone this repository:
```bash
git clone <repository-url>
cd NewsMCP_with_MediastackAPI
```
2. Install the required Python packages:
```bash
pip install -r requirements.txt
```
## āļø Configuration
This server requires a Mediastack API key to function.
1. Get a free API key from [mediastack.com](https://mediastack.com/).
2. Create a file named `.env` in the project's root directory.
3. Add your API key to this file in the following format:
```
MEDIASTACK_API_KEY=your_api_key_here
```
The server will automatically load this environment variable when a tool is called.
## š» Running Locally
To start the MCP server, run the following command:
```bash
python server.py
```
By default, the server will start on `http://0.0.0.0:8080`.
## š ļø Available Tools
### 1. `get_latest_news`
Fetches the most recent news stories from Mediastack.
**Parameters:**
- `keywords` (Optional): Search terms to filter news.
- `sources` (Optional): News sources, comma-separated (e.g., "cnn,bbc").
- `countries` (Optional): Country codes, comma-separated (e.g., "us,gb").
- `languages` (Optional): Language codes, comma-separated (e.g., "en,fr").
- `categories` (Optional): News categories, comma-separated.
- `date` (Optional): A specific date or date range (YYYY-MM-DD).
- `sort` (Optional): Sort order (`published_desc`, `published_asc`, `popularity`).
- `limit` (Optional): Maximum number of results to return (default: 25, max: 100).
- `offset` (Optional): Pagination offset.
### 2. `get_sources`
Lists available news sources from Mediastack.
**Parameters:**
- `search` (Optional): A search term to filter sources.
- `sources` (Optional): Specific sources, comma-separated.
- `countries` (Optional): Country codes, comma-separated.
- `languages` (Optional): Language codes, comma-separated.
- `categories` (Optional): News categories, comma-separated.
- `limit` (Optional): Maximum number of results to return (default: 25, max: 100).
- `offset` (Optional): Pagination offset.
## āļø Deployment on Smithery.ai
1. Push this repository to GitHub.
2. Connect your GitHub repository to Smithery.ai.
3. Smithery will automatically detect the `smithery.yaml` configuration.
4. Set your `MEDIASTACK_API_KEY` in Smithery's environment variables.
5. Deploy and start using the MCP tools.
For more information, visit the [Smithery.ai Documentation](https://smithery.ai/docs).
## š Project Structure
```
.
āāā app.py # MCP tool definitions
āāā server.py # FastMCP server setup
āāā requirements.txt # Python dependencies
āāā smithery.yaml # Smithery deployment configuration
āāā Dockerfile # Instructions for building a Docker image
āāā LICENSE # Project license
āāā .env # (Local) Environment variables
āāā README.md # This file
```
## š License
This project is licensed under the [MIT License](LICENSE).