io.github.Ravicha2/lit-review-council
A multi-agent literature review pipeline that uses specialized agents to research, peer-review, and synthesize academic and practitioner perspectives into grounded reports.
README
Multi-Agent Literature Review Pipeline

A multi-agent literature review pipeline built with the Google ADK (Agent Development Kit). It coordinates specialized agents to iteratively research sub-topics based on a YAML configuration. For each topic, it searches from academic and practitioner perspectives, evaluates the work through a peer review ensemble, and synthesizes a well-grounded report.
Built as a capstone submission for the Kaggle "AI Agents: Intensive Vibe Coding Capstone".
mcp-name: io.github.Ravicha2/lit-review-council
Motivation
Literature reviews are suffocating: hundreds of papers, conflicting claims, and no obvious signal in the noise. Andrej Karpathy's LLM Council showed that multi-agent debate surfaces sharper answers than a single prompt. This project takes that insight into the research domain.
LLMs researching complex topics suffer from two problems: lack of diverse grounding and self-preference bias (favoring their own outputs).
This pipeline addresses both:
- Tiered Orchestration: A Planner agent splits configured research topics into a multi-wave execution graph. Foundational concepts (Wave 1) run in parallel, and synthesis-dependent topics (Wave 2) run sequentially with distilled context from Wave 1.
- Source Isolation: Two independent tracks per topic, each with its own explorer (search) and reporter (write) agent. The academic track searches ArXiv, OpenAlex, and scholarly publishers. The practitioner track searches GitHub and engineering docs.
- Peer Review Ensemble: Three reviewers (Researcher, Engineer, Neutral) evaluate anonymized reports. Borda-count voting aggregates rankings so no single reviewer dominates.
- Anti-Hallucination Guardrails: The Synthesis agent's output is parsed and validated. Dangling citations like
(Author, Year)or[1]are rejected. Every URL in the final report must exist in the original source references, or the run is retried (up to 2 times). A blog-tier ratio check warns when over 50% of sources are blog/forum tier.
Setup & Installation
Published to PyPI and the MCP Registry. No clone or manual config needed.
1. MCP Registry (Recommended, one command)
The server is listed on the MCP Registry, so installing is a single command. No JSON editing, no config files.
Claude Code:
claude mcp add lit-review-council \
-e OPENROUTER_API_KEY=sk-or-your-key \
-e GITHUB_TOKEN=ghp_your-token \
-e TAVILY_API_KEY=tvly_your-key \
-- uvx lit-review-council
VS Code: Search for "lit-review-council" in the MCP Registry and click Install. Or open the MCP Registry listing and click Install in VS Code.
Any other MCP client: See section 2 below.
Once connected, the lit_review_council_instructions prompt is available to guide any AI agent through the full review workflow.
2. Manual Config (Claude Desktop, Cursor, etc.)
Add this to your client's MCP server config:
{
"mcpServers": {
"lit-review-council": {
"command": "uvx",
"args": ["lit-review-council"],
"env": {
"OPENROUTER_API_KEY": "sk-or-your-key",
"GITHUB_TOKEN": "ghp_your-token",
"TAVILY_API_KEY": "tvly_your-key",
"OPENALEX_API_KEY": "your-key"
}
}
}
}
| Client | Config path |
|---|---|
| Claude Desktop (Mac) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop (Win) | %APPDATA%\Claude\claude_desktop_config.json |
| Cursor | .cursor/mcp.json |
3. Local Developer Setup
git clone https://github.com/Ravicha2/lit-review-council && cd lit-review-council
cp .env.example .env # fill in your keys
uv run python main.py --config topics.yaml --output okf_output --question "Your Research Question"
Environment Variables
| Variable | Purpose | Required |
|---|---|---|
OPENROUTER_API_KEY |
LLM access via OpenRouter | Yes |
GITHUB_TOKEN |
Practitioner track (GitHub search) | Yes |
TAVILY_API_KEY |
Web search across both tracks | Yes |
OPENALEX_API_KEY |
Academic track (OpenAlex API) | No |
ENG_MODEL |
Model for engineer agents | No (default: openrouter/moonshotai/kimi-k2.6) |
RESEARCH_MODEL |
Model for research agents | No (default: openrouter/z-ai/glm-5.1) |
JUDGE_MODEL |
Model for reviewers & synthesis | No (default: openrouter/deepseek/deepseek-v4-pro) |
Architecture

The pipeline is organized into four stages, with topics executed across two waves to balance parallelism and sequential dependency.
Why Two Waves?
Not all research topics are independent. Some topics (e.g., foundational concepts like "truth maintenance systems") can be researched in parallel, while others (e.g., "multi-agent coordination using TMS") depend on the synthesized understanding of earlier topics.
The Planner agent reads topics.yaml and partitions topics into:
- Wave 1 — parallel, independent topics. All topics in this wave run simultaneously through the full Stage 1→2→3 pipeline.
- Wave 2 — sequential, dependent topics. These topics require the distilled context from Wave 1 before they can be researched accurately.
Wave Handoff via the Distiller
After Wave 1 completes, the Distiller agent consumes the Wave 1 topic files and produces a compact summary of the foundational findings. This distilled context is injected into every Wave 2 topic's prompt as additional background, ensuring Wave 2 explorers and reporters build on top of verified Wave 1 conclusions rather than starting from scratch.
This prevents redundant searches and improves coherence across the final OKF bundle.
Stage Breakdown
Stage 0 (Orchestration)
├── Planner agent organizes YAML topics into Wave 1 (parallel) and Wave 2 (sequential)
└── Distiller agent summarizes completed Wave 1 topics to provide prior context to Wave 2
Stage 1 (Parallel Fan-out per Topic)
├── Academic Track (SequentialAgent)
│ ├── academic_explorer → searches ArXiv, OpenAlex, Tavily (scholarly domains)
│ └── academic_reporter → writes Researcher report with structured references
└── Practitioner Track (SequentialAgent)
├── practitioner_explorer → searches GitHub, Tavily (engineering domains)
└── practitioner_reporter → writes Engineer report with structured references
Stage 2 (Peer Review Ensemble per Topic)
├── researcher_reviewer → ranks anonymized reports (Researcher perspective)
├── engineer_reviewer → ranks anonymized reports (Engineer perspective)
└── technical_reviewer → ranks anonymized reports (Neutral perspective)
→ Borda-count tally → winning report selected
Stage 3 (Synthesis & Persistence)
├── synthesis agent → condensed final brief with YAML frontmatter
│ → citation validation loop (rejects hallucinated/dangling URLs, retries up to 2x)
└── Writes out to an interconnected Markdown OKF bundle (index.md and topic files)
Search Providers
| Provider | Domains | Used By |
|---|---|---|
| ArXiv API | arxiv.org | Academic explorer |
| OpenAlex API | openalex.org | Academic explorer |
| Tavily (scholarly) | acm.org, ieee.org, springer.com, sciencedirect.com, nature.com, science.org, wiley.com | Academic explorer |
| GitHub API | github.com | Practitioner explorer |
| Tavily (engineering) | github.com, docs.microsoft.com, aws.amazon.com, cloud.google.com, medium.com, dev.to | Practitioner explorer |
All providers use tenacity retry with exponential backoff for 429/5xx errors.
Source Tiers
Every reference is classified into one of four tiers:
- peer_reviewed: ArXiv preprints, ACM/IEEE papers, conference proceedings
- established_project: GitHub repos with meaningful adoption (stars, active maintenance)
- vendor_doc: Official documentation from a company/project
- blog_or_forum: Medium, personal blogs, Stack Overflow, Reddit
The synthesis step warns when more than half of cited sources are blog_or_forum tier.
Output
The pipeline runs all stages for each topic, executing them in waves where possible. On completion, it generates an interconnected Markdown bundle (OKF format) in the specified output directory, including an index.md linking to each specific topic file.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。