ReActMCP Web Search
About
A web search server that integrates with the Exa API to perform basic and advanced searches.
Details
- Author
- mshojaei77
- Categories
- Search, Knowledge Base, Other
Jump to
Setup
Install ReActMCP Web Search in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/mshojaei77/ReActMCP
Follow the installation instructions in the repository README, then restart your MCP client.
ReActMCP Web Search is an MCP (Model Context Protocol) server that integrates web search capabilities into your AI assistant framework. It leverages the Exa API to perform both basic and advanced web searches, returning real-time, markdown-formatted results including titles, URLs, publication dates, and content summaries.
This repository is part of the broader ReActMCP project that connects various MCP tools and servers to empower your AI assistant with a wide range of capabilities.
- Features
- Requirements
- Installation
- Configuration
- Environment Variables
- MCP Configuration
- System Prompt
- Running the Web Search Server
- Testing the Tools
- Basic Web Search: Perform simple searches using the Exa API.
- Advanced Web Search: Use additional filtering options such as domain restrictions, text inclusion requirements, and date filters.
- Markdown Output: Format search results in Markdown to easily incorporate titles, URLs, and summaries.
- MCP Integration: Easily add this tool into your MCP server ecosystem for multi-tool AI assistance.
- Python 3.8+
- python-dotenv
- exa-py(Exa API client)
- firecrawl-py(Firecrawl API client)
- Other dependencies that may be required by your MCP framework
git clone https://github.com/mshojaei77/ReActMCP.git cd ReActMCP
Create a Virtual Environment (Optional but recommended)
python -m venv venv source venv/bin/activate # On Windows use: venv\Scripts\activate
Create a.envfile in the project root directory with at least the following variable:
EXA_API_KEY=your_exa_api_key_here OPENAI_API_KEY=...
This key is required by the Exa API for performing web searches.
The MCP configuration filemcp_config.jsondefines the settings and tools available to your MCP server. An example configuration is provided:
{ "websearch": { "script": "web_search.py", "encoding_error_handler": "ignore", "description": "Web search capability using Exa API that provides real-time internet search results. Supports both basic and advanced search with filtering options including domain restrictions, text inclusion requirements, and date filtering. Returns formatted results with titles, URLs, publication dates, and content summaries.", "required_env_vars": ["EXA_API_KEY"], "active": true }, "settings": { "model": "gpt-4o", "system_prompt_path": "system_prompt.txt" } }
You can personalize or extend this configuration by modifying parameters such as default number of results or adding new MCP tools.
Thesystem_prompt.txtfile configures the behavior and tone of your AI assistant. It guides responses to be friendly, engaging, and informative, with the inclusion of emojis. An example prompt is provided:
You are a helpful, knowledgeable AI assistant with web search capabilities. Your goal is to provide accurate, comprehensive, and up-to-date information to users. Use lots of emojis and make your responses fun and engaging. ## Available Search Tools - search_web: Basic web search that returns results based on a query - advanced_search_web: Advanced search with filtering options for domains, required text, and date ranges ## Guidelines for Responding to Questions 1. For current information or facts that might have changed since your training data, use the appropriate search tool to find the most recent and relevant information. 2. Use search_web for general queries and advanced_search_web with appropriate filters for more specific needs. 3. Formulate precise search queries to maximize result relevance. 4. For recent information, use the max_age_days parameter in advanced search to limit results to recent publications. 5. When targeting specific sources, use the include_domains parameter to focus your search. 6. Cite sources by including URLs from search results. 7. For insufficient or contradictory results, acknowledge limitations and explain findings. 8. Break down complex topics into organized sections. 9. Provide balanced perspectives on controversial topics. 10. Be transparent about uncertainty rather than making up information. 11. Maintain a helpful, informative, and conversational tone. ## Response Quality Standards Your responses should be well-structured, factually accurate, and tailored to the user's level of understanding on the topic. Use the web search capabilities as your primary tools for accessing current information before responding to time-sensitive or factual queries.
Feel free to adjust the system prompt to align with your desired assistant behavior.
The published container runs the Exa MCP server over stdio. Build and run it with the API key supplied at runtime:
docker build -t reactmcp-exa:local . docker run --rm -i -e EXA_API_KEY=your_exa_api_key_here reactmcp-exa:local
The exact container command for MCP hosts is:
docker run --rm -i -e EXA_API_KEY=your_exa_api_key_here reactmcp-exa:local
The Docker image entry point isservers/exa_web_search.py.main.pyis the optional OpenAI/LangGraph host and is not the container MCP entry point.
The repository includesglama.jsonwith the maintainer identity used by Glama's claim flow. After merging it, repeat the Glama claim flow so Glama syncs the metadata and Dockerfile.
To validate the image with MCP Inspector:
npx @modelcontextprotocol/inspector docker run --rm -i -e EXA_API_KEY=your_exa_api_key_here reactmcp-exa:local
Run the Inspector command from a terminal with Docker and Node.js installed.
The MCP servers is implemented inserversdirectory. To run a server, simply execute it :
This command will start the MCP server which listens for requests and exposes the following tools:
- search_web: Perform basic web searches.
- advanced_search_web: Perform advanced web searches with filtering options.
Withinservers/exa_web_search.py, a test functiontest_search()is provided (currently commented out) to demonstrate basic usage of the search capabilities. You can run this test by uncommenting the test execution block and using Python's asyncio runner:
if __name__ == "__main__": import asyncio # Uncomment the following line to perform a test search # asyncio.run(test_search()) mcp.run()
This will print search results for sample queries and help you verify that the tool is functioning as expected.
Configure Claude Desktop to use this server by adding the following to your configuration:
{ "mcpServers": { "websearch": { "command": "python", "args": ["path/to/servers/exa_web_search.py"] } } }
- Missing EXA_API_KEY:Ensure that the.envfile is properly set up with your valid Exa API key.
- Dependency Issues:Verify that all necessary Python packages are installed (check yourrequirements.txtfile). Reinstall packages if needed.
- API Errors:If you encounter errors during web searches, check your network connection and verify the Exa API status.
This project is licensed under the MIT License. See theLICENSEfile for details.
Contributions are welcome! If you have suggestions, bug fixes, or improvements, please open an issue or submit a pull request.
Happy coding and enjoy building your personalized, multi-tool AI assistant with ReActMCP Web Search! 🚀😊
Search global news using natural language. Webz.io News Search API returns the most relevant articles and content, with filters for source, country, language, date, sentiment, and category.
Fetch, convert, and search AWS documentation pages, with recommendations for related content.
Search campgrounds around the world on campertunity, check availability, and provide booking links.
The Ferryhopper MCP Server exposes ferry routes, schedules and booking redirects so an AI assistant can discover connections across Europe and the Mediterranean and send users to Ferryhopper to complete bookings.
All-in-One SEO & Web Intelligence Toolkit API from FetchSERP.
MCP server that provides read-only access to HyperKitty, the web-based email archive component of Mailman 3.
At Sunrise Apps, we believe AI agents should be limitless, especially when it comes to visual data. We created ImageSorcery to bridge the critical gap in AI's ability to interact with and manipulate images directly, all while upholding the highest standards of privacy and security.
Just Domain is the domain registrar for businesses built with AI. Its remote MCP server checks availability and returns first-year and renewal pricing, plus a link to register on justdomain.ai, with DNS and WHOIS privacy in the same place. No account, no API key, read only. Endpoint: https://mcp.justdomain.ai/
Research tools, including a Sqlite-backed document stash
Semantic search over 9 free-license stock photo sources. Hosted remote server with OAuth — no API key to paste.
SerpApi MCP Server for Google and other search engine results
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.




