使用说明
谷歌搜索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获得以下内容:
- Google API密钥: 在Google Cloud Console中创建项目并启用 自定义搜索API。然后在 谷歌云控制台.
- 自定义搜索引擎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} 返回相同的数据。
测试
此项目包括一个测试套件,以确保服务器正常工作。
- 安装测试依赖项:
pip install -r requirements-dev.txt(包括pytest)。 - 运行所有测试:
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&本地图像的标签。
许可证
本项目采用无许可证许可。请参阅 许可证 文件以获取详细信息。