web-research-hub-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@web-research-hub-mcp-serversearch the web for the latest news on artificial intelligence"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
web-research-hub-mcp-server
A standalone MCP sidecar for web-research-hub. Exposes 4 tools over Streamable HTTP so any MCP-compatible client (Claude Desktop, Claude.ai, custom agents) can call them directly.
Architecture
Client (Claude / agent)
│ POST /mcp (MCP Streamable HTTP)
▼
FastAPI + FastMCP
│
┌─────┴──────────────────────────────────┐
│ web_search fetch_url calculate export_report │
└─────┬──────────────┬────────────────────┘
│ │
Exa AI API httpx + BS4 ast (stdlib) fpdf2 / python-docxTransport: Streamable HTTP — clients POST to
/mcpHealth check:
GET /healthCORS: configurable via
CORS_ORIGIN_REGEXenv var (default:https://.*\.vercel\.app)
Related MCP server: Exa Websets MCP Server
Tool Reference
web_search
Searches the live web via Exa AI.
Parameter | Type | Default | Notes |
| string | required | Search query |
| int |
| Max results to return |
| string |
| ISO 8601 date filter (e.g. |
| string |
| ISO 8601 date filter |
Response:
{
"results": [{ "title": "", "url": "", "summary": "", "published_date": "" }],
"query": "...",
"total_results": 4
}Returns results: [] on failure, never throws.
fetch_url
Fetches a URL and returns clean extracted text.
Parameter | Type | Default | Notes |
| string | required | Full URL to fetch |
| int |
| Character limit on returned content |
Response:
{ "url": "", "content": "", "title": "", "success": true }Returns success: false on failure, never throws.
calculate
Evaluates a safe arithmetic expression.
Parameter | Type | Default | Notes |
| string | required | e.g. |
| string |
| Optional label for context |
Supported operators: + - * / ** % //
Response:
{ "expression": "(3 + 4) * 2", "result": 14, "description": null }Returns result: null with an error field on failure, never throws.
export_report
Exports a markdown string to PDF, DOCX, or MD, returned as base64.
Parameter | Type | Default | Notes |
| string | required | Markdown source |
| string | required |
|
| string |
| Prepended as H1; used in filename |
Citation links [text](url) are rendered as text (domain.com) in PDF/DOCX output.
Response:
{ "format": "pdf", "filename": "report.pdf", "content_base64": "...", "success": true }Returns success: false on failure, never throws.
Environment Variables
Variable | Required | Description |
| Yes | Exa AI API key — get one at exa.ai |
| No | Regex for allowed origins. Default: |
Local Development
# 1. Clone and enter the repo
git clone https://github.com/Paul-Orlando/web-research-hub-mcp-server.git
cd web-research-hub-mcp-server
# 2. Create a virtual environment
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# 3. Install dependencies
pip install -r requirements.txt
# 4. Configure environment
cp .env.example .env
# Edit .env and add your EXA_API_KEY
# 5. Run the server
uvicorn main:app --reloadVerify it's running:
curl http://localhost:8000/health
# {"status":"ok","tools":["web_search","fetch_url","calculate","export_report"]}Deployment
Render / Railway (recommended)
Both platforms detect the Procfile automatically.
Push this repo to GitHub.
Create a new Web Service pointing to the repo.
Set the
EXA_API_KEYenvironment variable in the platform dashboard.Deploy — the service starts with:
uvicorn main:app --host 0.0.0.0 --port $PORT
Heroku
heroku create
heroku config:set EXA_API_KEY=your_key_here
git push heroku mainConnecting to Claude Desktop
Add this to your claude_desktop_config.json:
{
"mcpServers": {
"web-research-hub": {
"url": "https://your-deployed-url.com/mcp"
}
}
}For local development use http://localhost:8000/mcp.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Paul-Orlando/web-research-hub-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server