Google News MCP Agent
by Tatsuya50
README.md
# Google News MCP Agent
An MCP (Model Context Protocol) server that fetches news articles from Google News, vectorizes them locally using ChromaDB, and allows for semantic search. This tool enables AI agents (like Claude) to stay updated with specific topics and query stored knowledge effectively.
## Features
- **Ingest News**: Fetch headlines and summaries from Google News by topic.
- **Local Vector Store**: Automatically embeds and stores articles in a local ChromaDB instance (persisted in `chroma_db/`).
- **Semantic Search**: Search through the ingested news using natural language queries to find relevant information.
- **Privacy First**: Runs entirely locally (excluding the initial news fetch). No API keys required for embeddings (uses `sentence-transformers`).
## Prerequisites
- Python 3.10 or higher
- `uv` (recommended) or `pip`
## Installation
### Using uv (Recommended)
1. Clone the repository:
```bash
git clone https://github.com/Tatsuya50/google-news-mcp.git
cd google-news-mcp
```
2. Install dependencies:
```bash
uv sync
```
### Using pip
1. Clone the repository and navigate to the directory.
2. Install the required packages:
```bash
pip install -r requirements.txt
```
## Configuration (Claude Desktop)
To use this with Claude Desktop, add the following configuration to your MCP config file (typically `~/AppData/Roaming/Claude/claude_desktop_config.json` on Windows):
```json
{
"mcpServers": {
"google-news": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\YOUR_USERNAME\\path\\to\\google-news-mcp",
"run",
"python",
"mcp_server.py"
]
}
}
}
```
*Note: Replace `C:\\Users\\YOUR_USERNAME\\path\\to\\google-news-mcp` with the actual absolute path to this repository.*
## Tools
### `ingest_news`
Fetches and indexes news articles.
- **topic**: The topic to search for (e.g., "Generative AI", "Stock Market").
- **max_results**: (Optional) Number of articles to fetch (default: 5).
### `search_news`
Searches the stored local database.
- **query**: The question or topic to search for (e.g., "What are the latest AI trends?").
- **n_results**: (Optional) Number of results to return (default: 3).
## Development
Run the server locally for testing:
```bash
uv run python mcp_server.py
```
Inspect the database contents:
```bash
uv run python inspect_db.py
```
TDQS
B3.4/5.0
Scored across 2 tools
Disambiguation5/5
The two tools have clearly distinct purposes: one fetches and stores news, the other searches stored articles. No overlap exists.
Naming Consistency5/5
Both tools follow the verb_noun pattern consistently: ingest_news and search_news.
Tool Count4/5
Two tools is minimal but appropriate for the narrow scope of fetching and searching news. It's slightly thin but not excessive.
Completeness3/5
The tools cover the basic workflow of ingesting and searching, but lack operations like deleting stored articles or listing topics, which are minor gaps.
Maintenance
ActivityInactive
ResponsivenessNo issues