GDELT MCP Server
by MissionSquad
README.md
# GDELT MCP Server
A Model Context Protocol (MCP) server that provides access to the GDELT DOC 2.0 API for searching global news articles and images.
## Features
- **Search Articles**: Search across 65 languages of global news coverage (3 months rolling window)
- **Search Images**: Query the Visual Knowledge Graph (VGKG) for news imagery
- **Custom Defaults**: Optimized defaults (ArtList mode, JSON format, 50 records, newest first, 1 month timespan)
- **Boolean Queries**: Support for OR, AND operators and exact phrase matching
- **Flexible Timespan**: Search from 1 hour to 3 months of coverage
## Installation
```bash
npm install
npm run build
```
## Configuration
The server can be configured using environment variables. Create a `.env` file:
```bash
cp .env.example .env
```
Available options:
- `GDELT_API_TIMEOUT`: API request timeout in milliseconds (default: 30000)
- `GDELT_API_BASE_URL`: GDELT API base URL (default: https://api.gdeltproject.org/api/v2/doc/doc)
- `GDELT_DEFAULT_MAX_RECORDS`: Default maximum records to return (default: 50)
- `GDELT_DEFAULT_TIMESPAN`: Default time period for searches (default: 1month)
- `GDELT_USER_AGENT`: User agent string (default: GDELT-MCP-Server/1.0)
- `LOG_LEVEL`: Logging level - debug, info, warn, error (default: info)
## Usage
This MCP server is designed to be used with MCP-compatible clients. Add it to your MCP client configuration:
```json
{
"mcpServers": {
"gdelt": {
"command": "node",
"args": ["/path/to/gdelt-mcp-server/dist/index.js"]
}
}
}
```
## Available Tools
### search_articles
Search GDELT's global news database for articles.
**Parameters:**
- `query` (required): Search query with support for:
- Exact phrases: `"climate change"`
- OR operator: `climate OR environment`
- AND operator: `climate AND policy`
- `maxRecords` (optional): Number of results (1-250, default: 50)
- `timespan` (optional): Time period like "1month", "7d", "24h" (default: "1month")
- `sort` (optional): Sort order - DateDesc, DateAsc, ToneAsc, ToneDesc, HybridRel
- `startDateTime` (optional): Start date in YYYYMMDDHHMMSS format
- `endDateTime` (optional): End date in YYYYMMDDHHMMSS format
**Example:**
```json
{
"query": "\"climate change\" OR \"global warming\"",
"maxRecords": 25,
"timespan": "7d"
}
```
### search_images
Search GDELT's Visual Knowledge Graph for news images.
**Parameters:**
- `query` (required): Search term (e.g., "fire", "protest", "flood")
- `maxRecords` (optional): Number of images (1-250, default: 50)
- `timespan` (optional): Time period (default: "1month")
- `imageType` (optional):
- `imagetag`: Search by visual content (what the AI sees in the image)
- `imagewebtag`: Search by caption/context text
- `imageocrmeta`: Search by OCR text and metadata
**Example:**
```json
{
"query": "wildfire",
"maxRecords": 30,
"imageType": "imagetag",
"timespan": "7d"
}
```
## API Details
This server uses the GDELT DOC 2.0 API which provides:
- Rolling 3-month window of coverage (back to January 2017)
- 65 languages with English search terms
- Deep learning-powered image analysis
- Real-time and historical news data
## License
MIT
TDQS
A4.1/5.0
Scored across 2 tools
Disambiguation5/5
Each tool targets a distinct resource: articles vs. images. There is no overlap in purpose.
Naming Consistency5/5
Both tools follow a consistent 'search_' prefix with a noun, adhering to verb_noun naming.
Tool Count3/5
With only two tools, the server feels somewhat thin but remains focused. The count is borderline for its scope.
Completeness4/5
The server covers its primary domain of search (articles and images) adequately. Minor gaps like fetching specific article details are absent but not critical for a search-focused server.
Maintenance
ActivityInactive
ResponsivenessNo issues