这是一个与SerpApi集成的模型上下文协议(MCP)服务器实现,用于全面的搜索引擎结果和数据提取。
git clone https://github.com/serpapi/mcp-server.git
cd mcp-server
uv sync
此服务器支持两种提供您的SerpApi API密钥的方法:
uv run src/server.py
# 构建镜像
docker build -t serpapi-mcp-server .
# 运行容器(不需要环境变量)
docker run -p 8000:8000 serpapi-mcp-server
服务器将在http://localhost:8000可用。按照下面所示,在请求路径或头部中包含您的API密钥。
添加到您的claude_desktop_config.json:
{
"mcpServers": {
"serpapi": {
"url": "http://localhost:8000/YOUR_SERPAPI_API_KEY/v1/mcp"
}
}
}
添加到您的claude_desktop_config.json:
{
"mcpServers": {
"serpapi": {
"url": "http://localhost:8000/v1/mcp",
"headers": {
"Authorization": "Bearer YOUR_SERPAPI_API_KEY"
}
}
}
}
对于生产部署,请使用您的域名:
{
"mcpServers": {
"serpapi": {
"url": "https://yourdomain.com/YOUR_SERPAPI_API_KEY/v1/mcp"
}
}
}
curl -X POST "http://localhost:8000/your_serpapi_key/v1/mcp" \
-H "Content-Type: application/json" \
-d '{"method": "tools/call", "params": {"name": "search", "arguments": {"params": {"q": "伦敦天气"}}}}'
curl -X POST "http://localhost:8000/v1/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_serpapi_key" \
-d '{"method": "tools/call", "params": {"name": "search", "arguments": {"params": {"q": "伦敦天气"}}}}'
两种认证方式均可无缝与MCP客户端配合使用。服务器会自动检测并验证您从URL路径或Authorization头部提供的API密钥。
search)一个统一的搜索工具,通过单一接口处理所有类型的搜索。
最佳用途:
参数:
params (字典):搜索参数包括:
q (字符串):搜索查询(必需)engine (字符串):搜索引擎(默认:"google_light")location (字符串):地理位置过滤器num (整数):结果数量(默认:110)raw (布尔值):返回原始JSON响应(默认:false)使用示例:
{
"name": "search",
"arguments": {
"params": {
"q": "最好的咖啡店",
"engine": "google",
"location": "德克萨斯州奥斯汀"
}
}
}
{
"name": "search",
"arguments": {
"params": {
"q": "伦敦天气",
"engine": "google"
}
}
}
{
"name": "search",
"arguments": {
"params": {
"q": "AAPL股价",
"engine": "google"
}
}
}
{
"name": "search",
"arguments": {
"params": {
"q": "最新的人工智能发展",
"engine": "google",
"tbm": "nws"
}
}
}
{
"name": "search",
"arguments": {
"params": {
"q": "机器学习",
"engine": "google"
},
"raw": true
}
}
google) - 全面的Google搜索结果google_light) - 更快、更轻量的Google搜索结果(默认)bing) - Microsoft Bing搜索yahoo) - Yahoo搜索结果duckduckgo) - 注重隐私的搜索yandex) - 俄罗斯搜索引擎baidu) - 中国搜索引擎youtube_search) - 视频搜索ebay) - 产品搜索walmart) - 产品搜索完整列表,请访问SerpApi Engines。
搜索工具会自动检测并格式化不同的结果类型:
结果被优先级排序并格式化以优化可读性。
服务器提供了全面的错误处理:
常见错误响应:
{
"error": "超出速率限制。请稍后再试。"
}
# 安装依赖
uv sync
# 直接运行服务器
uv run src/server.py
MCP Inspector提供了一个测试MCP工具的Web界面。
# 安装(需要Node.js)
npm install -g @modelcontextprotocol/inspector
# 运行检查器
npx @modelcontextprotocol/inspector
然后配置:
localhost:8000/YOUR_API_KEY/v1/mcp,传输“流式HTTP传输”localhost:8000/v1/mcp,传输“流式HTTP传输”,并在Authorization头部添加 Bearer YOUR_API_KEY点击“列出工具”开始测试。
serpapi-mcp-server/
├── src/
│ └── server.py # 主要的MCP服务器实现
├── pyproject.toml # 项目配置
├── README.md # 此文件
├── LICENSE # MIT许可证
└── .env.example # 环境模板
# 搜索信息
result = await client.call_tool("search", {
"params": {
"q": "MCP协议文档",
"engine": "google"
}
})
# 获取天气信息
weather = await client.call_tool("search", {
"params": {
"q": "旧金山天气预报",
"engine": "google"
}
})
# 获取股票数据
stock = await client.call_tool("search", {
"params": {
"q": "特斯拉股价和市值",
"engine": "google"
}
})
# 获取完整的API响应
raw_data = await client.call_tool("search", {
"params": {
"q": "人工智能",
"engine": "google"
},
"raw": True
})
“缺少API密钥”错误:
/{YOUR_API_KEY}/v1/mcpBearer YOUR_API_KEY“无效的SerpApi API密钥”错误:
“超出速率限制”错误:
“模块未找到”错误:
uv install 或 pip install mcp serpapi python-dotenv“未找到结果”错误:
git checkout -b feature/amazing-featureuv installgit commit -m '添加惊人的功能'git push origin feature/amazing-featureMIT许可证 - 详情请参阅LICENSE文件。