SerpApi MCP Server - Python

SerpApi MCP Server - Python

URDJMK

研究与数据
访问服务器

README

SerpApi MCP 服务器 - Python

一组模型上下文协议 (MCP) 服务器,与 SerpAPI 和 YouTube 集成,为 AI 助手提供搜索功能和数据检索。

License: MIT

概述

本项目提供多个 MCP 服务器,使 Claude 等 AI 助手能够执行各种搜索操作并从以下来源检索数据:

  • 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 获取)

设置

  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 文件,基于提供的 .env.example
cp .env.example .env
  1. 编辑 .env 文件并添加您的 SerpAPI API 密钥:
SERPAPI_API_KEY=your_api_key_here

快速开始

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

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

SERPAPI_API_KEY=your_api_key_here
  1. 运行服务器:使用以下命令启动服务器:
python src/serpapi_google_search.py  # 或任何其他服务器文件
  1. 与 MCP 客户端集成:将服务器连接到 MCP 客户端或主机(例如,Claude for Desktop)。

与 Claude for Desktop 一起使用

  1. 通过将这些 MCP 服务器添加到您的 claude_desktop_config.json 文件中,配置 Claude for Desktop 以使用它们:
{
  "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 for Desktop 以加载新配置。

  3. 现在,您可以直接在与 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 参数文档

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 参数文档

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 参数文档

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 参数文档

Google 财经

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

完整的 Google 财经 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 参数文档

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 参数文档

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 文件。

致谢

资源

推荐服务器

Crypto Price & Market Analysis MCP Server

Crypto Price & Market Analysis MCP Server

一个模型上下文协议 (MCP) 服务器,它使用 CoinCap API 提供全面的加密货币分析。该服务器通过一个易于使用的界面提供实时价格数据、市场分析和历史趋势。 (Alternative, slightly more formal and technical translation): 一个模型上下文协议 (MCP) 服务器,利用 CoinCap API 提供全面的加密货币分析服务。该服务器通过用户友好的界面,提供实时价格数据、市场分析以及历史趋势数据。

精选
TypeScript
MCP PubMed Search

MCP PubMed Search

用于搜索 PubMed 的服务器(PubMed 是一个免费的在线数据库,用户可以在其中搜索生物医学和生命科学文献)。 我是在 MCP 发布当天创建的,但当时正在度假。 我看到有人在您的数据库中发布了类似的服务器,但还是决定发布我的服务器。

精选
Python
mixpanel

mixpanel

连接到您的 Mixpanel 数据。 从 Mixpanel 分析查询事件、留存和漏斗数据。

精选
TypeScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Nefino MCP Server

Nefino MCP Server

为大型语言模型提供访问德国可再生能源项目新闻和信息的能力,允许按地点、主题(太阳能、风能、氢能)和日期范围进行筛选。

官方
Python
Vectorize

Vectorize

将 MCP 服务器向量化以实现高级检索、私有深度研究、Anything-to-Markdown 文件提取和文本分块。

官方
JavaScript
Mathematica Documentation MCP server

Mathematica Documentation MCP server

一个服务器,通过 FastMCP 提供对 Mathematica 文档的访问,使用户能够从 Wolfram Mathematica 检索函数文档和列出软件包符号。

本地
Python
kb-mcp-server

kb-mcp-server

一个 MCP 服务器,旨在实现便携性、本地化、简易性和便利性,以支持对 txtai “all in one” 嵌入数据库进行基于语义/图的检索。任何 tar.gz 格式的 txtai 嵌入数据库都可以被加载。

本地
Python
Research MCP Server

Research MCP Server

这个服务器用作 MCP 服务器,与 Notion 交互以检索和创建调查数据,并与 Claude Desktop Client 集成以进行和审查调查。

本地
Python
Cryo MCP Server

Cryo MCP Server

一个API服务器,实现了模型补全协议(MCP),用于Cryo区块链数据提取,允许用户通过任何兼容MCP的客户端查询以太坊区块链数据。

本地
Python