websearch
by Jinddddd
README.md
# websearch_tool
Web search tool with two interfaces sharing one core. Serper primary, DuckDuckGo fallback (on error or empty results).
## Install
```bash
uv pip install -e . # or: pip install -e .
export SERPER_API_KEY=<your-key>
```
## HTTP API
```bash
uvicorn websearch.http_api:app --port 8000
curl "http://127.0.0.1:8000/search?q=anthropic+claude&num=5"
```
| Endpoint | Params | Response |
|----------|--------|----------|
| `GET /search` | `q` (str), `num` (1-50, default 10) | `{query, source, results[]}` |
| `GET /health` | — | `{status}` |
`source` is `serper` or `ddg`. Each result has `title`, `url`, `snippet`.
## MCP Server
```bash
python -m websearch.mcp_server # stdio transport
```
Exposes one tool: `web_search(query: str, num: int = 10)`.
MCP client config:
```json
{
"mcpServers": {
"websearch": {
"command": "python",
"args": ["-m", "websearch.mcp_server"],
"env": { "SERPER_API_KEY": "<your-key>" }
}
}
}
```
## Library
```python
from websearch import search
resp = search("anthropic claude", num=5) # reads SERPER_API_KEY from env
```
TDQS
B3.2/5.0
Scored across 1 tool
Disambiguation5/5
Only one tool exists, so there is no possibility of confusion between tools.
Naming Consistency5/5
With a single tool named 'web_search', naming is trivially consistent.
Tool Count3/5
One tool is minimal but acceptable for a focused search server; however, a more comprehensive set could include fetch or news tools.
Completeness2/5
The server only offers search functionality, lacking obvious features like fetching page content or news-specific search, which would be expected for a complete web search tool set.
Maintenance
ActivityInactive
ResponsivenessNo issues