Multi-source research (HN, Reddit, GitHub, Brave) over the Model Context Protocol.
Project description
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/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file canola_research_dispatcher_mcp-0.1.0.tar.gz.
File metadata
- Download URL: canola_research_dispatcher_mcp-0.1.0.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9296853b07398eba2111f9254a475627e680f8a42aad2084c957f626064e57e2
|
|
| MD5 |
1169842d2e1cc3e0252a2967cd143bfc
|
|
| BLAKE2b-256 |
77422a554ce9270fde4fdc1a27fadff5b1755b2d7410ced3883a223d3fd39f99
|
Provenance
The following attestation bundles were made for canola_research_dispatcher_mcp-0.1.0.tar.gz:
Publisher:
publish.yml on 0x67108864/research-dispatcher-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
canola_research_dispatcher_mcp-0.1.0.tar.gz -
Subject digest:
9296853b07398eba2111f9254a475627e680f8a42aad2084c957f626064e57e2 - Sigstore transparency entry: 1509335339
- Sigstore integration time:
-
Permalink:
0x67108864/research-dispatcher-mcp@7dfecd9293a0ea2baba01cfec4298ed9954df23f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/0x67108864
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7dfecd9293a0ea2baba01cfec4298ed9954df23f -
Trigger Event:
push
-
Statement type:
File details
Details for the file canola_research_dispatcher_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: canola_research_dispatcher_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 8.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e71a84508678dc13b474ec281805c66a8650778c36fcf2e11e3691da8ac23f9d
|
|
| MD5 |
cfcf74d86d736fe338d693d90c9a42ca
|
|
| BLAKE2b-256 |
a254689e5d42f8f3f9a07f0c0531d62e0e334ce3fea6ea1eabd8e4c7f04f00e8
|
Provenance
The following attestation bundles were made for canola_research_dispatcher_mcp-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on 0x67108864/research-dispatcher-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
canola_research_dispatcher_mcp-0.1.0-py3-none-any.whl -
Subject digest:
e71a84508678dc13b474ec281805c66a8650778c36fcf2e11e3691da8ac23f9d - Sigstore transparency entry: 1509335425
- Sigstore integration time:
-
Permalink:
0x67108864/research-dispatcher-mcp@7dfecd9293a0ea2baba01cfec4298ed9954df23f -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/0x67108864
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7dfecd9293a0ea2baba01cfec4298ed9954df23f -
Trigger Event:
push
-
Statement type: