内容
```html
<html>
<head>
<meta name="google-site-verification" content="7IUYOCgEkfkiWIEriwc2wXkKfrWOHg2SzPp8BKGEh7g" />
</head>
</html>
```
# SerpApi MCP Server - Python
一组与 SerpAPI 和 YouTube 集成的模型上下文协议(Model Context Protocol,MCP)服务器,提供搜索功能和数据检索,供 AI 助手使用。
[](https://opensource.org/licenses/MIT)
## 概述
该项目提供多个 MCP 服务器,使 AI 助手(如 Claude)能够执行各种搜索操作并从以下来源检索数据:
- Google 搜索
- Google 新闻
- Google 学术
- Google 趋势
- Google 财经
- Google 地图
- Google 图片
- YouTube 搜索
- YouTube 字幕
每个服务器都旨在与模型上下文协议(MCP)配合使用,使其易于与支持该协议的 AI 助手集成,例如 Claude for Desktop 或 Grok。
## 特性
- Google 搜索 (`serpapi_google_search.py`)
- Google 新闻 (`serpapi_google_news.py`)
- Google 学术 (`serpapi_google_scholar.py`)
- Google 趋势 (`serpapi_google_trend.py`)
- Google 财经 (`serpapi_google_finance.py`)
- Google 地图 (`serpapi_google_maps.py`)
- Google 图片 (`serpapi_google_images.py`)
- YouTube 搜索 (`serpapi_youtube_search.py`)
- YouTube 字幕 (`youtube_transcript.py`)
## 安装
### 先决条件
- Python 3.8 或更高版本
- 一个 SerpAPI API 密钥(在 [serpapi.com](https://serpapi.com) 获取)
### 设置
1. 克隆代码库:
```bash
git clone https://github.com/yourusername/serpapi-mcp-server.git
cd serpapi-mcp-server
```
2. 创建虚拟环境并安装依赖:
```bash
python -m venv .venv
source .venv/bin/activate # 在 Windows 上: .venv\Scripts\activate
pip install -r requirements.txt
```
3. 根据提供的 `.env.example` 在项目根目录创建 `.env` 文件:
```bash
cp .env.example .env
```
4. 编辑 `.env` 文件并添加你的 SerpAPI API 密钥:
```
SERPAPI_API_KEY=your_api_key_here
```
## 快速开始
1. 保存服务器代码:将服务器代码放在一个文件中,例如 server.py。
2. 配置 API 密钥:在同一目录下创建一个 .env 文件,包含你的 SerpApi API 密钥:
```plaintext
SERPAPI_API_KEY=your_api_key_here
```
3. 运行服务器:使用以下命令启动服务器:
```bash
python src/serpapi_google_search.py # 或其他服务器文件
```
4. 与 MCP 客户端集成:将服务器连接到 MCP 客户端或主机(例如 Claude for Desktop)。
## 与 Claude for Desktop 的使用
1. 配置 Claude for Desktop 使用这些 MCP 服务器,通过将它们添加到你的 `claude_desktop_config.json` 文件中:
```json
{
"mcpServers": {
"serpapi-google-search": {
"type": "stdio",
"command": "path/to/python",
"args": [
"path/to/serpapi-mcp-server/src/serpapi_google_search.py"
],
"env": {
"PYTHONPATH": "path/to/site-packages"
}
},
"serpapi-youtube-search": {
"type": "stdio",
"command": "path/to/python",
"args": [
"path/to/serpapi-mcp-server/src/serpapi_youtube_search.py"
],
"env": {
"PYTHONPATH": "path/to/site-packages"
}
},
"serpapi-google-news": {
"type": "stdio",
"command": "path/to/python",
"args": [
"path/to/serpapi-mcp-server/src/serpapi_google_news.py"
],
"env": {
"PYTHONPATH": "path/to/site-packages"
}
},
"serpapi-google-trend": {
"type": "stdio",
"command": "path/to/python",
"args": [
"path/to/serpapi-mcp-server/src/serpapi_google_trend.py"
],
"env": {
"PYTHONPATH": "path/to/site-packages"
}
},
"serpapi-google-scholar": {
"type": "stdio",
"command": "path/to/python",
"args": [
"path/to/serpapi-mcp-server/src/serpapi_google_scholar.py"
],
"env": {
"PYTHONPATH": "path/to/site-packages"
}
},
"serpapi-google-finance": {
"type": "stdio",
"command": "path/to/python",
"args": [
"path/to/serpapi-mcp-server/src/serpapi_google_finance.py"
],
"env": {
"PYTHONPATH": "path/to/site-packages"
}
},
"serpapi-google-maps": {
"type": "stdio",
"command": "path/to/python",
"args": [
"path/to/serpapi-mcp-server/src/serpapi_google_maps.py"
],
"env": {
"PYTHONPATH": "path/to/site-packages"
}
},
"serpapi-google-images": {
"type": "stdio",
"command": "path/to/python",
"args": [
"path/to/serpapi-mcp-server/src/serpapi_google_images.py"
],
"env": {
"PYTHONPATH": "path/to/site-packages"
}
},
"youtube-transcript": {
"type": "stdio",
"command": "path/to/python",
"args": [
"path/to/serpapi-mcp-server/src/youtube_transcript.py"
],
"env": {
"PYTHONPATH": "path/to/site-packages"
}
}
}
}
```
2. 确保你的 SerpAPI 密钥在项目根目录的 `.env` 文件中设置。
3. 重启 Claude for Desktop 以加载新配置。
4. 现在你可以在与 Claude 的对话中直接使用这些搜索功能。
## 示例查询
以下是如何在 Claude Desktop 中使用这些服务器的一些示例:
### Google 搜索
```
请搜索“气候变化解决方案”并总结顶部结果。
```
### Google 新闻
```
查找有关人工智能的最新新闻。
```
### Google 学术
```
查找关于量子计算的最新学术论文。
```
### Google 趋势
```
现在科技领域的热门话题是什么?
```
### Google 财经
```
查找苹果公司(AAPL)的当前股价和财务信息。
```
### Google 地图
```
查找纽约中央公园附近的咖啡店。
```
### Google 图片
```
搜索“北极光”的图片并描述你看到的内容。
```
### YouTube 搜索
```
搜索关于 Python 编程的教程视频。
```
### YouTube 字幕
```
获取此 YouTube 视频的字幕:https://www.youtube.com/watch?v=dQw4w9WgXcQ
```
## API 参数
每个服务器支持各种参数,以微调你的搜索。以下是每个服务器的所有参数:
### Google 搜索
- `q`: 搜索查询
- `num`: 结果数量(1-100)
- `start`: 分页的结果偏移(基于 1 的索引)
- `location`: 搜索位置
- `gl`: Google 搜索的国家代码(例如,'us','uk')
- `hl`: 语言代码(例如,'en','es')
- `device`: 设备类型('desktop','mobile','tablet')
- `safe`: 安全搜索设置('active','off')
- `filter`: 过滤重复内容('0' 为关闭,'1' 为开启)
- `time_period`: 按时间过滤(例如,'d' 为过去一天)
- `exactTerms`: 应该完全出现的单词或短语
- `include_domains`: 要包含在搜索结果中的域名列表
- `exclude_domains`: 要从搜索结果中排除的域名列表
- `raw_json`: 返回完整的原始 JSON 响应(布尔值)
- `readable_json`: 以 markdown 格式返回结果(布尔值)
[完整的 Google 搜索 API 参数文档](https://serpapi.com/search-api)
### Google 新闻
- `q`: 搜索查询
- `gl`: 国家代码(例如,'us','uk')
- `hl`: 语言代码(例如,'en','es')
- `publication_token`: 在特定出版物内搜索
- `topic_token`: 在特定主题内搜索
- `story_token`: 获取特定故事的完整报道
- `section_token`: 在特定部分内搜索
- `so`: 排序方式('0' 为相关性,'1' 为日期)
- `raw_json`: 返回完整的原始 JSON 响应(布尔值)
- `readable_json`: 以 markdown 格式返回结果(布尔值)
[完整的 Google 新闻 API 参数文档](https://serpapi.com/google-news-api)
### Google 学术
- `q`: 搜索查询
- `hl`: 语言代码(例如,'en','es')
- `lr`: 语言限制(例如,'lang_fr|lang_de')
- `start`: 分页的结果偏移
- `num`: 结果数量(1-20)
- `cites`: 被引用搜索的 ID
- `as_ylo`: 时间范围的开始年份
- `as_yhi`: 时间范围的结束年份
- `scisbd`: 按日期排序(0 为相关性,1 为摘要,2 为所有内容)
- `cluster`: 所有版本搜索的 ID
- `as_sdt`: 搜索类型或过滤器
- `safe`: 安全搜索设置('active','off')
- `filter`: 过滤相似/省略的结果('0' 为关闭,'1' 为开启)
- `as_vis`: 包含引用('0' 为包含,'1' 为排除)
- `as_rr`: 仅显示评论文章('0' 为所有,'1' 为仅评论)
- `raw_json`: 返回完整的原始 JSON 响应(布尔值)
- `readable_json`: 以 markdown 格式返回结果(布尔值)
[完整的 Google 学术 API 参数文档](https://serpapi.com/google-scholar-api)
### Google 趋势
- `q`: 搜索查询(可以用逗号分隔多个查询)
- `geo`: 地理位置(例如,'US','GB')
- `date`: 时间范围(例如,'now 1-d','now 7-d','today 12-m')
- `tz`: 时区偏移(以分钟为单位)
- `data_type`: 搜索类型(例如,'TIMESERIES','GEO_MAP')
- `cat`: 类别 ID
- `gprop`: 属性过滤器(例如,'web','news','images')
- `raw_json`: 返回完整的原始 JSON 响应(布尔值)
- `readable_json`: 以 markdown 格式返回结果(布尔值)
[完整的 Google 趋势 API 参数文档](https://serpapi.com/google-trends-api)
### Google 财经
- `q`: 股票、指数、共同基金、货币或期货的搜索查询
- `hl`: 语言代码(例如,'en','es')
- `window`: 图表的时间范围(例如,'1D','5D','1M','6M','YTD','1Y','5Y','MAX')
- `raw_json`: 返回完整的原始 JSON 响应(布尔值)
- `readable_json`: 以 markdown 格式返回结果(布尔值)
[完整的 Google 财经 API 参数文档](https://serpapi.com/google-finance-api)
### Google 地图
- `q`: 搜索查询
- `type`: 搜索类型('search' 或 'place')
- `place_id`: Google 地图上地点的唯一引用
- `data`: 过滤搜索结果或搜索特定地点
- `ll`: GPS 坐标,格式为 '@latitude,longitude,zoom'
- `google_domain`: 要使用的 Google 域(默认为 google.com)
- `hl`: 语言代码(例如,'en','es')
- `gl`: 国家代码(例如,'us','uk')
- `start`: 分页的结果偏移(整数)
- `raw_json`: 返回完整的原始 JSON 响应(布尔值)
- `readable_json`: 以 markdown 格式返回结果(布尔值)
[完整的 Google 地图 API 参数文档](https://serpapi.com/google-maps-api)
### Google 图片
- `q`: 搜索查询
- `location`: 搜索位置
- `uule`: Google 编码位置(不能与 location 一起使用)
- `google_domain`: 要使用的 Google 域(默认为 google.com)
- `hl`: 语言代码(例如,'en','es')
- `gl`: 国家代码(例如,'us','uk')
- `cr`: 国家限制(例如,'countryUS')
- `device`: 设备类型('desktop','tablet','mobile')
- `ijn`: 页码(基于零的索引)
- `chips`: Google 提供的过滤字符串作为建议搜索
- `tbs`: 高级搜索参数
- `imgar`: 图片的纵横比('s' - 正方形,'t' - 高,'w' - 宽,'xw' - 全景)
- `imgsz`: 图片大小('l' - 大,'m' - 中,'i' - 图标等)
- `image_color`: 图片颜色('red','blue','green','black','white' 等)
- `image_type`: 图片类型('face','photo','clipart','lineart','animated')
- `licenses`: 许可证范围('f' - 免费使用,'fc' - 免费商业使用等)
- `safe`: 安全搜索设置('active','off')
- `nfpr`: 排除自动更正的结果('1' 为排除,'0' 为包含)
- `filter`: 启用/禁用“相似结果”和“省略结果”过滤器
- `time_period`: 按时间过滤(例如,'d' 为过去一天)
- `raw_json`: 返回完整的原始 JSON 响应(布尔值)
- `readable_json`: 以 markdown 格式返回结果(布尔值)
[完整的 Google 图片 API 参数文档](https://serpapi.com/google-images-api)
### YouTube 搜索
- `search_query`: 搜索查询
- `gl`: 国家代码(例如,'us','uk')
- `hl`: 语言代码(例如,'en','es')
- `sp`: 过滤参数(例如,'CAISAhAB' 表示今天上传的视频)
- `raw_json`: 返回完整的原始 JSON 响应(布尔值)
- `readable_json`: 以 markdown 格式返回结果(布尔值)
[完整的 YouTube 搜索 API 参数文档](https://serpapi.com/youtube-search-api)
### YouTube 视频
- `v`: YouTube 视频 ID
- `gl`: 国家代码(例如,'us','uk')
- `hl`: 语言代码(例如,'en','es')
- `next_page_token`: 用于检索相关视频、评论或回复的下一页的令牌
- `raw_json`: 返回完整的原始 JSON 响应(布尔值)
- `readable_json`: 以 markdown 格式返回结果(布尔值)
### YouTube 字幕
- `video_url`: YouTube 视频 URL 或 ID
- `with_timestamps`: 在字幕中包含时间戳(布尔值)
- `language`: 字幕的语言代码(默认:'en')
- `preserve_formatting`: 保留 HTML 格式元素(布尔值)
- `cookies_path`: 用于年龄限制视频的 cookies.txt 文件路径
- `proxy`: 请求使用的 HTTPS 代理
- `raw_json`: 返回完整的原始 JSON 响应(布尔值)
- `readable_json`: 返回人类可读的格式化文本(布尔值)
- `text_transcript`: 以单个文本字符串返回字幕(布尔值)
[YouTube 字幕 API 文档](https://github.com/jdepoix/youtube-transcript-api)
### 故障排除
#### 无效的 API 密钥
- 验证 `.env` 文件中的 API 密钥配置
- 确认 API 密钥在 SerpAPI 仪表板中处于活动状态
- 检查 API 密钥中是否有引号或空格
#### 请求失败
- 检查网络连接
- 验证 API 调用配额是否未超出
- 验证请求参数格式
- 检查速率限制问题
## 许可证
该项目根据 MIT 许可证授权 - 详细信息请参见 LICENSE 文件。
## 致谢
- [SerpApi](https://serpapi.com) 提供搜索 API
- [YouTube 字幕 API](https://github.com/jdepoix/youtube-transcript-api) 用于字幕检索
- MCP 协议使 AI 助手集成成为可能
## 资源
- [SerpAPI 文档](https://serpapi.com/docs)
- [MCP 协议文档](https://github.com/modelcontextprotocol/mcp)
- [Claude for Desktop 文档](https://claude.ai/docs)
```
连接信息
猜你喜欢
暂无推荐服务器