Skip to main content
Glama
meaigood001

Google Search MCP Server

by meaigood001

Google Search MCP Server

Python Version License Build Status

一个基于FastMCP框架的Google搜索服务器,提供Google自定义搜索功能。支持Streamable HTTP传输协议,具备企业级安全认证机制。

✨ 主要特性

  • 🔍 Google搜索集成: 使用Google Custom Search API提供强大的搜索功能

  • 🚀 Streamable HTTP: 支持实时通信的高性能HTTP传输协议

  • 🔐 企业级安全: 内置Bearer Token认证机制,支持生产环境安全部署

  • ⚙️ 灵活配置: 通过环境变量轻松配置服务器参数

  • 📦 现代化依赖管理: 支持UV和pip两种依赖管理方式

  • 🛠️ 开发友好: 完整的开发工具链,包括测试、格式化、类型检查

  • 📚 完整文档: 详细的服务器和客户端配置指南

🚀 快速开始

环境要求

  • Python 3.8+

  • Google API Key

  • Google Custom Search Engine ID

安装

使用UV(推荐)

# 安装UV
powershell -c "irm https://astral.sh/uv/install.sh | iex"

# 克隆项目
git clone https://github.com/yourusername/google-search-mcp.git
cd google-search-mcp

# 创建虚拟环境
uv venv
.venv\Scripts\activate

# 安装依赖
uv pip install -e .

使用pip

# 克隆项目
git clone https://github.com/yourusername/google-search-mcp.git
cd google-search-mcp

# 创建虚拟环境
python -m venv venv
venv\Scripts\activate

# 安装依赖
pip install -r requirements.txt

配置

  1. 复制环境变量模板文件:

copy .env.example .env
  1. 编辑.env文件,配置必要的环境变量:

# Google API配置
GOOGLE_API_KEY=your_google_api_key_here
GOOGLE_CSE_ID=your_custom_search_engine_id_here

# 服务器配置
HTTP_HOST=127.0.0.1
HTTP_PORT=9000

# 认证配置(生产环境建议启用)
ENABLE_AUTH=true
API_TOKEN=your_secure_api_token_here

运行服务器

# 启动服务器
python main.py

服务器将在 http://127.0.0.1:9000/mcp/ 启动。

🔧 配置选项

环境变量

变量名

描述

默认值

必需

GOOGLE_API_KEY

Google API密钥

-

GOOGLE_CSE_ID

Google自定义搜索引擎ID

-

HTTP_HOST

服务器主机地址

127.0.0.1

HTTP_PORT

服务器端口

9000

ENABLE_AUTH

是否启用认证

false

API_TOKEN

API认证令牌

-

认证启用时必需

认证配置

开发环境(无认证)

ENABLE_AUTH=false

生产环境(启用认证)

ENABLE_AUTH=true
API_TOKEN=your_secure_api_token_here

📖 使用方法

服务器API

服务器提供一个搜索工具:

search_google

执行Google搜索并返回格式化结果。

参数:

  • query (str): 搜索查询字符串

  • num_results (int, 可选): 返回结果数量,默认为5

  • auth_token (str, 可选): 认证令牌(启用认证时必需)

返回值:

{
  "success": true,
  "results": [
    {
      "title": "结果标题",
      "link": "结果链接",
      "snippet": "结果摘要"
    }
  ],
  "total_results": "1000000"
}

客户端连接

基本连接(无认证)

import asyncio
from fastmcp import Client

async def main():
    config = {
        "mcpServers": {
            "google-search": {
                "url": "http://127.0.0.1:9000/mcp/",
                "transport": "streamable-http"
            }
        }
    }
    
    client = Client(config)
    
    async with client:
        result = await client.call_tool(
            "search_google", 
            {"query": "Python编程", "num_results": 3}
        )
        print(result)

if __name__ == "__main__":
    asyncio.run(main())

带认证的连接

import asyncio
from fastmcp import Client

async def main():
    config = {
        "mcpServers": {
            "google-search": {
                "url": "http://127.0.0.1:9000/mcp/",
                "transport": "streamable-http",
                "headers": {
                    "Authorization": "Bearer your_api_token_here"
                }
            }
        }
    }
    
    client = Client(config)
    
    async with client:
        result = await client.call_tool(
            "search_google", 
            {"query": "人工智能", "num_results": 5}
        )
        print(result)

if __name__ == "__main__":
    asyncio.run(main())

运行示例

项目提供了完整的客户端示例:

# 运行客户端示例
python client_example.py

# 使用命令行工具
python run_client.py --help

🛠️ 开发

安装开发依赖

# 使用UV
uv pip install -e ".[dev]"

# 使用pip
pip install -e ".[dev]"

代码格式化

# 格式化代码
uv run black .
uv run isort .

类型检查

# 运行类型检查
uv run mypy .

测试

# 运行测试
uv run pytest

# 运行测试并生成覆盖率报告
uv run pytest --cov=google_search_mcp

代码检查

# 运行代码检查
uv run flake8 .

📁 项目结构

google-search-mcp/
├── main.py                 # 主服务器文件
├── client_example.py      # 客户端示例
├── run_client.py         # 命令行客户端工具
├── client_config.json    # 客户端配置文件
├── pyproject.toml        # 项目配置文件
├── requirements.txt      # pip依赖文件
├── uv.lock              # UV锁定文件
├── .env.example         # 环境变量模板
├── .env                 # 环境变量文件(git忽略)
├── README.md           # 项目说明文档
├── README_CLIENT.md    # 客户端配置指南
├── CLIENT_SETUP.md     # 客户端设置详细文档
└── UV_USAGE.md         # UV使用指南

🔍 详细文档

🤝 贡献

欢迎贡献代码!请遵循以下步骤:

  1. Fork本项目

  2. 创建功能分支 (git checkout -b feature/AmazingFeature)

  3. 提交更改 (git commit -m 'Add some AmazingFeature')

  4. 推送到分支 (git push origin feature/AmazingFeature)

  5. 创建Pull Request

📄 许可证

本项目采用MIT许可证 - 查看 LICENSE 文件了解详情。

🙏 致谢

📞 支持

如果您遇到问题或有建议,请:


注意: 使用本服务器需要有效的Google API密钥和Custom Search Engine ID。请确保遵守Google API的使用条款和服务限制。

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/meaigood001/google-search-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server