loading…
Search for a command to run...
loading…
Google SERP search including web, images, news, maps, places, videos, and knowledge graph results via Ace Data Cloud API.
Google SERP search including web, images, news, maps, places, videos, and knowledge graph results via Ace Data Cloud API.
PyPI version PyPI downloads Python 3.10+ License: MIT MCP
A Model Context Protocol (MCP) server for Google search using SERP API through the AceDataCloud API.
Perform Google searches and get structured results directly from Claude, VS Code, or any MCP-compatible client.
| Tool | Description |
|---|---|
serp_google_search |
Search Google and get structured results using the SERP API. |
serp_google_images |
Search Google Images and get image results. |
serp_google_news |
Search Google News and get news article results. |
serp_google_videos |
Search Google Videos and get video results. |
serp_google_places |
Search Google for local places and businesses. |
serp_google_maps |
Search Google Maps for locations. |
serp_list_search_types |
List all available Google search types. |
serp_list_countries |
List commonly used country codes for Google search. |
serp_list_languages |
List commonly used language codes for Google search. |
serp_list_time_ranges |
List available time range filters for Google search. |
serp_get_usage_guide |
Get a comprehensive guide for using the Google SERP tools. |
AceDataCloud hosts a managed MCP server — no local installation required.
Endpoint: https://serp.mcp.acedata.cloud/mcp
All requests require a Bearer token. Use the API token from Step 1.
Connect directly on Claude.ai with OAuth — no API token needed:
https://serp.mcp.acedata.cloud/mcpAdd to your config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Add to your MCP config (.cursor/mcp.json or .windsurf/mcp.json):
{
"mcpServers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Add to your VS Code MCP config (.vscode/mcp.json):
{
"servers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Or install the Ace Data Cloud MCP extension for VS Code, which bundles all 15 MCP servers with one-click setup.
{
"mcpServers": {
"serp": {
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Claude Code supports MCP servers natively:
claude mcp add serp --transport http https://serp.mcp.acedata.cloud/mcp \
-h "Authorization: Bearer YOUR_API_TOKEN"
Or add to your project's .mcp.json:
{
"mcpServers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Add to Cline's MCP settings (.cline/mcp_settings.json):
{
"mcpServers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Add to your MCP configuration:
{
"mcpServers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Add to Roo Code MCP settings:
{
"mcpServers": {
"serp": {
"type": "streamable-http",
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
Add to .continue/config.yaml:
mcpServers:
- name: serp
type: streamable-http
url: https://serp.mcp.acedata.cloud/mcp
headers:
Authorization: "Bearer YOUR_API_TOKEN"
Add to Zed's settings (~/.config/zed/settings.json):
{
"language_models": {
"mcp_servers": {
"serp": {
"url": "https://serp.mcp.acedata.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_TOKEN"
}
}
}
}
}
# Health check (no auth required)
curl https://serp.mcp.acedata.cloud/health
# MCP initialize
curl -X POST https://serp.mcp.acedata.cloud/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
If you prefer to run the server on your own machine:
# Install from PyPI
pip install mcp-serp
# or
uvx mcp-serp
# Set your API token
export ACEDATACLOUD_API_TOKEN="your_token_here"
# Run (stdio mode for Claude Desktop / local clients)
mcp-serp
# Run (HTTP mode for remote access)
mcp-serp --transport http --port 8000
{
"mcpServers": {
"serp": {
"command": "uvx",
"args": ["mcp-serp"],
"env": {
"ACEDATACLOUD_API_TOKEN": "your_token_here"
}
}
}
}
docker pull ghcr.io/acedatacloud/mcp-serp:latest
docker run -p 8000:8000 ghcr.io/acedatacloud/mcp-serp:latest
Clients connect with their own Bearer token — the server extracts the token from each request's Authorization header.
| Tool | Description |
|---|---|
serp_google_search |
Flexible Google search with all options |
serp_google_images |
Search for images |
serp_google_news |
Search for news articles |
serp_google_videos |
Search for videos |
serp_google_places |
Search for local places/businesses |
serp_google_maps |
Search for map locations |
| Tool | Description |
|---|---|
serp_list_search_types |
List available search types |
serp_list_countries |
List country codes for localization |
serp_list_languages |
List language codes for localization |
serp_list_time_ranges |
List time range filter options |
serp_get_usage_guide |
Get comprehensive usage guide |
User: Search for information about artificial intelligence
Claude: I'll search for information about AI.
[Calls serp_google_search with query="artificial intelligence"]
User: What's the latest news about technology?
Claude: I'll search for recent tech news.
[Calls serp_google_news with query="technology", time_range="qdr:d"]
User: Find popular restaurants in Tokyo
Claude: I'll search for restaurants in Tokyo.
[Calls serp_google_places with query="popular restaurants Tokyo", country="jp"]
User: Find images of the Northern Lights
Claude: I'll search for aurora borealis images.
[Calls serp_google_images with query="Northern Lights aurora borealis"]
| Type | Description |
|---|---|
search |
Regular web search (default) |
images |
Image search |
news |
News articles |
maps |
Map results |
places |
Local businesses |
videos |
Video results |
| Code | Time Range |
|---|---|
qdr:h |
Past hour |
qdr:d |
Past day |
qdr:w |
Past week |
qdr:m |
Past month |
| Code | Country |
|---|---|
us |
United States |
uk |
United Kingdom |
cn |
China |
jp |
Japan |
de |
Germany |
fr |
France |
| Code | Language |
|---|---|
en |
English |
zh-cn |
Chinese (Simplified) |
ja |
Japanese |
es |
Spanish |
fr |
French |
de |
German |
| Variable | Description | Default |
|---|---|---|
ACEDATACLOUD_API_TOKEN |
API token from AceDataCloud | Required |
ACEDATACLOUD_API_BASE_URL |
API base URL | https://api.acedata.cloud |
ACEDATACLOUD_OAUTH_CLIENT_ID |
OAuth client ID (hosted mode) | — |
ACEDATACLOUD_PLATFORM_BASE_URL |
Platform base URL | https://platform.acedata.cloud |
SERP_REQUEST_TIMEOUT |
Request timeout in seconds | 30 |
LOG_LEVEL |
Logging level | INFO |
mcp-serp --help
Options:
--version Show version
--transport Transport mode: stdio (default) or http
--port Port for HTTP transport (default: 8000)
# Clone repository
git clone https://github.com/AceDataCloud/SerpMCP.git
cd SerpMCP
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # or `.venv\Scripts\activate` on Windows
# Install with dev dependencies
pip install -e ".[dev,test]"
# Run unit tests
pytest
# Run with coverage
pytest --cov=core --cov=tools
# Run integration tests (requires API token)
pytest tests/test_integration.py -m integration
# Format code
ruff format .
# Lint code
ruff check .
# Type check
mypy core tools
# Install build dependencies
pip install -e ".[release]"
# Build package
python -m build
# Upload to PyPI
twine upload dist/*
SerpMCP/
├── core/ # Core modules
│ ├── __init__.py
│ ├── client.py # HTTP client for SERP API
│ ├── config.py # Configuration management
│ ├── exceptions.py # Custom exceptions
│ └── server.py # MCP server initialization
├── tools/ # MCP tool definitions
│ ├── __init__.py
│ ├── search_tools.py # Search tools
│ └── info_tools.py # Information tools
├── prompts/ # MCP prompt templates
│ └── __init__.py
├── tests/ # Test suite
│ ├── conftest.py
│ ├── test_client.py
│ └── test_config.py
├── deploy/ # Deployment configs
│ └── production/
│ ├── deployment.yaml
│ ├── ingress.yaml
│ └── service.yaml
├── .env.example # Environment template
├── .gitignore
├── CHANGELOG.md
├── Dockerfile # Docker image for HTTP mode
├── docker-compose.yaml # Docker Compose config
├── LICENSE
├── main.py # Entry point
├── pyproject.toml # Project configuration
└── README.md
This server wraps the AceDataCloud Google SERP API:
Contributions are welcome! Please:
git checkout -b feature/amazing)git commit -m 'Add amazing feature')git push origin feature/amazing)MIT License - see LICENSE for details.
Made with love by AceDataCloud
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"acedatacloud-mcpserp": {
"command": "npx",
"args": []
}
}
}PRs, issues, code search, CI status
Database, auth and storage
Reference / test server with prompts, resources, and tools.
Secure file operations with configurable access controls.