返回市场
搜索引擎API-MCP服务器

搜索引擎API-MCP服务器

作者:URDJMK2 星标更新:2025-06-21

项目介绍

【技术文档摘要】

<html> <head> <meta name="google-site-verification" content="7IUYOCgEkfkiWIEriwc2wXkKfrWOHg2SzPp8BKGEh7g" /> </head> </html>

SerpApi MCP Server - Python

一组与SerpAPI和YouTube集成的Model Context Protocol (MCP)服务器,为AI助手提供搜索能力和数据检索。

License: MIT

概述

该项目提供了几个MCP服务器,使像Claude这样的AI助手能够执行各种搜索操作并从以下来源检索数据:

  • 谷歌搜索
  • 谷歌新闻
  • 谷歌学术
  • 谷歌趋势
  • 谷歌财经
  • 谷歌地图
  • 谷歌图片
  • YouTube搜索
  • YouTube字幕

每个服务器都设计为与模型上下文协议(MCP)兼容,使得易于集成支持此协议的AI助手,如桌面版Claude或Grok。

功能

  • 谷歌搜索 (serpapi_google_search.py)
  • 谷歌新闻 (serpapi_google_news.py)
  • 谷歌学术 (serpapi_google_scholar.py)
  • 谷歌趋势 (serpapi_google_trend.py)
  • 谷歌财经 (serpapi_google_finance.py)
  • 谷歌地图 (serpapi_google_maps.py)
  • 谷歌图片 (serpapi_google_images.py)
  • YouTube搜索 (serpapi_youtube_search.py)
  • YouTube字幕 (youtube_transcript.py)

安装

先决条件

  • Python 3.8 或更高版本
  • 一个SerpAPI API密钥(在 serpapi.com 获取)

设置

  1. 克隆仓库:
git clone https://github.com/yourusername/serpapi-mcp-server.git
cd serpapi-mcp-server
  1. 创建虚拟环境并安装依赖项:
python -m venv .venv
source .venv/bin/activate  # 在Windows上:.venv\Scripts\activate
pip install -r requirements.txt
  1. 根据提供的.env.example创建项目根目录下的.env文件:
cp .env.example .env
  1. 编辑.env文件并添加您的SerpAPI API密钥:
SERPAPI_API_KEY=your_api_key_here

快速开始

  1. 保存服务器代码:将服务器代码放在一个文件中,例如server.py。

  2. 配置API密钥:在同一目录下创建一个包含您的SerpApi API密钥的.env文件:

SERPAPI_API_KEY=your_api_key_here
  1. 运行服务器:启动服务器:
python src/serpapi_google_search.py  # 或任何其他服务器文件
  1. 与MCP客户端集成:将服务器连接到MCP客户端或主机(例如桌面版Claude)。

使用桌面版Claude

  1. 配置桌面版Claude以使用这些MCP服务器,通过将其添加到您的claude_desktop_config.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"
      }
    }
  }
}
  1. 确保您的SerpAPI密钥设置在项目根目录下的.env文件中。

  2. 重启桌面版Claude以加载新配置。

  3. 您现在可以直接在与Claude的对话中使用这些搜索功能。

示例查询

这里有一些如何使用这些服务器与桌面版Claude的示例:

谷歌搜索

请搜索“气候变化解决方案”并总结前几个结果。

谷歌新闻

查找有关人工智能的最新新闻。

谷歌学术

查找关于量子计算的近期学术论文。

谷歌趋势

当前技术领域的热门话题是什么?

谷歌财经

查看苹果公司(AAPL)的当前股价和财务信息。

谷歌地图

查找纽约中央公园附近的咖啡店。

谷歌图片

搜索“北极光”的图片并描述您看到的内容。

YouTube搜索

搜索Python编程教程视频。

YouTube字幕

获取这个YouTube视频的字幕:https://www.youtube.com/watch?v=dQw4w9WgXcQ

API参数

每个服务器支持各种参数以微调您的搜索。以下是每个服务器的所有参数:

谷歌搜索

  • q: 搜索查询
  • num: 结果数量(1-100)
  • start: 分页结果偏移量(基于1的索引)
  • location: 搜索位置
  • gl: 谷歌搜索国家代码(例如,'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格式化的文本结果(布尔值)

完整的谷歌搜索API参数文档

谷歌新闻

  • q: 搜索查询
  • gl: 国家代码(例如,'us', 'uk')
  • hl: 语言代码(例如,'en', 'es')
  • publication_token: 在特定出版物内搜索
  • topic_token: 在特定主题内搜索
  • story_token: 获取特定故事的全面覆盖
  • section_token: 在特定部分内搜索
  • so: 排序方法('0'相关性,'1'日期)
  • raw_json: 返回完整的原始JSON响应(布尔值)
  • readable_json: 返回markdown格式化的文本结果(布尔值)

完整的谷歌新闻API参数文档

谷歌学术

  • 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格式化的文本结果(布尔值)

完整的谷歌学术API参数文档

谷歌趋势

  • 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格式化的文本结果(布尔值)

完整的谷歌趋势API参数文档

谷歌财经

  • q: 股票、指数、共同基金、货币或期货的搜索查询
  • hl: 语言代码(例如,'en', 'es')
  • window: 图表的时间范围(例如,'1D', '5D', '1M', '6M', 'YTD', '1Y', '5Y', 'MAX')
  • raw_json: 返回完整的原始JSON响应(布尔值)
  • readable_json: 返回markdown格式化的文本结果(布尔值)

完整的谷歌财经API参数文档

谷歌地图

  • q: 搜索查询
  • type: 搜索类型('search'或'place')
  • place_id: 谷歌地图上的唯一地点参考
  • data: 过滤搜索结果或搜索特定地点
  • ll: GPS坐标,格式为'@纬度,经度,缩放'
  • google_domain: 使用的谷歌域(默认为google.com)
  • hl: 语言代码(例如,'en', 'es')
  • gl: 国家代码(例如,'us', 'uk')
  • start: 分页结果偏移量(整数)
  • raw_json: 返回完整的原始JSON响应(布尔值)
  • readable_json: 返回markdown格式化的文本结果(布尔值)

完整的谷歌地图API参数文档

谷歌图片

  • q: 搜索查询
  • location: 搜索位置
  • uule: 谷歌编码的位置(不能与location一起使用)
  • google_domain: 使用的谷歌域(默认为google.com)
  • hl: 语言代码(例如,'en', 'es')
  • gl: 国家代码(例如,'us', 'uk')
  • cr: 国家限制(例如,'countryUS')
  • device: 设备类型('desktop', 'tablet', 'mobile')
  • ijn: 页面编号(零基索引)
  • chips: 谷歌提供的建议搜索过滤字符串
  • 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格式化的文本结果(布尔值)

完整的谷歌图片API参数文档

YouTube搜索

  • search_query: 搜索查询
  • gl: 国家代码(例如,'us', 'uk')
  • hl: 语言代码(例如,'en', 'es')
  • sp: 过滤参数(例如,'CAISAhAB'用于今天上传的视频)
  • raw_json: 返回完整的原始JSON响应(布尔值)
  • readable_json: 返回markdown格式化的文本结果(布尔值)

完整的YouTube搜索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文档

故障排除

无效API密钥

  • 验证.env文件中的API密钥配置
  • 确认API密钥在SerpAPI仪表板中处于活动状态
  • 检查API密钥是否有引号或空格

请求失败

  • 检查网络连接
  • 确认API调用配额未超过
  • 验证请求参数格式
  • 检查是否存在速率限制问题

许可证

本项目根据MIT许可证发布 - 查看LICENSE文件了解详情。

致谢

资源