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.
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}}.
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
Related
- The original SKILL.md format version:
canola_oil/skills/research-dispatcher— instruction-based, drop-in folder for agentskills.io runtimes - Agent Skills standard: agentskills.io
- Model Context Protocol: modelcontextprotocol.io
License
MIT — see LICENSE.
Author
canola_oil — https://0x67108864.github.io/
Release files for canola-research-dispatcher-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| canola_research_dispatcher_mcp-0.1.0.tar.gz | 7.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| canola_research_dispatcher_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 16.3 kB
Release files / canola_research_dispatcher_mcp-0.1.0.tar.gz
| Download URL | canola_research_dispatcher_mcp-0.1.0.tar.gz |
|---|---|
| Size | 7.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9296853b07398eba2111f9254a475627e680f8a42aad2084c957f626064e57e2
|
|
BLAKE2b-256 checksum How to use checksums |
77422a554ce9270fde4fdc1a27fadff5b1755b2d7410ced3883a223d3fd39f99
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 11, 2026.
Transparency logRelease files / canola_research_dispatcher_mcp-0.1.0-py3-none-any.whl
| Download URL | canola_research_dispatcher_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 8.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e71a84508678dc13b474ec281805c66a8650778c36fcf2e11e3691da8ac23f9d
|
|
BLAKE2b-256 checksum How to use checksums |
a254689e5d42f8f3f9a07f0c0531d62e0e334ce3fea6ea1eabd8e4c7f04f00e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 11, 2026.
Transparency log