{"id":47605303,"url":"https://github.com/acedatacloud/serpmcp","last_synced_at":"2026-06-06T12:00:25.478Z","repository":{"id":334373195,"uuid":"1141133927","full_name":"AceDataCloud/SerpMCP","owner":"AceDataCloud","description":"MCP server for Google SERP search, images, news, maps, and knowledge graph results.","archived":false,"fork":false,"pushed_at":"2026-04-05T15:07:34.000Z","size":306,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-05T15:26:07.458Z","etag":null,"topics":["developer-tools","google-search","mcp-server","model-context-protocol","serp-api","web-search"],"latest_commit_sha":null,"homepage":"https://platform.acedata.cloud","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AceDataCloud.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-24T10:06:30.000Z","updated_at":"2026-04-05T15:06:58.000Z","dependencies_parsed_at":"2026-04-02T03:05:23.319Z","dependency_job_id":null,"html_url":"https://github.com/AceDataCloud/SerpMCP","commit_stats":null,"previous_names":["acedatacloud/mcpserp","acedatacloud/serpmcp"],"tags_count":49,"template":false,"template_full_name":null,"purl":"pkg:github/AceDataCloud/SerpMCP","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AceDataCloud%2FSerpMCP","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AceDataCloud%2FSerpMCP/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AceDataCloud%2FSerpMCP/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AceDataCloud%2FSerpMCP/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AceDataCloud","download_url":"https://codeload.github.com/AceDataCloud/SerpMCP/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AceDataCloud%2FSerpMCP/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31562697,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["developer-tools","google-search","mcp-server","model-context-protocol","serp-api","web-search"],"created_at":"2026-04-01T19:10:58.313Z","updated_at":"2026-06-06T12:00:25.471Z","avatar_url":"https://github.com/AceDataCloud.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SerpMCP\n\n\u003c!-- mcp-name: io.github.AceDataCloud/mcp-serp --\u003e\n\n[![PyPI version](https://img.shields.io/pypi/v/mcp-serp.svg)](https://pypi.org/project/mcp-serp/)\n[![PyPI downloads](https://img.shields.io/pypi/dm/mcp-serp.svg)](https://pypi.org/project/mcp-serp/)\n[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![MCP](https://img.shields.io/badge/MCP-Compatible-green.svg)](https://modelcontextprotocol.io)\n\nA [Model Context Protocol (MCP)](https://modelcontextprotocol.io) server for Google search using [SERP API](https://platform.acedata.cloud/documents/44c86226-8eaa-49bf-85f3-1fae8d2e23f1) through the [AceDataCloud API](https://platform.acedata.cloud).\n\nPerform Google searches and get structured results directly from Claude, VS Code, or any MCP-compatible client.\n\n## Features\n\n- **Web Search** - Regular Google web search with structured results\n- **Image Search** - Search for images with URLs and thumbnails\n- **News Search** - Get latest news articles on any topic\n- **Video Search** - Find videos from YouTube and other sources\n- **Places Search** - Search for local businesses and places\n- **Maps Search** - Find locations and geographic information\n- **Knowledge Graph** - Get structured entity information\n- **Localization** - Support for multiple countries and languages\n- **Time Filtering** - Filter results by time range\n\n## Tool Reference\n\n| Tool | Description |\n|------|-------------|\n| `serp_google_search` | Search Google and get structured results using the SERP API. |\n| `serp_google_images` | Search Google Images and get image results. |\n| `serp_google_news` | Search Google News and get news article results. |\n| `serp_google_videos` | Search Google Videos and get video results. |\n| `serp_google_places` | Search Google for local places and businesses. |\n| `serp_google_maps` | Search Google Maps for locations. |\n| `serp_list_search_types` | List all available Google search types. |\n| `serp_list_countries` | List commonly used country codes for Google search. |\n| `serp_list_languages` | List commonly used language codes for Google search. |\n| `serp_list_time_ranges` | List available time range filters for Google search. |\n| `serp_get_usage_guide` | Get a comprehensive guide for using the Google SERP tools. |\n\n## Quick Start\n\n### 1. Get Your API Token\n\n1. Sign up at [AceDataCloud Platform](https://platform.acedata.cloud)\n2. Go to the [API documentation page](https://platform.acedata.cloud/documents/44c86226-8eaa-49bf-85f3-1fae8d2e23f1)\n3. Click **\"Acquire\"** to get your API token\n4. Copy the token for use below\n\n### 2. Use the Hosted Server (Recommended)\n\nAceDataCloud hosts a managed MCP server — **no local installation required**.\n\n**Endpoint:** `https://serp.mcp.acedata.cloud/mcp`\n\nAll requests require a Bearer token. Use the API token from Step 1.\n\n#### Claude.ai\n\nConnect directly on [Claude.ai](https://claude.ai) with OAuth — **no API token needed**:\n\n1. Go to Claude.ai **Settings → Integrations → Add More**\n2. Enter the server URL: `https://serp.mcp.acedata.cloud/mcp`\n3. Complete the OAuth login flow\n4. Start using the tools in your conversation\n\n#### Claude Desktop\n\nAdd to your config (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):\n\n```json\n{\n  \"mcpServers\": {\n    \"serp\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://serp.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n#### Cursor / Windsurf\n\nAdd to your MCP config (`.cursor/mcp.json` or `.windsurf/mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"serp\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://serp.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n#### VS Code (Copilot)\n\nAdd to your VS Code MCP config (`.vscode/mcp.json`):\n\n```json\n{\n  \"servers\": {\n    \"serp\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://serp.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\nOr install the [Ace Data Cloud MCP extension](https://marketplace.visualstudio.com/items?itemName=acedatacloud.acedatacloud-mcp) for VS Code, which registers the hosted MCP servers with one-click setup.\n\n#### JetBrains IDEs\n\n1. Go to **Settings → Tools → AI Assistant → Model Context Protocol (MCP)**\n2. Click **Add** → **HTTP**\n3. Paste:\n\n```json\n{\n  \"mcpServers\": {\n    \"serp\": {\n      \"url\": \"https://serp.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n\n#### Claude Code\n\nClaude Code supports MCP servers natively:\n\n```bash\nclaude mcp add serp --transport http https://serp.mcp.acedata.cloud/mcp \\\n  -h \"Authorization: Bearer YOUR_API_TOKEN\"\n```\n\nOr add to your project's `.mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"serp\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://serp.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n#### Cline\n\nAdd to Cline's MCP settings (`.cline/mcp_settings.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"serp\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://serp.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n#### Amazon Q Developer\n\nAdd to your MCP configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"serp\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://serp.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n#### Roo Code\n\nAdd to Roo Code MCP settings:\n\n```json\n{\n  \"mcpServers\": {\n    \"serp\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://serp.mcp.acedata.cloud/mcp\",\n      \"headers\": {\n        \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n      }\n    }\n  }\n}\n```\n\n#### Continue.dev\n\nAdd to `.continue/config.yaml`:\n\n```yaml\nmcpServers:\n  - name: serp\n    type: streamable-http\n    url: https://serp.mcp.acedata.cloud/mcp\n    headers:\n      Authorization: \"Bearer YOUR_API_TOKEN\"\n```\n\n#### Zed\n\nAdd to Zed's settings (`~/.config/zed/settings.json`):\n\n```json\n{\n  \"language_models\": {\n    \"mcp_servers\": {\n      \"serp\": {\n        \"url\": \"https://serp.mcp.acedata.cloud/mcp\",\n        \"headers\": {\n          \"Authorization\": \"Bearer YOUR_API_TOKEN\"\n        }\n      }\n    }\n  }\n}\n```\n\n#### cURL Test\n\n```bash\n# Health check (no auth required)\ncurl https://serp.mcp.acedata.cloud/health\n\n# MCP initialize\ncurl -X POST https://serp.mcp.acedata.cloud/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Accept: application/json\" \\\n  -H \"Authorization: Bearer YOUR_API_TOKEN\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-03-26\",\"capabilities\":{},\"clientInfo\":{\"name\":\"test\",\"version\":\"1.0\"}}}'\n```\n\n### 3. Or Run Locally (Alternative)\n\nIf you prefer to run the server on your own machine:\n\n```bash\n# Install from PyPI\npip install mcp-serp\n# or\nuvx mcp-serp\n\n# Set your API token\nexport ACEDATACLOUD_API_TOKEN=\"your_token_here\"\n\n# Run (stdio mode for Claude Desktop / local clients)\nmcp-serp\n\n# Run (HTTP mode for remote access)\nmcp-serp --transport http --port 8000\n```\n\n#### Claude Desktop (Local)\n\n```json\n{\n  \"mcpServers\": {\n    \"serp\": {\n      \"command\": \"uvx\",\n      \"args\": [\"mcp-serp\"],\n      \"env\": {\n        \"ACEDATACLOUD_API_TOKEN\": \"your_token_here\"\n      }\n    }\n  }\n}\n```\n\n#### Docker (Self-Hosting)\n\n```bash\ndocker pull ghcr.io/acedatacloud/mcp-serp:latest\ndocker run -p 8000:8000 ghcr.io/acedatacloud/mcp-serp:latest\n```\n\nClients connect with their own Bearer token — the server extracts the token from each request's `Authorization` header.\n\n## Available Tools\n\n### Search Tools\n\n| Tool                 | Description                             |\n| -------------------- | --------------------------------------- |\n| `serp_google_search` | Flexible Google search with all options |\n| `serp_google_images` | Search for images                       |\n| `serp_google_news`   | Search for news articles                |\n| `serp_google_videos` | Search for videos                       |\n| `serp_google_places` | Search for local places/businesses      |\n| `serp_google_maps`   | Search for map locations                |\n\n### Information Tools\n\n| Tool                     | Description                          |\n| ------------------------ | ------------------------------------ |\n| `serp_list_search_types` | List available search types          |\n| `serp_list_countries`    | List country codes for localization  |\n| `serp_list_languages`    | List language codes for localization |\n| `serp_list_time_ranges`  | List time range filter options       |\n| `serp_get_usage_guide`   | Get comprehensive usage guide        |\n\n## Usage Examples\n\n### Basic Web Search\n\n```\nUser: Search for information about artificial intelligence\n\nClaude: I'll search for information about AI.\n[Calls serp_google_search with query=\"artificial intelligence\"]\n```\n\n### News Search with Time Filter\n\n```\nUser: What's the latest news about technology?\n\nClaude: I'll search for recent tech news.\n[Calls serp_google_news with query=\"technology\", time_range=\"qdr:d\"]\n```\n\n### Localized Search\n\n```\nUser: Find popular restaurants in Tokyo\n\nClaude: I'll search for restaurants in Tokyo.\n[Calls serp_google_places with query=\"popular restaurants Tokyo\", country=\"jp\"]\n```\n\n### Image Search\n\n```\nUser: Find images of the Northern Lights\n\nClaude: I'll search for aurora borealis images.\n[Calls serp_google_images with query=\"Northern Lights aurora borealis\"]\n```\n\n## Search Parameters\n\n### Search Types\n\n| Type     | Description                  |\n| -------- | ---------------------------- |\n| `search` | Regular web search (default) |\n| `images` | Image search                 |\n| `news`   | News articles                |\n| `maps`   | Map results                  |\n| `places` | Local businesses             |\n| `videos` | Video results                |\n\n### Time Range Filters\n\n| Code    | Time Range |\n| ------- | ---------- |\n| `qdr:h` | Past hour  |\n| `qdr:d` | Past day   |\n| `qdr:w` | Past week  |\n| `qdr:m` | Past month |\n\n### Common Country Codes\n\n| Code | Country        |\n| ---- | -------------- |\n| `us` | United States  |\n| `uk` | United Kingdom |\n| `cn` | China          |\n| `jp` | Japan          |\n| `de` | Germany        |\n| `fr` | France         |\n\n### Common Language Codes\n\n| Code    | Language             |\n| ------- | -------------------- |\n| `en`    | English              |\n| `zh-cn` | Chinese (Simplified) |\n| `ja`    | Japanese             |\n| `es`    | Spanish              |\n| `fr`    | French               |\n| `de`    | German               |\n\n## Response Structure\n\n### Regular Search Results\n\n- **knowledge_graph**: Entity information (company, person, etc.)\n- **answer_box**: Direct answers\n- **organic**: Regular search results with title, link, snippet\n- **people_also_ask**: Related questions\n- **related_searches**: Related queries\n\n### Image Search Results\n\n- **images**: Image results with URLs and thumbnails\n\n### News Search Results\n\n- **news**: News articles with source and date\n\n## Configuration\n\n### Environment Variables\n\n| Variable                    | Description                 | Default                     |\n| --------------------------- | --------------------------- | --------------------------- |\n| `ACEDATACLOUD_API_TOKEN`    | API token from AceDataCloud | **Required**                |\n| `ACEDATACLOUD_API_BASE_URL` | API base URL                | `https://api.acedata.cloud` |\n| `ACEDATACLOUD_OAUTH_CLIENT_ID`  | OAuth client ID (hosted mode) | —                           |\n| `ACEDATACLOUD_PLATFORM_BASE_URL` | Platform base URL            | `https://platform.acedata.cloud` |\n| `SERP_REQUEST_TIMEOUT`      | Request timeout in seconds  | `30`                        |\n| `LOG_LEVEL`                 | Logging level               | `INFO`                      |\n\n### Command Line Options\n\n```bash\nmcp-serp --help\n\nOptions:\n  --version          Show version\n  --transport        Transport mode: stdio (default) or http\n  --port             Port for HTTP transport (default: 8000)\n```\n\n## Development\n\n### Setup Development Environment\n\n```bash\n# Clone repository\ngit clone https://github.com/AceDataCloud/SerpMCP.git\ncd SerpMCP\n\n# Create virtual environment\npython -m venv .venv\nsource .venv/bin/activate  # or `.venv\\Scripts\\activate` on Windows\n\n# Install with dev dependencies\npip install -e \".[dev,test]\"\n```\n\n### Run Tests\n\n```bash\n# Run unit tests\npytest\n\n# Run with coverage\npytest --cov=core --cov=tools\n\n# Run integration tests (requires API token)\npytest tests/test_integration.py -m integration\n```\n\n### Code Quality\n\n```bash\n# Format code\nruff format .\n\n# Lint code\nruff check .\n\n# Type check\nmypy core tools\n```\n\n### Build \u0026 Publish\n\n```bash\n# Install build dependencies\npip install -e \".[release]\"\n\n# Build package\npython -m build\n\n# Upload to PyPI\ntwine upload dist/*\n```\n\n## Project Structure\n\n```\nSerpMCP/\n├── core/                   # Core modules\n│   ├── __init__.py\n│   ├── client.py          # HTTP client for SERP API\n│   ├── config.py          # Configuration management\n│   ├── exceptions.py      # Custom exceptions\n│   └── server.py          # MCP server initialization\n├── tools/                  # MCP tool definitions\n│   ├── __init__.py\n│   ├── search_tools.py    # Search tools\n│   └── info_tools.py      # Information tools\n├── prompts/                # MCP prompt templates\n│   └── __init__.py\n├── tests/                  # Test suite\n│   ├── conftest.py\n│   ├── test_client.py\n│   └── test_config.py\n├── deploy/                 # Deployment configs\n│   └── production/\n│       ├── deployment.yaml\n│       ├── ingress.yaml\n│       └── service.yaml\n├── .env.example           # Environment template\n├── .gitignore\n├── CHANGELOG.md\n├── Dockerfile             # Docker image for HTTP mode\n├── docker-compose.yaml    # Docker Compose config\n├── LICENSE\n├── main.py                # Entry point\n├── pyproject.toml         # Project configuration\n└── README.md\n```\n\n## API Reference\n\nThis server wraps the [AceDataCloud Google SERP API](https://platform.acedata.cloud/documents/44c86226-8eaa-49bf-85f3-1fae8d2e23f1):\n\n- [Google SERP API Documentation](https://platform.acedata.cloud/documents/44c86226-8eaa-49bf-85f3-1fae8d2e23f1)\n\n## Contributing\n\nContributions are welcome! Please:\n\n1. Fork the repository\n2. Create a feature branch (`git checkout -b feature/amazing`)\n3. Commit your changes (`git commit -m 'Add amazing feature'`)\n4. Push to the branch (`git push origin feature/amazing`)\n5. Open a Pull Request\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n## Links\n\n- [AceDataCloud Platform](https://platform.acedata.cloud)\n- [Google SERP API](https://platform.acedata.cloud/documents/44c86226-8eaa-49bf-85f3-1fae8d2e23f1)\n- [Model Context Protocol](https://modelcontextprotocol.io)\n- [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk)\n\n---\n\nMade with love by [AceDataCloud](https://platform.acedata.cloud)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facedatacloud%2Fserpmcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Facedatacloud%2Fserpmcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Facedatacloud%2Fserpmcp/lists"}