mcp-web-search
MCP Web Search Server
A Model Context Protocol (MCP) server that provides web search capabilities, deployable on Render.
Built with Python using the official MCP SDK, supporting SSE (Server-Sent Events) and Streamable HTTP transports for AIPI.
Tools exposed
Tool | Description |
| Search the web. Returns titles, URLs, and descriptions. |
| Fetch and extract text content from any URL. |
๐ Deploy to Render (step-by-step)
1. Push this repo to GitHub
cd mcp-web-search
git init
git add .
git commit -m "Initial commit"
# create a repo on github.com, then:
git remote add origin https://github.com/YOUR_USERNAME/mcp-web-search.git
git push -u origin main2. Create a new Web Service on Render
Go to render.com โ New โ Web Service
Connect your GitHub repo (
mcp-web-search)Render will auto-detect
render.yamlโ click ApplySet environment variables in the Render dashboard:
Variable | Required | Description |
| Recommended | Get free at serper.dev โ 2,500 queries/month free (Google results) |
| Optional | Set to any secret string to password-protect your server |
Click Create Web Service โ Render will build and deploy automatically.
Your server URL will be: https://mcp-web-search.onrender.com (or similar)
๐ Connect to AIPI
In AIPI's Add Custom MCP screen, use this flat configuration (no wrapper object):
SSE:
{
"url": "https://mcp-web-search-j73g.onrender.com/sse",
"name": "web-search",
"type": "sse"
}Streamable HTTP:
{
"url": "https://mcp-web-search-j73g.onrender.com/mcp",
"name": "web-search",
"type": "streamable"
}Replace the host with your actual Render service URL if different. AIPI uses a flat
url / name / type object โ it does not use a mcpServers wrapper.
๐ Search Providers
Provider | Key required | Quality | Limit |
Serper.dev | Yes (free) | โญโญโญโญโญ | 2,500 queries/month free (Google results) |
DuckDuckGo | No | โญโญโญ | Unlimited (fallback) |
Set SERPER_API_KEY in Render env vars to use Serper. The server falls back to DuckDuckGo automatically if the key is absent.
๐งช Test locally
pip install -r requirements.txt
SERPER_API_KEY=your_key python server.pyHealth check:
curl http://localhost:3000/The server runs on port 3000 by default. Set PORT environment variable to change it.
โ ๏ธ Free tier note
Render's free tier spins down after 15 minutes of inactivity (cold start ~30s). Upgrade to the Starter plan ($7/mo) to keep it always-on.