Skip to main content
Glama
0x67108864

research-dispatcher-mcp

by 0x67108864

research-dispatcher-mcp

A Model Context Protocol (MCP) server that lets any MCP-capable AI agent run one research query across multiple public sources (Hacker News, Reddit, GitHub, Brave Web Search) in parallel, with source-specific query tuning baked in.

PyPI License: MIT

What it does

Exposes 5 MCP tools:

Tool

Source

Auth

research_hn

Hacker News (Algolia)

none

research_reddit

Reddit site-wide search

none (User-Agent only)

research_github

GitHub repositories

optional GITHUB_TOKEN for higher rate limit

research_brave

Brave Web Search

requires BRAVE_API_KEY

research_all

All of the above in parallel

per-source rules apply

Each tool returns JSON: a list of normalized hits with title, url, score/stars, created_at, and source-specific metadata. research_all aggregates into {source: {status, count, items}}.

Related MCP server: News Aggregator MCP Server

Why

AI agents that handle "what's the latest on X" tasks need to consult multiple sources but each has its own API, rate limit, and pitfalls. This server encodes those once so the agent calls one tool and gets normalized results.

Install

Requires Python 3.10+.

pip install canola-research-dispatcher-mcp

Configure your agent

Claude Code

Add to your ~/.claude/mcp.json:

{
  "mcpServers": {
    "research-dispatcher": {
      "command": "research-dispatcher-mcp",
      "env": {
        "GITHUB_TOKEN": "ghp_... (optional)",
        "BRAVE_API_KEY": "... (optional)"
      }
    }
  }
}

Restart Claude Code and the 5 research_* tools become available.

Codex CLI / Cursor / other MCP runtimes

Each runtime has its own MCP server registration. The command is always research-dispatcher-mcp.

Quickstart

"What's the latest on MCP server marketplaces?"
→ agent calls research_all(query="MCP server marketplace", limit=10, since_days=30)
→ HN + Reddit + GitHub returned in parallel, agent synthesizes

Environment variables

Variable

Default

Purpose

GITHUB_TOKEN

unset

Raises GitHub rate limit from 60/hr to 5000/hr

BRAVE_API_KEY

unset

Required to enable research_brave; without it the tool returns a "skipped" notice

Limitations

  • No paywall / logged-in content (X/Twitter, LinkedIn, private subreddits).

  • Reddit site-wide search has noticeably weaker recall than subreddit-specific browsing.

  • Brave's free tier is 2000 calls/month; this server does not currently track quota.

  • Source list is fixed in v0.1; add new sources in src/research_dispatcher_mcp/sources.py.

Development

git clone https://github.com/0x67108864/research-dispatcher-mcp.git
cd research-dispatcher-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
pytest

License

MIT — see LICENSE.

Author

canola_oil — https://0x67108864.github.io/

Available Tools

5 tools
research_allA

Fan out the same query to multiple sources in parallel and return aggregated results grouped by source. Default sources: hn, reddit, github (and brave if API key set).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
limitNo
since_daysNo
sourcesNoSubset of sources to query. Defaults to hn, reddit, github.

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must carry behavioral disclosure. It mentions parallel fan-out and grouping by source, but lacks details on rate limits, authentication, error handling, or return format. For a read-only tool, more transparency is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with core purpose, no extraneous information. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for tool selection (distinguishes from siblings), but incomplete for invocation without output schema and missing parameter descriptions. Agent might guess defaults but lacks clarity on response format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 25% (just sources). The description adds default sources and brave condition, but does not explain the meaning of query, limit, or since_days parameters. This leaves significant ambiguity for an AI agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool fans out a query to multiple sources in parallel and returns aggregated results by source. The description distinguishes it from sibling tools (individual source researchers) by highlighting the parallel execution and aggregation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly lists default sources and conditionally includes brave based on API key. Implies when to use (multi-source search) versus single-source siblings, but does not explicitly state 'use this for cross-source queries; for single-source, use the specific tool.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

research_braveA

General web search via Brave Search API. Requires BRAVE_API_KEY env var. Best for fresh general-web content; complements HN/Reddit/GitHub when topic is non-tech.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query.
limitNo
since_daysNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the authentication requirement (BRAVE_API_KEY) but does not cover other behaviors like error handling, rate limits, or result caching. With no annotations, the description carries full responsibility and is only partially transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no filler. Every sentence adds unique value: the first states purpose and auth, the second gives usage context. Efficiently front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite low complexity (3 params, no output schema), the description omits what the tool returns and does not explain parameter details. It covers purpose and use case but leaves the agent to guess about output structure and error conditions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only the 'query' parameter is described in the schema; 'limit' and 'since_days' have no descriptions. The tool description adds no further meaning beyond the schema's coverage (33%), failing to compensate for the low coverage. It only loosely implies recency through 'fresh' content.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it performs general web search via Brave Search API. Distinguishes from sibling tools by noting it complements HN/Reddit/GitHub for non-tech topics, making the purpose specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises when to use (fresh general-web content, non-tech topics) and contrasts with sibling tools. Also mentions the required environment variable, providing actionable context for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

research_githubA

Search GitHub repositories filtered by recent push activity. Best for OSS trends and active projects. Honors GITHUB_TOKEN env var (60/hr anon vs 5000/hr authenticated).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query.
limitNo
since_daysNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries the burden. It discloses rate limits (60/hr anon, 5000/hr authenticated), but lacks details on ordering, pagination, or result structure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with front-loaded purpose and use case, no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a 3-param tool with no output schema: gives purpose, use case, and rate limit. Lacks description of return format, pagination, or error cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 33% (only query described). The description adds context for 'since_days' via 'filtered by recent push activity', but does not explain 'limit' or provide query syntax. Additional detail needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Search') and resource ('GitHub repositories'), includes the filtering context ('filtered by recent push activity'), and distinguishes from siblings (e.g., research_brave, research_hn) by targeting GitHub exclusively.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states when to use ('Best for OSS trends and active projects') and provides authentication context (GITHUB_TOKEN env var with rate limits), but does not explicitly mention when not to use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

research_hnA

Search Hacker News (via Algolia) for stories matching a query within a recent time window. No authentication required. Best for tech news, Show HN launches, deep technical discussion.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query.
limitNo
since_daysNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It mentions Algolia backend and time window filtering, but does not disclose rate limits, pagination, or whether comments are included; adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences that front-load the purpose and usage context. No wasted words, though slightly more detail on parameters could be added without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search tool with no output schema and 3 parameters (low coverage), the description provides basic context but lacks details on return format, pagination, or error handling, leaving gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33% (only 'query' has a description). The description does not elaborate on 'limit' or 'since_days' beyond defaults, failing to compensate for low schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches Hacker News via Algolia for stories matching a query, and specifies it's best for tech news, Show HN launches, and deep technical discussion, distinguishing it from siblings like research_reddit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear use case guidance ('Best for tech news, Show HN launches, deep technical discussion') and notes no authentication required, but lacks explicit when-not-to-use or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

research_redditA

Site-wide search across Reddit. Best for community sentiment, niche subreddit signal. Returns posts with subreddit, score, and permalink.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query.
limitNo
since_daysNo

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full responsibility. It states the tool returns posts with subreddit, score, and permalink but omits behavioral traits like read-only nature, rate limits, or authentication needs. It is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no redundancy. It front-loads the core function in the first sentence and adds use case and output in the second, making it efficient and scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description lists return fields (subreddit, score, permalink), which is useful. It covers basic purpose but lacks details on pagination, error handling, or output structure. It is fairly complete for a simple search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 33% (only 'query' described). The description adds minimal meaning: it implies 'query' is the search term but does not explain 'limit' or 'since_days' beyond their defaults. The description provides no additional context for these parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Site-wide search across Reddit', specifying the verb (search) and resource (Reddit). It also differentiates from siblings by naming the platform and mentioning use cases like community sentiment and niche subreddits.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides guidance on when to use ('Best for community sentiment, niche subreddit signal'), which implies context. However, it does not explicitly state when not to use or name alternative tools, but sibling names are available.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv0.1.0
    • First observedresearch_all
    • First observedresearch_brave
    • First observedresearch_github
    • First observedresearch_hn
    • First observedresearch_reddit

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a unique source (all, brave, github, hn, reddit) with clear descriptions that differentiate their use cases. No overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent 'research_<source>' pattern using snake_case, making it predictable for agents.

Tool Count5/5

5 tools is an ideal count for a research dispatcher, covering the key sources without being excessive or insufficient.

Completeness4/5

The set covers major tech and community sources (HN, Reddit, GitHub) plus general web via Brave. Minor gaps like news or Twitter, but core workflows are well-supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    Not graded
    maintenance
    Enables AI assistants to perform comprehensive research by searching Google, mining Reddit discussions, scraping web content with JS rendering, and synthesizing findings with citations into structured context.
    5
    165 npm
    3
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to perform unified web searches, GitHub, and GitLab searches with caching, reranking, and fallback across multiple providers.
    4
    22 npm
    18
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides AI agents with read-only access to various public data sources (web, YouTube, RSS, GitHub, V2EX, Bilibili, and semantic search) without requiring any login credentials or API keys.
    13
    MIT