MCP Smart Searcher
A smart MCP (Model Context Protocol) server for multi-engine web search with AI-powered results.
Features
- Multi-engine search — Search across 8 engines simultaneously: DuckDuckGo, Baidu, Juejin, GitHub, GitHub Code, Tavily, Brave, Startpage
- Web content extraction — Fetch and extract clean content from any public URL in multiple formats:
markdown(default) — Structured Markdown with headings, lists, code blocks, tables, and links preservedarticle— Reader-mode extraction via Mozilla Readability, ideal for blogs/docs/newstext— Plain text, legacy behavioroutline— Page structure overview (headings, regions, interactive elements) without full content- Plus noise removal, hidden-element stripping, and prompt-guided filtering
- Rate limiting — Built-in concurrency control via semaphore
- Proxy support — Per-engine proxy configuration
- Engine allowlist — Restrict which engines can be used
Installation
# For users
pip install mcp-smart-searcher
# For development
pip install -e ".[dev]"
Usage
Run the server
# Direct command (after pip install)
mcp-smart-searcher
# Or via Python module
python -m mcp_smart_searcher
# Or via uvx (no install required)
uvx mcp-smart-searcher
MCP client configuration
Add to your MCP client config (e.g., Claude Desktop):
{
"mcpServers": {
"smart-searcher": {
"command": "mcp-smart-searcher"
}
}
}
Or with uvx (no install required):
{
"mcpServers": {
"smart-searcher": {
"command": "uvx",
"args": ["mcp-smart-searcher"]
}
}
}
Development
# Run with MCP inspector
mcp dev src/mcp_smart_searcher/server.py
# Run tests
PYTHONPATH=src pytest
# Build
python -m build
Configuration
All settings are configured via environment variables:
| Variable | Description | Default |
|---|---|---|
DEFAULT_SEARCH_ENGINES |
Comma-separated default engines when none specified | duckduckgo,baidu,startpage,tavily,brave |
ALLOWED_SEARCH_ENGINES |
Comma-separated allowlist; unset = all allowed | (all) |
TAVILY_API_KEY |
Tavily AI Search API key | (none) |
GITHUB_TOKEN |
GitHub API token (for github/github_code engines) | (none) |
USE_PROXY |
Enable proxy for engines that need it | true |
PROXY_URL |
Proxy address | http://127.0.0.1:10809 |
PROXY_ENGINES |
Override: comma-separated engines that use proxy | (auto) |
MAX_CONCURRENT_SEARCH |
Max parallel search requests | 5 |
LOG_LEVEL |
Logging level (DEBUG/INFO/WARNING/ERROR) |
INFO |
Proxy behavior
By default, domestic engines (baidu, juejin) skip proxy, while all others use proxy. You can override this with PROXY_ENGINES:
# Only use proxy for DuckDuckGo and GitHub
PROXY_ENGINES=duckduckgo,github,github_code
# Disable proxy entirely
USE_PROXY=false
MCP client configuration with env vars
{
"mcpServers": {
"smart-searcher": {
"command": "mcp-smart-searcher",
"env": {
"TAVILY_API_KEY": "tvly-xxx",
"GITHUB_TOKEN": "ghp_xxx",
"PROXY_URL": "http://127.0.0.1:10809",
"LOG_LEVEL": "INFO"
}
}
}
}
Or with uvx (no install required):
{
"mcpServers": {
"smart-searcher": {
"command": "uvx",
"args": ["mcp-smart-searcher"],
"env": {
"TAVILY_API_KEY": "tvly-xxx",
"GITHUB_TOKEN": "ghp_xxx"
}
}
}
}
Quick Start
1. Install
pip install mcp-smart-searcher
2. Configure (optional)
Create a .env file or set environment variables:
# .env
TAVILY_API_KEY=tvly-your-key-here
GITHUB_TOKEN=ghp_your-token-here
PROXY_URL=http://127.0.0.1:10809
LOG_LEVEL=INFO
3. Add to your MCP client
{
"mcpServers": {
"smart-searcher": {
"command": "mcp-smart-searcher"
}
}
}
4. Done!
Your AI agent can now search the web and fetch web pages.
License
Apache-2.0
Metadata
Release files for mcp-smart-searcher 0.3.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| mcp_smart_searcher-0.3.1.tar.gz | 11.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_smart_searcher-0.3.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 24.9 kB
Release files / mcp_smart_searcher-0.3.1.tar.gz
| Download URL | mcp_smart_searcher-0.3.1.tar.gz |
|---|---|
| Size | 11.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8feaec1860540b1387cc0ee9ab90630f9d3e4f16c6c024b5cb3c345bb65e2be3
|
|
BLAKE2b-256 checksum How to use checksums |
5507f1e0431165703250ba0677bebd168a6d12e0a7f5aa81c530bc215ad3ce4c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.2
|
Release files / mcp_smart_searcher-0.3.1-py3-none-any.whl
| Download URL | mcp_smart_searcher-0.3.1-py3-none-any.whl |
|---|---|
| Size | 13.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
85b5071b5916dc3e30fec59bef713db29b3496bcba18dfd020431aa7b9a10872
|
|
BLAKE2b-256 checksum How to use checksums |
54c5b1bedd98535ac618e92fd33badba95e761c5c8c4adfc6ea8791e1ae35936
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.2
|