Releases: assafelovic/gpt-researcher
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_EFFORT
to 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
v3.2.5
A lot of improved performance and reliability fixes. Thank you again to the amazing community and welcome to the new contributors!
What's Changed
- fix: replace gpt-4o hardcode model in multi-agent with env var. by @galenyip in #1258
- fix: truncating task file names for long queries by @pavlus007 in #1257
- Blog post by @ElishaKay in #1250
- Add missing imports by @rba100 in #1269
- Fixed issue of my-docs folder being created uncessarily #1268 by @gaurav3247 in #1272
- Streamline reasoning_effort use guide across flows by @KennyDizi in #1270
- Add published date and author to Arxiv context; adjust PDF scraper return; adjust detail report prompt for consistent formating style by @akhyarthoriq in #1265
- Added post and get http endpoints to server and updated npm package to allow sending http requests by @gaurav3247 in #1283
- New provider openrouter.ai added by @bjoernh in #1302
- Add User-Agent: Mozilla when downloading a file by @dcieslak19973 in #1297
- Fix AttributeError in PublisherAgent when processing string values by @LavX in #1285
New Contributors
- @galenyip made their first contribution in #1258
- @pavlus007 made their first contribution in #1257
- @rba100 made their first contribution in #1269
- @KennyDizi made their first contribution in #1270
- @akhyarthoriq made their first contribution in #1265
- @bjoernh made their first contribution in #1302
- @dcieslak19973 made their first contribution in #1297
Full Changelog: v3.2.4...v3.2.5
v3.2.4
Many bug fixes and performance improvements. We've finally added a research history sidebar to the research tasks! Thank you and welcome to all new contributors!
What's Changed
- fix: unblock web socket message queue by @ewgdg in #1220
- perf: load balance nodriver browser scraper tabs by @ewgdg in #1219
- Fix: image relevance filtering by @czakop in #1215
- fix: cancel long running task gracefully by @ewgdg in #1221
- polish npm run build while retaining domain filter setting by @ElishaKay in #1224
- fix: add langchain-openai to project dependencies (to be safe on edge cases) by @milosz-l in #1227
- feature: improve JSON parsing in multi agent setting (#1137) by @czakop in #1230
- fix: resolve failing test in tests/test_logging_output.py by @grapestore in #1238
- fix: restrict Python version range in pyproject.toml by @grapestore in #1236
- New Sidebar feature of recent Research History by @assafelovic in #1240
- Fix KeyError: 'deep' in cli.py by @hd365247 in #1245
New Contributors
- @milosz-l made their first contribution in #1227
- @grapestore made their first contribution in #1238
- @hd365247 made their first contribution in #1245
Full Changelog: v3.2.3...v3.2.4
SimpleQA Evals and Deep Research 2.0
Another exciting week with so much improvements by our amazing community. We're thrilled to announce the latest release of GPT Researcher, now featuring evaluations using the SimpleQA dataset by OpenAI. Our rigorous testing has demonstrated an impressive 93% accuracy rate, surpassing all current leading projects in the market.
This achievement underscores the remarkable capabilities of the open-source community, and we're just getting started! In response to extensive feedback, we've refined our deep research functionalities to be faster, smarter, and more cost-effective, while also addressing previous bugs. Update to the latest version and experience the enhancements firsthand!
Here are results of our latest evals run:
Evaluation Summary
Debug counts:
Total successful: 100
CORRECT: 93
INCORRECT: 7
NOT_ATTEMPTED: 1
{
"correct_rate": 0.93,
"incorrect_rate": 0.07,
"not_attempted_rate": 0.01,
"answer_rate": 0.99,
"accuracy": 0.9292929292929293,
"f1": 0.9246231155778895
}
What's Changed
- Fix
Key Error
while using Deep Research by @kongacute in #1188 - Update requirements.txt with missing langgraph dep by @namin in #1189
- Fix Docker Build Failure: Updated
combined_query
inDeepRsearchSkill.run()
to Handle Backslashes in F-Strings by @monolok in #1192 - stabilize docker & frontend upgrades by @ElishaKay in #1191
- Improved overall planning and research performance by @assafelovic in #1195
- Added support for base_url param in create_chat_completions for OpenAI Provider by @gaurav3247 in #1198
- Update llm.py by @olipayne in #1200
- Fix WebSocket timeout issues by @luislofer89 in #1203
- fix: Add missing langgraph module to requirements.txt by @hurxxxx in #1207
- Refactor: typing cleanup by @czakop in #1187
- add async nodriver scrapper by @ewgdg in #1170
- Add language requirement to resource report prompt by @hurxxxx in #1208
- Feature:eval metrics by @kga245 in #1183
- README for feat(evals): Add SimpleQA evaluation framework and initial results by @kga245 in #1212
- Polish up loose ends based on feedback by @ElishaKay in #1211
New Contributors
- @namin made their first contribution in #1189
- @olipayne made their first contribution in #1200
- @luislofer89 made their first contribution in #1203
- @hurxxxx made their first contribution in #1207
- @czakop made their first contribution in #1187
Full Changelog: v3.2.2...v3.2.3
Deep Research now integrated with GPTR! 🎉
Wow, what a major release this is! We're so excited to release our very own version of Deep Research! Also, this release has so many performance improvements including a new integration with FireCrawl for production scraping!
🎉 Announcing Deep Research for GPT Researcher
We're thrilled to announce the release of Deep Research - a powerful new capability for GPT Researcher that takes autonomous research to the next level!
What is Deep Research?
Deep Research is an advanced recursive research system that explores topics with unprecedented depth and breadth using a tree-like exploration pattern. Think of it as deploying a team of specialized AI researchers, each diving deep into different aspects of your topic while maintaining a cohesive understanding of the bigger picture.
Key Features
- 🌳 Tree-like Exploration: Configurable depth and breadth parameters let you control how wide and deep the research goes
- ⚡️ Concurrent Processing: Multiple research paths are explored simultaneously for faster results
- 🤝 Smart Context Management: Automatic aggregation and synthesis of findings across all research branches
- 📊 Real-time Progress Tracking: Monitor your research progress across both breadth and depth dimensions
Performance & Resources
- ⏱️ Average completion time: ~5 minutes per deep research
- 💰 Cost-effective: ~$0.4 per research using
o3-mini
on "high" reasoning effort - 🎯 Produces comprehensive reports with multiple perspectives and deeper insights
Getting Started
Deep Research is available now in the latest version of GPT Researcher. You can enable it by:
- Using the PIP package with
report_type="deep"
- Selecting "Deep Research" in the web interface
- Configuring custom parameters through environment variables or config files
Documentation
For detailed information about Deep Research, including configuration options and best practices, visit our Deep Research documentation.
Try it out today and experience a new level of autonomous research capability!
What's Changed
- Fix: missing temperature parameter ( #1154 ) by @DaisukeUra in #1155
- Update Dependencies to Fix OpenAI API Parameter Error by @Jones0073 in #1161
- Update docker doc to add langchain packages by @azertylr in #1167
- Fixed constuct subtopics by @vinayvikram in #1172
- feat: Add BSHTMLLoader support and enhance error handling for document loading by @LavX in #1166
- Enhanced incorrect json format handling at agent_creator.py by @johnmalek312 in #1168
- Added the Azure-storage option for document sources. by @Shivam-19agg in #1165
- Filter by domain[s] by @ElishaKay in #1157
- Fix: ArxivScraper causing error when scraping the link. by @new-player in #1178
- Deep Research logic to enhance GPT Researcher capabilities by @assafelovic in #1179
- Add FireCrawl scaper by @kongacute in #1177
New Contributors
- @DaisukeUra made their first contribution in #1155
- @Jones0073 made their first contribution in #1161
- @azertylr made their first contribution in #1167
- @vinayvikram made their first contribution in #1172
- @LavX made their first contribution in #1166
- @johnmalek312 made their first contribution in #1168
- @Shivam-19agg made their first contribution in #1165
- @new-player made their first contribution in #1178
- @kongacute made their first contribution in #1177
Full Changelog: v3.2.1...v3.2.2
Join our Discord community to share your experience and feedback. :-)
v3.2.1
With the latest Deep Research hype - which you all know is actually what GPTR is all about already two years ago :), we've added support for reasoning models across the entire research workflow, including support for more deeper research. You can now easily add the following env vars to GPTR for a Deep Research experience!
What's Changed
- Update README.md for multi-agents by @danieldekay in #1138
- Fix scraper browser returns duplicate texts by @ewgdg in #1134
- refactor: get text from soup by @ewgdg in #1143
- fixed polling param for ubuntu host by @kga245 in #1151
- added helpful optional configs for dockerized hosting by @kga245 in #1150
- Adds support for o3-mini by @regismesquita in #1144
New Contributors
- @ewgdg made their first contribution in #1134
- @regismesquita made their first contribution in #1144
Full Changelog: v3.2.0...v3.2.1
v3.2.0
This release is focused on many performance improvements and bug fixes, making GPT Researcher more powerful than before. With the release of Deep Research, we've been hands down fixing and improving performance to sustain our position as the leading open deep research. Thanks and welcome to all the new contributors who helped push GPTR further!
What's Changed
- GPTR api url, npm package & other polishes by @ElishaKay in #1093
- fix(#1100): apply language config to Introduction and Conclusion sections by @DAAE-Na-Yunchae in #1101
- feature/support GigaChat LLM by @Rai220 in #1095
- Update Poetry to supported Python version by @chrishart0 in #1107
- Update tavily_search.py so TAVILY missing error no longer occurs by @cnukaus in #1113
- Add google_genai:text-embedding-004 by @gmh5225 in #1112
- fix: add language param to generate_outline_report_prompt by @fibonacci998 in #1109
- fix: update broken link in README by @fibonacci998 in #1117
- Fixed human in the loop by @electricjimi in #1116
- Fixed broken configuration link in llms.md by @Ajacmac in #1121
- feat: enhance scraper logging and title handling by @kga245 in #1118
- fix: update directory nextjs example in langgraph.md by @fibonacci998 in #1123
New Contributors
- @DAAE-Na-Yunchae made their first contribution in #1101
- @Rai220 made their first contribution in #1095
- @chrishart0 made their first contribution in #1107
- @cnukaus made their first contribution in #1113
- @gmh5225 made their first contribution in #1112
- @fibonacci998 made their first contribution in #1109
- @electricjimi made their first contribution in #1116
- @Ajacmac made their first contribution in #1121
Full Changelog: v3.1.9...v3.2.0