search_webLABSCO SUMMARY
Two tools, and the second one is the one you will actually use.
The date filter is what makes this worth connecting: "only results from the last thirty days" is the difference between a current answer and a confidently stale one, and a plain search tool has no way to express it. Restricting to specific domains does the same job for trustworthiness — pin the query to the official documentation site and the model stops citing a years-old forum thread.
What it is
A small MCP server that puts the Exa search API behind two tools and formats the results as markdown rather than as raw JSON, so what reaches the model already reads like a citation list. It is one server out of the wider ReActMCP project.
What you get
- search_web — a straightforward query, returning titles, URLs, publication dates and content summaries
- advanced_search_web — the same, plus filters: include_domains to restrict which sites count, required text that must appear in the page, and max_age_days to exclude anything older
- Results arrive pre-formatted as markdown, so an assistant can cite URLs without reassembling them
- A Dockerfile you build into a local image that runs the server over stdio, with the key supplied at runtime
- The repository also ships an optional OpenAI and LangGraph host, which is a separate program — the MCP entry point is the Exa search server itself
Requirements
An Exa API key in EXA_API_KEY, and Python 3.8 or later with exa-py installed. Clone the repository and run the search server directly, or build the Docker image from the repository and run it with the key passed in. Exa bills you under your own plan; the server adds no cost of its own and holds no state.
Setup effort
Build from source — git clone https://github.com/mshojaei77/ReActMCP.git
USE CASES
Asking about something that changed after the model was trained
Search with an age limit so old pages never enter the answer.
Getting an answer from the official source, not a blog
Restrict the search to the vendor's own domains.
Tracking down an exact error message
Require the text to appear in the page rather than relying on relevance ranking.
A quick look before deciding whether to dig in
Run the plain search and read the summaries.
2 tools
Listed in project docs. Your client may show a different list.
advanced_search_webBEFORE YOU INSTALL
What to know first
Tools you get
2 tools named in the project's documentation.
Requires
- Python 3.8+ and uv (or Docker)
- An Exa API key (EXA_API_KEY in the .env file, or -e for Docker)
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
git clone https://github.com/mshojaei77/ReActMCP.git
cd ReActMCP
python -m venv venv
source venv/bin/activate # On Windows use: venv\Scripts\activate
uv pip install -r requirements.txtCreate a .env file in the project root with your Exa key:
EXA_API_KEY=<YOUR_EXA_API_KEY>MCP Clients
Claude Desktop
{
"mcpServers": {
"websearch": {
"command": "python",
"args": [
"<YOUR_PATH_TO_SERVERS>/exa_web_search.py"
]
}
}
}<YOUR_PATH_TO_SERVERS> is the servers folder inside your ReActMCP clone, written as a full path. If you installed into the virtual environment, use its Python as the command (venv/bin/python in the clone, venv\Scripts\python.exe on Windows). The server reads EXA_API_KEY from the .env file in the clone.
Any MCP client — Docker
Build the image from the repository
git clone https://github.com/mshojaei77/ReActMCP.git
cd ReActMCP
docker build -t reactmcp-exa:local .Then give your MCP host this command. <YOUR_EXA_API_KEY> is your Exa API key.
docker run --rm -i -e EXA_API_KEY=<YOUR_EXA_API_KEY> reactmcp-exa:local