Google Images MCP Server
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
A hosted Model Context Protocol (MCP) server that gives Claude, Cursor, Windsurf and any other MCP client one read-only Google Images tool. Run an image search with size, colour and type filters and get 100 results a call, each with the page it came from and the full-resolution file URL, as structured JSON, with nothing to host.
It reads the Google Images results page a signed-out visitor sees.
**1,000 free credits every month, no card required**, which is 100 Google Images calls at the 10-credit rate.
- Prompts and resources
Contents
- What you need
- Quick start
- Example prompts
- Tools
- Errors and failure paths
- Pricing, free tier and limits
- How it compares
- FAQ
- HasData links
- Development
- Contributing
- License
What you need
An MCP client and a HasData API key from the dashboard, free to create with no card, and the free tier covers about 100 calls a month at the 10-credit rate. This is a remote server, so the simplest path is a URL and an x-api-key header, with no container to run. A client that only speaks stdio reaches it through a thin launcher, published as @hasdata/google-images-mcp on npm and hasdata-google-images-mcp on PyPI, shown below.
Quick start
The server URL is the same for every client. We run it hands-on in Claude Code and Claude Desktop. The other blocks follow each client's own documented format for a remote server.
| Field | Value |
| :--- | :--- |
| URL | https://mcp.hasdata.com/mcp?apis=google_images |
| Transport | HTTP, streamable |
| Auth header | x-api-key: HASDATA_API_KEY |
Clients with OAuth support can add the same URL as a connector and sign in without putting a key in a config file.
Claude Code
Claude Desktop
Settings, then Connectors, then Add custom connector, then paste https://mcp.hasdata.com/mcp?apis=google_images and sign in.
For the config-file route, Claude Desktop loads only local (stdio) servers, so it reaches a remote server through a stdio launcher. The @hasdata/google-images-mcp package is that launcher, and it reads the key from the environment. Add this to claude_desktop_config.json:
For Python instead of Node, swap the launcher for the PyPI package, which uvx runs without a manual install:
Cursor
~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:
Windsurf
~/.codeium/windsurf/mcp_config.json. Windsurf calls the field serverUrl, not url:
VS Code
.vscode/mcp.json in the workspace:
Example prompts
- Find images of the Austin skyline and give me the ones over 1500 pixels wide.
- Which sites are ranking images for this product name?
- Get black and white photographs for this query, skipping clipart and line art.
- Search this query from the German Google and compare the sources with the US ones.
- Find images of this landmark and tell me which are stock photos.
- Pull the next page of results for this query.
One call answers each of these, because a page carries 100 results. Paging is only needed past that.
Tools
| Tool | What it returns |
| --- | --- |
| hasdata_google_images_images_getImageSearchResults | Each image with title, source page URL, direct image URL, thumbnail, dimensions, source domain, and position. 10 credits a call |
One tool, 10 credits per successful call.
Get image search results
hasdata_google_images_images_getImageSearchResults
One page of Google Images results.
| Parameter | Type | Required | Notes |
| :--- | :--- | :--- | :--- |
| q | string | yes | The search term |
| tbs | string | | Google's filter string for size, colour and type. See below |
| location | string | | Google canonical location for the search |
| uule | string | | The encoded location, if you already have one |
| domain | string | | Google domain, one of 195, defaults to google.com |
| gl | string | | Country code, one of 245 |
| hl | string | | Interface language, one of 159 |
| safe | string | | active or off |
| filter | number | | 1 keeps Google's similar and omitted result filters, 0 drops them |