Skip to main content
Glama
iamgaru

mcp-ai-news-server

by iamgaru
README.md
# MCP AI News Server

A Model Context Protocol (MCP) server that fetches and filters AI-related news from **20+ RSS feeds** with **scheduled notifications** and **email digests**. Get your daily AI news delivered automatically via desktop notifications or email!

## Features

- **20+ News Sources**: TechCrunch, Hacker News, arXiv, Google AI, NVIDIA, VentureBeat, and more
- **šŸ“… Scheduled Digests**: Automatic daily/weekly news delivery at your preferred time
- **šŸ”” Desktop Notifications**: Native system notifications with news summaries
- **šŸ“§ Email Digests**: Beautiful HTML emails with latest AI news
- **AI News Filtering**: Automatically filters content for AI/ML-related keywords
- **Category Selection**: Choose from Tech, AI, Research, Community, or Hacker News categories
- **Custom Source Selection**: Pick specific sources for targeted news
- **Keyword Search**: Search across all sources for specific topics
- **Parallel Fetching**: Fast performance by fetching multiple feeds simultaneously
- **MCP Integration**: Works seamlessly with Claude Desktop
- **Timezone Support**: Configure for Australian Eastern or any timezone

## Installation

```bash
# Install dependencies
npm install

# Build the project
npm run build
```

## šŸš€ Quick Start: Notifications

### Set Up Daily Digest

```
1. Enable desktop notifications
2. Configure schedule for 8 AM daily in Australia/Sydney
3. Send me a test digest now
```

That's it! You'll now get AI news every morning at 8 AM.

See [NOTIFICATIONS.md](./NOTIFICATIONS.md) for complete setup guide including email configuration.

## News Sources

**20 sources across 5 categories:**

- **Hacker News** (2): Latest posts, Front page
- **Tech News** (6): TechCrunch, Ars Technica, The Verge, Wired, Engadget, ZDNet
- **AI Publications** (6): MIT Tech Review, VentureBeat, AI Trends, Google AI, NVIDIA, Microsoft AI
- **Research** (3): arXiv AI, arXiv ML, arXiv Computational Linguistics
- **Community** (3): Dev.to, Medium AI, Medium ML

See [SOURCES.md](./SOURCES.md) for complete details on all sources and usage patterns.

## Available Tools

### 1. `get_ai_news`
Fetches recent AI-related news from multiple RSS feeds with automatic filtering.

**Parameters:**
- `limit` (optional, default: 10): Maximum number of items to return
- `category` (optional, default: "all"): Feed category - "all", "hackernews", "tech", "ai", "research", or "community"
- `sources` (optional): Array of specific feed sources (overrides category)

**Example Response:**
```
Found 3 AI-related items from 6 source(s):

1. What could possibly go wrong if an enterprise replaces all its engineers with AI?
   Source: venturebeat
   https://venturebeat.com/ai/what-could-possibly-go-wrong...
   Published: Sat, 08 Nov 2025 05:00:00 GMT

2. Terminal-Bench 2.0 launches alongside Harbor
   Source: venturebeat
   https://venturebeat.com/ai/terminal-bench-2-0...
   Published: Fri, 07 Nov 2025 23:25:00 GMT
```

### 2. `search_news`
Search for news items matching specific keywords across multiple sources.

**Parameters:**
- `keywords` (required): Keywords to search for (comma-separated)
- `limit` (optional, default: 10): Maximum number of items to return
- `category` (optional, default: "all"): Feed category to search
- `sources` (optional): Array of specific feed sources to search

**Example:**
```
Keywords: "gpt-4, chatgpt"
Category: "ai"
```

### 3. `list_sources`
List all available news sources and categories.

**No parameters required** - returns complete list of 20 sources organized by category.

### 4. `configure_schedule`
Set up scheduled digest delivery.

**Parameters:**
- `enabled` (boolean): Enable/disable scheduler
- `cronExpression` (string): When to send (e.g., "0 8 * * *" for 8 AM daily)
- `timezone` (string): Your timezone (e.g., "Australia/Sydney")
- `category` (string): News category for digest
- `limit` (number): Number of items in digest

**Example:**
```
Configure schedule: enabled true, 8 AM daily, Australia/Sydney timezone
```

### 5. `configure_notifications`
Configure email and desktop notification settings.

**Parameters:**
- `desktop` (object): Desktop notification settings
- `email` (object): Email notification settings

**Example:**
```
Enable desktop notifications
Configure email to user@example.com
```

### 6. `send_digest_now`
Send a digest immediately (testing or on-demand).

**Parameters:**
- `desktop` (boolean): Send desktop notification
- `email` (boolean): Send email notification

**Example:**
```
Send me a digest now
Send digest via email only
```

### 7. `get_config`
View current configuration including schedule and notification settings.

**Example:**
```
Show my notification settings
What's my schedule configuration?
```

## Testing

### Method 1: Testing with Claude Desktop

#### Step 1: Configure Claude Desktop

Add the server to your Claude Desktop configuration file:

**macOS Location:**
```bash
~/Library/Application Support/Claude/claude_desktop_config.json
```

**Windows Location:**
```
%APPDATA%/Claude/claude_desktop_config.json
```

**Configuration:**
```json
{
  "mcpServers": {
    "ai-news": {
      "command": "node",
      "args": ["/absolute/path/to/mcp-ai-news-server/build/index.js"]
    }
  }
}
```

**Important:** Replace `/absolute/path/to/mcp-ai-news-server` with your actual project path.

To get your absolute path, run:
```bash
pwd
```

#### Step 2: Restart Claude Desktop

Completely quit and restart Claude Desktop for the changes to take effect.

#### Step 3: Verify Installation

In Claude Desktop, look for the hammer icon (šŸ”Ø) in the input area, which indicates MCP tools are available.

#### Step 4: Test the Tools

Try these prompts in Claude Desktop:

**Basic queries:**
```
Get me the latest AI news
List all available news sources
Show me AI news from tech publications
```

**Category-specific:**
```
Get AI news from research sources
Show me news from AI company blogs
What's new on Hacker News about AI?
```

**Advanced searches:**
```
Search for "GPT-4" across all sources
Find news about "ChatGPT" in tech publications
Look for "transformer" in research papers
Get 15 AI news items from TechCrunch and VentureBeat
```

---

### Method 2: Testing with MCP Inspector

The MCP Inspector provides a debugging interface for testing MCP servers.

#### Install MCP Inspector:
```bash
npm install -g @modelcontextprotocol/inspector
```

#### Run Inspector:
```bash
npx @modelcontextprotocol/inspector node build/index.js
```

This will open a web interface where you can:
- View available tools
- Test tool calls with custom parameters
- See request/response logs
- Debug server behavior

---

### Method 3: Testing Standalone (Manual Testing)

You can test the server directly using Node.js with JSON-RPC messages.

#### Create a test script `test.js`:
```javascript
import { spawn } from 'child_process';

const server = spawn('node', ['build/index.js']);

// Send initialize request
const initRequest = {
  jsonrpc: '2.0',
  id: 1,
  method: 'initialize',
  params: {
    protocolVersion: '2024-11-05',
    capabilities: {},
    clientInfo: { name: 'test-client', version: '1.0.0' }
  }
};

server.stdin.write(JSON.stringify(initRequest) + '\n');

// Send list tools request
setTimeout(() => {
  const listToolsRequest = {
    jsonrpc: '2.0',
    id: 2,
    method: 'tools/list',
    params: {}
  };
  server.stdin.write(JSON.stringify(listToolsRequest) + '\n');
}, 1000);

// Send call tool request
setTimeout(() => {
  const callToolRequest = {
    jsonrpc: '2.0',
    id: 3,
    method: 'tools/call',
    params: {
      name: 'get_ai_news',
      arguments: { limit: 5, source: 'newest' }
    }
  };
  server.stdin.write(JSON.stringify(callToolRequest) + '\n');
}, 2000);

server.stdout.on('data', (data) => {
  console.log('Response:', data.toString());
});

server.stderr.on('data', (data) => {
  console.error('Server log:', data.toString());
});

setTimeout(() => {
  server.kill();
}, 5000);
```

#### Run the test:
```bash
node test.js
```

---

### Method 4: Testing with curl (JSON-RPC over stdio)

For quick testing, you can send JSON-RPC messages directly:

```bash
# Start the server
node build/index.js

# In another terminal, send a test message (note: this is complex for stdio)
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node build/index.js
```

---

## Development

### Project Structure
```
mcp-ai-news-server/
ā”œā”€ā”€ src/
│   └── index.ts          # Main server implementation
ā”œā”€ā”€ build/                # Compiled JavaScript (generated)
ā”œā”€ā”€ package.json          # Dependencies and scripts
ā”œā”€ā”€ tsconfig.json         # TypeScript configuration
└── README.md            # This file
```

### Development Mode
```bash
# Watch mode (rebuild on changes)
npm run dev
```

### Scripts
- `npm run build` - Compile TypeScript to JavaScript
- `npm run start` - Run the compiled server
- `npm run dev` - Build and run in one command

## AI Keywords

The server filters content based on these keywords:
- ai, artificial intelligence
- machine learning, ml
- deep learning
- neural network
- llm, gpt, chatgpt
- claude, gemini
- openai, anthropic
- generative
- transformer
- nlp
- computer vision
- reinforcement learning

## Troubleshooting

### Server not appearing in Claude Desktop

1. **Check config file path**: Ensure you're editing the correct `claude_desktop_config.json`
2. **Verify absolute path**: The path in the config must be absolute, not relative
3. **Check build**: Run `npm run build` to ensure the server is compiled
4. **Restart Claude Desktop**: Completely quit and reopen the application
5. **Check logs**: Look at Claude Desktop's logs for errors

### Finding Claude Desktop Logs

**macOS:**
```bash
~/Library/Logs/Claude/
```

**Windows:**
```
%APPDATA%/Claude/logs/
```

### Testing if server starts correctly

```bash
node build/index.js
# Should output: "AI News MCP Server running on stdio"
# Press Ctrl+C to exit
```

### RSS Feed Issues

If the RSS feeds are slow or unavailable:
- Check your internet connection
- The Hacker News RSS feeds might be temporarily down
- Try again in a few minutes

## Environment

- **Node.js**: v20+ recommended
- **TypeScript**: v5+
- **MCP SDK**: v1.0.0+

## License

MIT

## Contributing

Contributions welcome! Please feel free to submit issues or pull requests.

## Useful Links

- [MCP Documentation](https://modelcontextprotocol.io/)
- [MCP SDK](https://github.com/modelcontextprotocol/sdk)
- [Claude Desktop](https://claude.ai/download)
- [Hacker News RSS](https://hnrss.org/)