Search MCP Server
A powerful Model Context Protocol (MCP) server providing AI-enhanced Baidu search with intelligent reranking and comprehensive web content extraction capabilities.
✨ Features
- 🔍 Baidu Search Integration: Fast and reliable search results from Baidu
- 🤖 AI-Powered Reranking: Uses multiple AI agents (Qwen) to intelligently rerank search results by relevance
- 📄 Web Content Extraction: Extract clean, readable text from web pages with pagination support
- 🎯 Batch Processing: Extract content from multiple URLs simultaneously
- 🌐 MCP Standard: Fully compliant with Model Context Protocol for seamless integration
🚀 Quick Start
Prerequisites
- Python 3.10 or higher
- uv (recommended) or pip
- DashScope API key (for AI search features)
Installation
Using uv (Recommended)
# Clone the repository
git clone https://github.com/Vist233/Google-Search-Tool.git
cd search-mcp
# Install with uv
uv pip install -e .
Using pip
pip install -e .
Environment Setup
Create a .env file or set environment variables for AI features:
export DASHSCOPE_API_KEY="your-api-key-here"
📖 Usage
As an MCP Server
Add to your MCP client configuration (e.g., Claude Desktop):
For macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
For Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"aiwebsearcher": {
"command": "uvx",
"args": [
"aiwebsearcher"
]
}
}
}
Note: API key is read from environment variable DASHSCOPE_API_KEY. Set it before running:
# macOS/Linux
export DASHSCOPE_API_KEY="your-api-key-here"
# Windows (PowerShell)
$env:DASHSCOPE_API_KEY="your-api-key-here"
Standalone Testing
# Install the package
pip install aiwebsearcher
# Set API key
export DASHSCOPE_API_KEY="your-key"
# Run the server
aiwebsearcher
🛠️ Available Tools
1. search_baidu
Execute basic Baidu search and return structured results.
Parameters:
query(str): Search keywordmax_results(int, optional): Maximum results to return (default: 5)language(str, optional): Search language (default: "zh")
Returns: JSON string with title, url, and abstract for each result.
Example:
{
"query": "人工智能发展现状",
"max_results": 5
}
2. AI_search_baidu
AI-enhanced search with intelligent reranking and content extraction. Takes ~3x longer but provides higher quality, ranked results with full page content.
Parameters:
query(str): Search keywordmax_results(int, optional): Initial results to fetch (default: 5, recommended 5+)language(str, optional): Search language (default: "zh")
Returns: JSON string with rank, title, url, and Content (full page text) for each result.
Example:
{
"query": "AI发展趋势 2025",
"max_results": 12
}
3. extractTextFromUrl
Extract clean, readable text from a single webpage.
Parameters:
url(str): Target webpage URLfollow_pagination(bool, optional): Follow rel="next" links (default: true)pagination_limit(int, optional): Max pagination depth (default: 3)timeout(float, optional): HTTP timeout in seconds (default: 10.0)user_agent(str, optional): Custom User-Agent headerregular_expressions(list[str], optional): Regex patterns to filter text
Returns: Extracted text content as string.
4. extractTextFromUrls
Extract text from multiple webpages in batch.
Parameters: Same as extractTextFromUrl, plus:
urls(list[str]): List of target URLs
Returns: Combined text from all URLs, separated by double newlines.
🏗️ Project Structure
search-mcp/
├── searcher/
│ └── src/
│ ├── server.py # MCP server entry point
│ ├── FetchPage/
│ │ └── fetchWeb.py # Web content extraction
│ ├── WebSearch/
│ │ ├── baiduSearchTool.py # Baidu search implementation
│ │ └── SearchAgent.py # AI agent definitions (legacy)
│ └── useAI2Search/
│ └── SearchAgent.py # AI-powered search orchestration
├── tests/ # Test files
├── pyproject.toml # Project configuration
├── requirements.txt # Dependencies
└── README.md # This file
🔧 Development
Install Development Dependencies
uv pip install -e ".[dev]"
Run Tests
pytest
Code Formatting
# Format with black
black searcher/
# Lint with ruff
ruff check searcher/
📝 Configuration
MCP Client Configuration Examples
Minimal configuration:
{
"mcpServers": {
"search": {
"command": "python",
"args": ["server.py"],
"cwd": "/path/to/search-mcp/searcher/src"
}
}
}
With uv for dependency isolation:
{
"mcpServers": {
"search": {
"command": "uv",
"args": ["--directory", "/path/to/search-mcp/searcher/src", "run", "python", "server.py"]
}
}
}
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- Built with FastMCP
- AI models powered by Agno and DashScope
- Search powered by baidusearch
- Content extraction using trafilatura
📮 Contact
- GitHub: @Vist233
- Repository: Google-Search-Tool
⚠️ Disclaimer
This tool is for educational and research purposes. Please respect website terms of service and rate limits when scraping content.
Release files for aiwebsearcher 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aiwebsearcher-0.1.2.tar.gz | 20.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aiwebsearcher-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 33.8 kB
Release files / aiwebsearcher-0.1.2.tar.gz
| Download URL | aiwebsearcher-0.1.2.tar.gz |
|---|---|
| Size | 20.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
286832c9d1ac7ddf19aab72aba98168ac1033f76cbb6ceaeae94034e7c19e575
|
|
BLAKE2b-256 checksum How to use checksums |
b679750f9ab20853195939384cdb055285975021d18f76a44984641bb2579130
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.15
|
Release files / aiwebsearcher-0.1.2-py3-none-any.whl
| Download URL | aiwebsearcher-0.1.2-py3-none-any.whl |
|---|---|
| Size | 13.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0ee0532b94192a2c887ba55d7b7a76001f7c49c180a2817afbba7967b2238dfe
|
|
BLAKE2b-256 checksum How to use checksums |
748aeba83ff9e397e2c9ad4c0bf45cdf3ca9d113e387e0d2f17ae78a3955c5a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.8.15
|