搜索引擎上下文协议服务器

Google Search MCP Server 是一个通过 Google Custom Search JSON API 获取实时网络搜索结果的服务器,为大型语言模型(LLMs)提供上下文信息。

  • by artryazanov
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 artryazanov/google-search-mcp

使用说明

谷歌搜索MCP服务器

此存储库提供 模型上下文协议(MCP) 从谷歌搜索中检索信息以向大型语言模型(LLM)提供上下文的服务器。它使用谷歌自定义搜索JSON API获取实时网络搜索结果,允许人工智能助手将他们的响应建立在最新信息中。

概述

谷歌搜索MCP服务器充当LLM和谷歌搜索引擎之间的桥梁。通过标准化的MCP接口,LLM可以发出搜索查询并接收相关结果。这使得AI助手能够从网络上获取训练数据之外的当前信息。

特性

  • 搜索网络:执行谷歌搜索并检索查询的热门网络结果(标题、片段、网址)。
  • 实时信息:通过实时谷歌搜索在线获取最新信息。
  • 可配置的结果限制:指定查询返回的结果数(默认值为10,最多为50)。
  • 可选缓存:启用查询结果缓存,以提高重复查询的性能。
  • STDIO和SSE支持:在中运行服务器 stdio 直接集成模式(作为子流程)或 sse 通过HTTP服务查询的模式(使用服务器发送事件)。

需求

  • Python 3.8+ 服务器是用Python编写的,需要3.8或更高版本。
  • Google API证书 –Google自定义搜索API 钥匙 和 搜索引擎ID (CX)是必需的(参见 正在获取API凭据).
  • 互联网接入 –服务器必须具有网络访问权限才能调用Google Custom Search API。

正在获取API凭据

要使用此服务器,您需要从Google获得以下内容:

  1. Google API密钥: 在Google Cloud Console中创建项目并启用 自定义搜索API。然后在 谷歌云控制台.
  2. 自定义搜索引擎ID(CX): 在中创建搜索引擎 谷歌自定义搜索引擎(CSE)控制面板。将其配置为搜索整个网络(或根据需要搜索特定网站)。创建后,记下搜索引擎ID(标记为“cx”的字母数字字符串)。

注: API密钥和搜索引擎ID都是 必需的 以便服务器正常运行。确保这些凭据的安全,不要将其提交给源代码管理或公开。

安装

克隆此存储库并安装软件包和依赖项:

git clone https://github.com/artryazanov/google-search-mcp.git
cd google-search-mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt

这将安装中列出的必要Python包 requirements.txt您还可以在可编辑模式下安装该软件包(例如。, pip install -e .)如果你打算修改代码。

用法

安装后,您可以使用提供的控制台脚本运行MCP服务器 google-search-mcp 或者通过执行该模块。在运行之前,请确保您的Google API凭据是作为命令行参数或通过环境变量提供的。

运行服务器(STDIO模式)

默认情况下,服务器在 标准输入输出 模式。在此模式下,服务器从标准输入读取请求,并将响应写入标准输出。这适用于与Claude Desktop或任何管理服务器进程的MCP兼容客户端等应用程序集成。

示例(使用API凭据在stdio模式下运行):

# Option 1: Provide API credentials via command-line arguments
google-search-mcp --api-key YOUR_GOOGLE_API_KEY --search-engine-id YOUR_CSE_ID

# Option 2: Set credentials as environment variables, then run without arguments
export GOOGLE_API_KEY="YOUR_GOOGLE_API_KEY"
export GOOGLE_SEARCH_ENGINE_ID="YOUR_CSE_ID"
google-search-mcp

在stdio模式下运行时,服务器将启动并等待通过stdin传入的搜索请求(通常来自AI客户端)。每个请求(根据MCP格式化)都将被处理,结果将以JSON形式返回到stdout。

运行服务器(SSE/HTTP模式)

要将服务器作为HTTP服务运行,请使用 --transport sse 选项。在SSE模式下,服务器将启动HTTP服务器,并为搜索查询提供流式端点。

示例(在端口8080上以SSE模式运行):

google-search-mcp --transport sse --host 0.0.0.0 --port 8080 \
           --api-key YOUR_GOOGLE_API_KEY --search-engine-id YOUR_CSE_ID

这将以SSE模式启动服务器,监听所有接口(0.0.0.0)在端口8080。在此模式下,您可以向服务器的资源端点发送HTTP GET请求以执行搜索。例如,您可以在浏览器或HTTP客户端中打开以下URL以测试查询:

http://localhost:8080/search/your%20query%20here

这将返回一个JSON响应,其中包含“此处查询”的搜索结果。SSE传输主要用于基于网络的部署或通过HTTP向客户端实时流式传输结果。

注: 在Docker或Kubernetes中运行时,请使用 --host 0.0.0.0 以绑定到所有接口并确保容器的端口被发布(例如。, -p 8080:8080).

命令行选项

  • --api-key, -k (字符串):自定义搜索API的Google API密钥。如果没有提供,服务器将查找 GOOGLE_API_KEY 环境变量。
  • --search-engine-id, -e (string):您的谷歌自定义搜索引擎ID(CX)。如果没有提供,服务器将使用 GOOGLE_SEARCH_ENGINE_ID 环境变量。
  • --transport, -t (string):服务器的传输协议。要么 stdio (默认)或 sse (使用服务器发送事件运行HTTP服务器)。
  • --host (string):在SSE模式下绑定HTTP服务器的主机地址(默认值: 127.0.0.1).
  • --port (int):SSE模式的端口号(默认值: 8080).
  • --enable-cache (标志):启用搜索结果的内存缓存。如果设置了此标志,服务器将在运行时缓存相同查询的结果。

跑 google-search-mcp --help 查看此使用信息。

可用的MCP工具

此服务器提供了一个LLM可以使用的MCP工具:

search_google

说明: 在谷歌上搜索给定的查询,并返回顶部结果。

参数:

  • query (string,必填)–搜索查询词。
  • limit (整数,可选)–要返回的最大结果数(默认值为10)。

退货: 具有以下结构的JSON对象:

  • query:搜索到的查询字符串。
  • results:结果对象列表。每个结果都有:
    • title:结果页的标题。
    • link:结果页面的URL。
    • snippet:页面中的简短文本片段(由谷歌提供)。
  • error: 可选的 -如果在搜索过程中发生错误,则显示错误消息字符串(此字段仅在出现错误时显示;成功时省略)。

这 search_google 该工具已在MCP服务器上注册,因此LLM客户端可以调用此函数来执行web搜索。在……里面 stdio 模式下,该函数通过MCP协议消息调用。在……里面 sse (HTTP)模式下,服务器公开一个GET端点 /search/{query} 返回相同的数据。

测试

此项目包括一个测试套件,以确保服务器正常工作。

  1. 安装测试依赖项: pip install -r requirements-dev.txt (包括pytest)。
  2. 运行所有测试: pytest

测试按照 tests/ 目录:

  • 单元测试 (in test_basic.py, test_cli.py等)使用模拟响应来测试功能,而不调用真正的Google API。
  • 集成测试 (标有 @pytest.mark.integration)将实际调用Google API。默认情况下会跳过这些,除非您设置为有效 GOOGLE_API_KEY 和 GOOGLE_SEARCH_ENGINE_ID 运行pytest之前的环境变量。

码头工人

为了方便和部署,您可以使用Docker构建和运行此服务器:

# Build the Docker image
docker build -t google-search-mcp .

# Run the server in SSE mode on port 8080
docker run --rm -p 8080:8080 \
  -e GOOGLE_API_KEY="YOUR_GOOGLE_API_KEY" \
  -e GOOGLE_SEARCH_ENGINE_ID="YOUR_CSE_ID" \
  google-search-mcp --transport sse --host 0.0.0.0 --port 8080

这将启动可在以下位置访问的容器化服务器 http://localhost:8080.API密钥和搜索引擎ID的环境变量被传递到容器中以向Google进行身份验证。

通过Docker在Junie(JetBrains)上使用MCP服务器

Junie(JetBrains IDE中的AI编码代理)通过stdio传输支持外部MCP服务器。 这意味着Junie可以将MCP服务器作为子进程启动,并通过stdin/stdout与之通信。 如果你将Google Search MCP服务器打包到Docker镜像中,Junie可以自动启动它。

1.构建Docker镜像

从项目根目录(Dockerfile所在的位置):

docker build -t google-search-mcp:local .

这将创建一个名为的本地Docker镜像 google-search-mcp:local.

2.配置Junie

打开“设置”>“工具”>“Junie”>“MCP设置”并添加新服务器。 Junie将这些设置存储在 ~/.junie/mcp/mcp.json (Linux/macOS)或 %USERPROFILE%\.junie\mcp\mcp.json (Windows)。

添加这样的条目:

{
  "mcpServers": {
    "google-search-mcp": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "GOOGLE_API_KEY=your-api-key",
        "-e", "GOOGLE_SEARCH_ENGINE_ID=your-cse-id",
        "google-search-mcp:local"
      ]
    }
  }
}

Windows注意事项: 如果在PATH中找不到Docker,请在“命令”字段中指定Docker.exe的完整路径,例如:

{
  "mcpServers": {
    "google-search-docker": {
      "command": "C:\\Program Files\\Docker\\Docker\\resources\\bin\\docker.exe"
    }
  }
}

说明:

  • command:“docker”-Junie将使用docker CLI启动服务器。
  • --rm-i-确保容器在退出后被移除,并保持与stdio的交互。
  • -e–将Google API凭证传递到容器中。
  • googlemcp:local&本地图像的标签。

许可证

本项目采用无许可证许可。请参阅 许可证 文件以获取详细信息。