ethanrasmussen/research-agent
If you are the rightful owner of research-agent and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
This document provides a structured summary of a model context protocol server designed for AI agents to conduct web research and create PowerPoint slide decks.
Demo Video:
This is a proof-of-concept prototype for an AI agent which can conduct web research & create PowerPoint slide decks from the resulting information. It utilizes Google's search API for advanced querying (search terms & time periods), and builds from a .pptx master template (which can be modified / custom templates uploaded).
https://github.com/user-attachments/assets/2dc502ef-ac32-4967-aca2-1717bbf10302
Note: This video is sped up when the agent is processing, to comply with GitHub limitations on video size. The agent took approx. 30 seconds to generate the response shown in the demo, using the gpt-4o-mini model from OpenAI.
Setup:
- Set up env variables (
.env
) in each directory, based on the.env.example
- Run
python3 -m pip install -r requirements.txt
- Run
cd mcp_server && python3 mcp_server.py
- Run
cd streamlit_ui && python3 -m streamlit run app.py
Using Custom PPTX Template:
You'll need a completely empty PPTX file (not even title slide), with a Master Template created as such:
- Select View >> Slide Master
- For all items below, ensure you remove all existing placeholders beforehand.
- Create "Title Slide" layout: In this order, add text placeholders for the title, subtitle, and author_credits.
- Create "Content Slide" layout: In this order, add text placeholders for the title, text_content, source_urls, and image_caption. Then, add a single picture placeholder.
- Create "Ending Slide" layout: This is a static slide, which you can edit as you wish.
Setting Up Google Search API:
- Create a Programmable Search Engine here, and grab your CSE ID.
- Grab your Google API Key here, by clicking
Get a Key
.
Current Limitations:
- On occasion, the AI agent will "give up" earlier than it should. When it runs into search queries that don't return results, it will often retry the same query several times & then give up, rather than trying new queries. This seems to occur even when it is explicitly instructed to try new queries upon a failing query.
- The AI agent sometimes runs into issues handling SVG images it locates.
Future Thoughts / Improvement Ideas:
- Address the first limitation above, ensuring the agent retries web searches with new queries. Other options could include breaking down complex multi-term queries into simpler queries & aggregating the results (although, this may result in degradation of result quality if searches are too broad).
- Add more variety for content slides, as well as the requisite tooling for the agent to decide which slide template makes sense to use depending on the content it will be populating the slide with. This would allow for more interesting slide decks that contain a wider variety of slide types.
- Modify insertion for source URLs to make them clickable.
- Add testing suite & improve error handling for increased robustness.