Releases: assafelovic/gpt-researcher
Bug fixes
Some urgent fixes to run GPTR smoothly with provider agnostic. Please open issues if you find anything missed!
What's Changed
- 1514 added Tavily installation requirements txt by @thepawarrahul in #1516
- Fix for Frontend Docker build by @CezaryKlus in #1522
- Fix MCP retriever ignoring structured_content; prefer structured data with fallback to content #1480 (solved) by @sriramsowmithri9807 in #1518
- feat: Add PWA capabilities to the frontend by @TheSpaceGod in #1511
New Contributors
- @thepawarrahul made their first contribution in #1516
- @CezaryKlus made their first contribution in #1522
- @TheSpaceGod made their first contribution in #1511
Full Changelog: v.3.3.5...v.3.3.6
Vibe Research
v.3.3.4
What's Changed
- feat(llm): stop sending temperature to non‑supporting models by @expphoto in #1485
- fix(frontend): use existing gptr-logo.png for background to stop 404 by @expphoto in #1484
- Update duckduckgo.py by @adityasingla71 in #1491
- Updated the validation logic for max_tokensto allow a maximum of 32,000 (previously capped at 16,000). by @hc-tec in #1488
- feat: Add support for custom OpenAI base URL for OpenAI-compatible APIs by @borderlessboy in #1499
- Summary: Fix missing WebSocketDisconnect import by @hasbegun in #1497
- Bug fix: Remove the encoding parameter from kwargs to avoid passing an unsupported argument in the LLM call. by @whaler404 in #1494
- Fix critical path traversal vulnerability in file operations by @saharmor in #1438
- feat: add netmind provider by @anhuaxiang in #1459
New Contributors
- @expphoto made their first contribution in #1485
- @adityasingla71 made their first contribution in #1491
- @hc-tec made their first contribution in #1488
- @borderlessboy made their first contribution in #1499
- @hasbegun made their first contribution in #1497
- @whaler404 made their first contribution in #1494
- @saharmor made their first contribution in #1438
- @anhuaxiang made their first contribution in #1459
Full Changelog: v.3.3.3...v.3.3.4
v.3.3.3
What's Changed
- GPT-5 Support! Less costs, better performance and larger input context windows
- feat: Add Hallucination Evaluation for GPTResearcher +
judgeslibrary by @julianeagu in #1439 - fix: make exa retriever respect query domains by @mys721tx in #1464
- bug_fix: vectorstore_filter not passed by @viboognesh in #1461
- Update config.md by @sdisaacson in #1465
- feat: Add enhanced Serper API support with country, language, date filters and configurable site exclusion by @hurxxxx in #1472
- Fix scraper FireCrawl markdown error by @hung96ad in #1473
New Contributors
- @julianeagu made their first contribution in #1439
- @mys721tx made their first contribution in #1464
- @viboognesh made their first contribution in #1461
- @hung96ad made their first contribution in #1473
Full Changelog: v.3.3.1...v.3.3.3
Bug fixes and new evals
What's Changed
- feat: Add Hallucination Evaluation for GPTResearcher +
judgeslibrary by @julianeagu in #1439 - fix: make exa retriever respect query domains by @mys721tx in #1464
- bug_fix: vectorstore_filter not passed by @viboognesh in #1461
- Update config.md by @sdisaacson in #1465
New Contributors
- @julianeagu made their first contribution in #1439
- @mys721tx made their first contribution in #1464
- @viboognesh made their first contribution in #1461
Full Changelog: v.3.3.1...v.3.3.2
v.3.3.1
This version focuses on bug fixes and performance improvements. Thank you and welcome to all the new contributors to the community!
What's Changed
- fix: Resolve 'ScrapeResponse' object subscriptable error in FireCrawl scraper by @sriramsowmithri9807 in #1432
- remove spurious file (submodule ref) by @grota in #1440
- fix: linux/arm64 machine cannot pull arm64 image from ghcr by @arielweinberger in #1436
- Add
Dockerfile.fullstack- single container for nextjs/backend by @th3w1zard1 in #1433 - fix: langchain dashscope provider out-of-dated by @TRSWNCA in #1455
- Fix zero subtopic error by @Yuxuan1998 in #1454
New Contributors
- @sriramsowmithri9807 made their first contribution in #1432
- @grota made their first contribution in #1440
- @arielweinberger made their first contribution in #1436
- @TRSWNCA made their first contribution in #1455
- @Yuxuan1998 made their first contribution in #1454
Full Changelog: v3.3.0...v.3.3.1
MCP Integration! 🥳
🔗 MCP Integration Now Live 🥳
GPT Researcher now supports Model Context Protocol (MCP) - connect to specialized data sources alongside web search for comprehensive research.
Key Features
- Two-stage intelligent approach: Auto-selects relevant tools and generates contextual research
- Hybrid strategies: Combine web search with MCP servers (
RETRIEVER=tavily,mcp) - Multi-server support: GitHub, financial APIs, academic databases, custom tools
- Zero-config optimization: Works out-of-the-box with sensible defaults
Quick Start
from gpt_researcher import GPTResearcher
import os
# Enable hybrid research
os.environ["RETRIEVER"] = "tavily,mcp"
researcher = GPTResearcher(
query="What are the latest React patterns?",
mcp_configs=[{
"name": "github",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {"GITHUB_TOKEN": os.getenv("GITHUB_TOKEN")}
}]
)
context = await researcher.conduct_research()
report = await researcher.write_report()Use Cases
- Code research: GitHub repos, documentation, technical analysis
- Financial analysis: Market data, stock trends, business intelligence
- Academic research: ArXiv papers, research databases
- Enterprise integration: Internal systems, compliance workflows
Full MCP Documentation | Examples
What's Changed
- MCP client-server Integration for GPTR by @assafelovic in #1424
- Fix #1418: OSError: [Errno 36] File name too long with long Chinese prompt by @qylf0000 in #1428
New Contributors
Full Changelog: v3.2.9...v3.3.0
v3.2.9
Welcome new contributors to the community! Another massive performance boost to GPT researcher with better reasoning model control, improved static UI, additional integrations and bug fixes!
What's Changed
- Add "Deep Research" option to selection and fix formatting in base.py by @hide-lgtm in #1394
- fix: improve error handling in SerperSearch results processing by @grapestore in #1388
- Update firecrawl-py requirement from ^1.12.0 to ^2.5.3 by @dependabot in #1382
- Add WebSocket support to FastAPI server by @dreroc in #1400
- Fix return statements in PyMuPDFScraper by @kongzii in #1407
- [Integration] New provider AI/ML API Added by @D1m7asis in #1399
- add vllm chat client by @teenaxta in #1409
- Expose **kwargs throughout core modules to unlock LangChain integrations by @teenaxta in #1372
- Massively improve static frontend. by @th3w1zard1 in #1401
- Add
REASONING_EFFORTto configuration by @KennyDizi in #1416 - ✨ Containerized Multi-Arch Workflows: Production-Ready Docker, and Robust Dependency Management by @th3w1zard1 in #1411
New Contributors
- @hide-lgtm made their first contribution in #1394
- @dreroc made their first contribution in #1400
- @kongzii made their first contribution in #1407
- @D1m7asis made their first contribution in #1399
- @teenaxta made their first contribution in #1409
- @th3w1zard1 made their first contribution in #1401
Full Changelog: v3.2.8...v3.2.9
v3.2.8
Welcome to all the new contributors who have helped fixing so many issues, adding new amazing features and improving performance!
What's Changed
- Fix broken link in llms.md by @robsonos in #1333
- Fix #1323: Ollama model parsing issue in multi-agent mode by @mratsim in #1324
- Add support for o4-mini model in temperature & reasoning-effort config by @arminfabritzek in #1346
- EMBEDDING = ':<sentence-transformers/all-MiniLM-L6-v2>' by @N4SIRODDIN3 in #1313
- feat: Adds support for gigachat embeddings to the gigachat LLM add-on. by @Rai220 in #1280
- fix: nodriver scraper wait timeout behavior by @ewgdg in #1351
- Strip spaces from "self.output_dir" to prevent exception when writing… by @ivan-latunov in #1350
- IBM Granite by @gabe-l-hart in #1278
- Update filtering-by-domain.md by @kicksent in #1370
- Update getting started link to the doc by @irak99 in #1364
- fix firecrawl error: 'ScrapeResponse' object is not subscriptable by @tvoilex in #1363
- Respect my verbosity! by @tClelford in #1362
- fix python3.11 f-string cannot have backslash by @anexplore in #1352
- bugfix. third argument of ResearchAgent has to be tone by @Masao-Taketani in #1376
- Fix a typo in curator.py by @yuefengz in #1371
New Contributors
- @robsonos made their first contribution in #1333
- @mratsim made their first contribution in #1324
- @arminfabritzek made their first contribution in #1346
- @N4SIRODDIN3 made their first contribution in #1313
- @ivan-latunov made their first contribution in #1350
- @gabe-l-hart made their first contribution in #1278
- @kicksent made their first contribution in #1370
- @irak99 made their first contribution in #1364
- @tvoilex made their first contribution in #1363
- @tClelford made their first contribution in #1362
- @anexplore made their first contribution in #1352
- @Masao-Taketani made their first contribution in #1376
- @yuefengz made their first contribution in #1371
Full Changelog: v3.2.7...v3.2.8
Introducing MCP Server for GPTR!
Super exciting release that includes 3 big improvements:
- New MCP server for GPT Researcher! Check out the new repo here.
What makes the MCP server special: - 🚀 Seamless integration with Claude Desktop via MCP
- 🔎 Transform basic searches into comprehensive research with a single command
- ✨ Get high-quality, validated information from multiple reliable sources
- 📊 Optimize your context window with only the most relevant content
- 🧠 Enable your AI assistant to reason better with well-structured research
MCP Server Docs: https://docs.gptr.dev/docs/gpt-researcher/mcp-server/getting-started
Claude Demo:
https://github.com/user-attachments/assets/ef97eea5-a409-42b9-8f6d-b82ab16c52a8
In addition:
- You can now add a custom prompt to the write_report method. For example:
report = researcher.write_report(custom_prompt="write a short answer based on the research findings") - You can now also run quick web search with your dedicated search engine:
search_results = researcher.quick_search(query=query)
What's Changed
- Update to detailed_report.py to include complement_source_urls as a p… by @Laurie2905-JOHN in #1308
- Feature/custom report prompt by @assafelovic in #1309
- feat: Add language support to reports and frontend input by @hurxxxx in #1213
- MCP Server by @assafelovic in #1310
- Frontend goodies by @ElishaKay in #1235
New Contributors
- @Laurie2905-JOHN made their first contribution in #1308
Full Changelog: v3.2.5...v3.2.6