search_opinionsLABSCO SUMMARY
Then vs Now is the mode that justifies the whole thing.
Any search tool can return today's threads. Putting year-old discussion beside recent discussion shows you something a single snapshot cannot — that a question which was a flame war has become a pragmatic one, or that an old consensus quietly reversed. The other well-judged decision is that everything works with no keys: the routing has four tiers and each one degrades into the next, so a missing LLM key costs you precision rather than function. Sources include unmoderated boards, which is the point and also the caveat.
What it is
An MCP server and CLI that searches public discussion across nine platforms and returns opinions rather than documentation. Queries are routed to the right communities by a four-tier system, and the whole thing works with no API keys at all — an optional LLM key only makes the routing smarter.
What you get
- All platforms searched for opinions on a topic in one call —
search_opinions - Then vs Now: historical and recent discussion side by side, which is how you see a consensus change rather than a snapshot of today —
search_opinions_perspective - One thread's comments read in depth once you have found it —
get_thread_opinions - Which platforms are available and healthy right now —
list_available_platforms - Direct control when you know where to look: a
routing_hintsparameter takes explicit targets such as specific subreddits, boards and Stack Exchange sites, and the automatic routing handles it when you leave it out - Nine sources, each through a public interface: HackerNews via Algolia, Reddit through Pullpush with Arctic Shift and Redlib fallbacks, 4chan's official JSON API, Stack Exchange's API across 180+ communities, Telegram public channel previews, Lobsters, Lemmy's federated REST API, LessWrong's GraphQL API, and XenForo forums by scraping
- Routing that degrades gracefully: an LLM query rewrite if you supply a key, semantic embeddings with a 33MB local model if you do not, and a broad default under that — with a dynamic catalog covering 77 4chan boards and 180 Stack Exchange sites
Requirements
No tokens, no OAuth. The README's install line names vox-pop, which PyPI does not have. All nine platforms work immediately once it is in place; the client entry runs python against the vox_pop.server module. Python 3.10+. An optional LLM key — Anthropic, OpenAI or a local Ollama — enables the query-rewrite tier of routing, and the embedding tier runs locally with no key. There is also a CLI (vox-pop search, with --perspective, --platforms and --limit) and a Python API for embedding it in your own tools. MIT licensed.
Setup effort
Build from source — git clone https://github.com/mushfique-dgist/vox-pop
USE CASES
Finding out what people actually did, not what the docs say
Search across the forums at once and read the reported experience alongside the official answer.
Checking whether old advice still holds
Run the perspective mode to see historical and recent threads side by side and read the shift.
Reading one discussion properly
Once a thread looks relevant, pull its comments rather than working from the search snippet.
Pointing the search at the communities you trust
Pass explicit routing hints naming the subreddits, boards or Stack Exchange sites you want, and skip the automatic routing.
4 tools
Listed in project docs. Your client may show a different list.
search_opinions_perspectiveget_thread_opinionslist_available_platformsBEFORE YOU INSTALL
What to know first
Tools you get
4 tools named in the project's documentation.
Requires
python on PATH
Where it runs
All 4 documented clients run the server on your machine.
INSTALLATION
Connect your client
This one is built from source rather than installed with a single command.
Server setup
git clone https://github.com/mushfique-dgist/vox-pop
cd vox-pop
pip install .MCP Clients
Claude Code, Cursor, Windsurf, Other MCP clients
{
"mcpServers": {
"vox-pop": {
"command": "python",
"args": [
"-m",
"vox_pop.server"
]
}
}
}