Lit-Review-Council MCP Server

Reading
3 reviewers · Borda 2/1 tally · winner returned with every rationale
Datum
Ravicha2/lit-review-council. scoring.py#L12-L35 @ 40c4c19
Verdict
Measured · holds

Multi-Agent Literature Review Council MCP Server

Multi-agent research synthesis engine and Model Context Protocol (MCP) server that orchestrates parallel academic and practitioner research with Borda-count consensus.

Role
Author / Google × Kaggle AI Agents Intensive
Timeline
Jun 2026
Subject
Agentic AI & MCP

Ravicha2/lit-review-councilPyPI

Installuvx lit-review-council
PyPI
published, install via uvx lit-review-council; listed on the MCP Registry
3
independent reviewer agents ranked by Borda count
2
research tracks per topic: academic (ArXiv/OpenAlex) and practitioner (GitHub)

  • Google ADK
  • Python
  • MCP
  • OpenAlex API
  • ArXiv API
  • uv
  • Claude Code
Lit-Review-Council MCP Server, captured at its live state.
pypi.org/project/lit-review-council — published, not just committed.

Source, as quoted

Ravicha2/lit-review-council40c4c19L12–L35

Consensus is a counted Borda tally over named reviewers, not a model asked to agree with itself.

def tally_ensemble_rankings(rankings: List[Optional[Any]]) -> Tuple[str, List[str]]:
    """
    Applies Borda count (2 pts for 1st, 1 pt for 2nd) and returns the winning label 
    and the list of rationale strings.
    """
    scores = {"A": 0, "B": 0}
    reasons = []
    
    reviewers = ["Researcher", "Engineer", "Architect"]
    
    for i, r_obj in enumerate(rankings):
        reviewer_name = reviewers[i] if i < len(reviewers) else f"Reviewer_{i}"
        
        if r_obj:
            lst = r_obj.ranking if hasattr(r_obj, "ranking") else r_obj.get("ranking", [])
            rat = r_obj.rationale if hasattr(r_obj, "rationale") else r_obj.get("rationale", "")
            if lst and len(lst) >= 1:
                # 1st place gets 2 points, 2nd gets 1 point
                if lst[0] in scores: scores[lst[0]] += 2
                if len(lst) > 1 and lst[1] in scores: scores[lst[1]] += 1
            reasons.append(f"{reviewer_name} rationale: {rat}")

    top_label = "A" if scores["A"] >= scores["B"] else "B"
    return top_label, reasons

scoring.py#L12-L35 @ 40c4c19

Core intuition & friction

Deliver rigorous, multi-perspective literature synthesis with verifiable academic and open-source citations directly in developer IDEs.

The spark and the initial hypothesis

Single-prompt LLM research summaries suffer from confirmation bias, fabricated citations, and an inability to balance theoretical academic papers with practical open-source production implementations.

The naive failure mode

Single-agent LLMs hallucinate non-existent academic references, accept unvalidated preprint claims, and lack diverse perspectives when assessing the feasibility of architectural patterns.

The root problem encountered

Citation hallucination, single-prompt bias, and IDE context limits in automated research synthesis.

  • LLMs generating plausible-sounding but fictitious DOI and ArXiv identifiers
  • Preprint source bias skewing recommendations toward unproven theoretical approaches
  • IDE context window overflow when ingesting large volumes of paper abstracts
  • Strict Model Context Protocol (MCP) compliance for universal integration into Claude Code, VS Code, and Cursor
  • Zero hallucinated or unreachable citations permitted in final synthesis output

Why built this way

Key architectural insight

Dual-track parallel research waves paired with an independent 3-reviewer Borda-count scoring council and rigorous programmatic citation verification.

Dual-Track Research (Academic + Practitioner)

vs Single source search

Dispatches specialized agents to query ArXiv/OpenAlex for theoretical rigor while simultaneously querying GitHub/PyPI for production adoption and practical ergonomics.

Borda-Count Consensus Ensemble

vs Single reviewer scoring

Three independent reviewers (Researcher, Engineer, Neutral) evaluate anonymized reports on novelty, methodology, and practicality before aggregating ranks via Borda voting.

MCP Protocol Server Distribution

vs Web dashboard only

Packaging as an MCP server installable via uvx enables developers and AI coding agents to trigger comprehensive literature reviews from their command-line and IDEs.

Guardrails and defensive design

  • Programmatic API verification verifying that all cited DOIs and ArXiv IDs exist and match paper titles
  • Dangling reference rejection filter pruning unvalidated citations from final reports
  • Source-tier classification giving higher confidence weight to peer-reviewed publications

Outcomes & verification

Verification benchmarks

  • Published to PyPI (installable via uvx lit-review-council) and listed on the MCP Registry, with documented install paths for Claude Code and VS Code.
  • Every URL in a finished report must appear in the source references or the synthesis step retries, so dangling citations are rejected before output rather than reviewed after it.

Real-world impact

  • Lets researchers and engineers run a multi-perspective literature review from their IDE.
  • Demonstrated effective multi-agent consensus mechanisms for reducing LLM cognitive bias.

Core engineering takeaway

Multi-agent consensus coupled with programmatic deterministic validation solves the hallucination problem in complex research synthesis.

Get in touch

Master of IT at UNSW Sydney (WAM 83 / Distinction, graduating Dec 2026) · Open to full-time Applied AI & Backend Systems roles.

palm.ravicha@outlook.com

EmailCV (PDF)GitHubLinkedInSydney, Australia