Ultimate MCP researcher cluster with research, socioeconomy, and news servers
cluster-mcp provides 29 well-distributed tools across 6 domain servers (environment, health, news, research, socioeconomy, trade). All tools have descriptions and parameter schemas visible in the source. However, quality is inconsistent. Strengths: clear verb-prefixed naming (env_*, health_*, news_*, research_*, socio_*, trade_*), all parameters have type declarations and descriptions, structured input schemas using Zod. Weaknesses: descriptions are brief (many 50-100 chars, below the 194-char baseline), output schemas are not documented in the tool definitions, error handling strategies are not visible in the provided source, and dependencies between tools are not documented. Tools like socio_compare_regions and socio_list_semantic_ids use enums effectively (category filtering), but most tools lack constraint documentation. No evidence of pagination or result limits being enforced. Parameter naming is mostly consistent (locationId, semanticId, etc.), though some tools mix snake_case and camelCase. Security practices cannot be fully assessed from source snippets, but API keys appear injected via environment (OPENAQ_API_KEY, CONTACT_EMAIL).
Get air quality measurements for a specific parameter, country, city, or time period
Get averaged air quality measurements with specified aggregation periods
Get information about data availability for a location and parameter
Get historical air quality measurements for a location and parameter
Get the latest air quality measurements at a specific location
Search for air quality monitoring locations by country, city, bounding box, or coordinates
Output schemas not documented. Tool definitions show input schemas but descriptions lack explicit documentation of return types and response fields. LLMs cannot plan downstream tool calls or extract required data without knowing what fields are available.
Descriptions are inconsistently brief (many 40 - 80 chars vs. 194-char baseline). Examples: 'Get air quality measurements for a specific parameter, country, city, or time period' (80 chars) lacks guidance on WHEN to call this vs. env_search_locations, and no dependency hints like 'Call env_search_locations first to find a location ID.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 73 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 43 | - | v1 |
Compare health indicators across multiple countries
Get metadata about a health indicator from its source provider
Get health indicator time series data for specific geographies and years
Search for health indicators by query
Fetch and extract text content from a single news article
Fetch and extract text content from multiple news articles
Search for news articles using GDELT DOC 2.0
Get a timeline of news mentions for a query from GDELT
Get BibTeX citation format for an academic paper by DOI
Retrieve detailed information about an academic paper by DOI
Search academic papers by query with filtering options for year range, citation count, open access status, and sorting
Compare socioeconomic indicators across multiple regions for a given year
Explain the semantic routing decision for an indicator and optional geography
Get geographic and temporal coverage information for a socioeconomic indicator
Get the latest available socioeconomic data for an indicator and geography
Get socioeconomic time series data for a semantic indicator with geographic and temporal filtering
Get socioeconomic time series data in batch for multiple geographies
List available semantic identifiers for socioeconomic indicators with optional category filtering
Convert a region code between ISO and NUTS coding systems
Search for socioeconomic indicators by query string
Get trade matrix data from UN Comtrade for specific reporters, partners, and commodities
List HS commodity code chapters for a specific section
Search for Harmonized System (HS) commodity codes by description or code
No pagination or result-limit enforcement visible. Tools like env_search_locations (limit param) and news_search (max param) accept limits but descriptions don't state defaults or max caps. Without explicit limits in the description (e.g., 'max 100 results'), LLMs may request huge datasets.
Tool chain dependencies not documented. E.g., env_get_historical_measurements requires a locationId, which users typically find via env_search_locations. But no tool description hints at this prerequisite or what fields to pass between calls. Agents must discover this via trial-and-error.
Error handling strategies not visible in source. No evidence of recovery guidance, classification (retryable vs. user-fixable vs. fatal), or actionable error messages. If an API key is invalid or a location ID doesn't exist, the agent receives no guidance on what to do next.
Parameter naming consistency: mixed camelCase (locationId, semanticId) and snake_case (min_citations, cited_by_count). LLMs tolerate this, but inconsistency increases cognitive load. research_search_papers uses snake_case for filters; socio_get_series uses camelCase. Pick one convention project-wide.
Some parameter descriptions lack format/constraint details. E.g., 'period' appears in 4 tools (env_get_air_quality, env_get_historical_measurements, etc.) but descriptions don't specify format (ISO 8601? 'last 7 days'? enum?). Same for 'geo' in health_get_series and socio_get_series, no guidance on ISO country codes vs. names.