Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Google Images results with source pages, thumbnails and full-resolution URLs, as JSON.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
HASDATA_API_KEY, x-api-key标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
这个地址需要在请求的 header 中放入密钥,而添加连接器的菜单无法设置。请改用 Claude Code、Cursor 或 VS Code。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"google-images": {
"command": "npx",
"args": [
"-y",
"@hasdata/google-images-mcp"
],
"env": {
"HASDATA_API_KEY": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add --transport http google-images 'https://mcp.hasdata.com/mcp?apis=google_images' --header 'x-api-key: your-value'claude mcp add google-images --env HASDATA_API_KEY=your-value -- npx -y @hasdata/google-images-mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"google-images": {
"url": "https://mcp.hasdata.com/mcp?apis=google_images",
"headers": {
"x-api-key": "your-value"
}
}
}
}粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"google-images": {
"command": "npx",
"args": [
"-y",
"@hasdata/google-images-mcp"
],
"env": {
"HASDATA_API_KEY": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"google-images": {
"type": "http",
"url": "https://mcp.hasdata.com/mcp?apis=google_images",
"headers": {
"x-api-key": "your-value"
}
}
}
}粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"google-images": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@hasdata/google-images-mcp"
],
"env": {
"HASDATA_API_KEY": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个地址需要在请求的 header 中放入密钥,而添加连接器的菜单无法设置。请改用 Claude Code、Cursor 或 VS Code。
你的选择通过 Cookie 保存在这台设备上,无需账户。
x-api-key 机密 必填 HTTP header这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
我们还没有读取这个服务器的工具列表;我们会轮流检查各个端点。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过域名 hasdata.com 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
尚未检查;我们会轮流检查各个端点
尚未检查;我们会轮流检查各个端点
尚未检查;我们会在检查端点时读取工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:HASDATA_API_KEY, x-api-key
两种方式都可以:安装在你的电脑上,或者连接云端版本。
GitHub 仓库最后更新于–,最新版本(1.0.3)于43天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Symantec Cloud DLP AIops
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Governed Symantec Cloud DLP — 14 MCP tools, read-only with audit.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
A hosted Google Images 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.
https://mcp.hasdata.com/mcp?apis=google_images
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.
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 mcp add --transport http google-images "https://mcp.hasdata.com/mcp?apis=google_images" \
--header "x-api-key: HASDATA_API_KEY"
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:
{
"mcpServers": { "google-images": { "command": "npx", "args": ["-y", "@hasdata/google-images-mcp"], "env": { "HASDATA_API_KEY": "YOUR_KEY" } } } }
For Python instead of Node, swap the launcher for the PyPI package, which uvx runs without a manual install:
{
"mcpServers": { "google-images": { "command": "uvx", "args": ["hasdata-google-images-mcp"], "env": { "HASDATA_API_KEY": "YOUR_KEY" } } } }
Cursor
~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:
{
"mcpServers": { "google-images": { "url": "https://mcp.hasdata.com/mcp?apis=google_images", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }
Windsurf
~/.codeium/windsurf/mcp_config.json. Windsurf calls the field serverUrl, not url:
{
"mcpServers": { "google-images": { "serverUrl": "https://mcp.hasdata.com/mcp?apis=google_images", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }
VS Code
.vscode/mcp.json in the workspace:
{
"servers": { "google-images": { "type": "http", "url": "https://mcp.hasdata.com/mcp?apis=google_images", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }
One call answers each of these, because a page carries 100 results. Paging is only needed past that.
| 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.
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 | |
deviceType | string | desktop, mobile or tablet | |
ijn | number | Page number, where 0 is the first page |
Returns an imagesResults array. Each entry carries position, title, link to the page hosting the image, source as the site name, thumbnail on Google's CDN, original as the full-resolution file, and originalWidth and originalHeight.
{
"position": 1, "title": "The city skyline of Austin, Texas - Backyard Image", "link": "https://www.backyardimage.com/the-city-skyline-of-austin-texas/", "source": "Backyard Image", "thumbnail": "https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSOGtSVdgWtQtW1_x8-gi7iQckNHXBQ5FdKqEpCKXsbWg&s=10", "original": "https://www.backyardimage.com/wp-content/uploads/2025/01/2025-01-12-drone-Heap-0015-Pano-Edit.jpg", "originalWidth": 1200, "originalHeight": 615 }
The tbs parameter is Google's own filter string, and several filters combine with commas.
| Filter | Value |
|---|---|
| Large, medium or icon | isz:l, isz:m, isz:i |
| Larger than a size | isz:lt,islt:qsvga for 400×300, through islt:4mp for 2272×1704 |
| Exact size | isz:ex,iszw:1000,iszh:1000 |
| Full colour or black and white | ic:color, ic:gray |
| A specific colour | ic:specific,isc:red, and the other colour names |
| Type | itp:photo, itp:face, itp:clipart, itp:lineart, itp:animated |
The server exposes 5 resources, one per parameter whose accepted values are a fixed list. Reading one is cheaper than learning the vocabulary from a rejected call, and it costs no credits. Each URI is hasdata://google_images/ .
| Parameter | Values | What it selects |
|---|---|---|
domain | 195 | Google domain to use. Default is google.com. |
gl | 245 | The two-letter country code for the country you want to limit the search to. |
hl | 159 | The two-letter language code for the language you want to use for the search. |
safe | 2 | Adult Content Filtering option. |
deviceType | 3 | Specify the device type for the search. |
The list is served without an API key, so a client can read it before a user has signed up.
Plan for these rather than assuming a happy path.
`original` is a third-party URL and it can be dead, hotlink-blocked or slow. It points at the file on whichever site hosts it, so it carries none of Google's availability. Fetch it defensively, and fall back to thumbnail, which is served from Google's CDN.
`thumbnail` is a Google CDN link, not an embedded image. It is a real URL rather than a data URI, so displaying one still costs a request to gstatic.com.
A page carries 100 results, not 10. Cost is per call rather than per result, so one call covering 100 images is the cheapest shape here. Reach for ijn only past the first hundred.
`ijn` starts at zero. Passing 1 gets the second page, not the first.
Dimensions describe the original, not the thumbnail. originalWidth and originalHeight are the file behind original, so a size filter applied locally has to read those rather than measure what you displayed.
`tbs` values are Google's, and an unrecognised one is ignored rather than rejected. A filter that silently does nothing looks the same as a filter that found everything, so check that the results actually narrowed before trusting a tbs string you assembled by hand.
`domain`, `gl` and `hl` are three separate axes. The domain is which Google answers, the country code is where the search comes from, and the language is the interface. Changing one moves the results less than you expect.
Results that carry data also carry a requestMetadata.id worth quoting in support.
The Google Images tool costs 10 credits per successful call. Response size does not change the price, and a call returns 100 results, which makes this one of the cheaper tools in the catalogue per row returned.
The free tier is 1,000 credits every month with no card, which is 100 Google Images calls at the base rate. It renews with the billing cycle, so a low-volume agent runs on the free tier indefinitely.
Paid plans start at $59 a month for 200,000 credits, which is 20,000 calls. The unit price falls with volume, from $1.48 per 1,000 calls on the entry plan to $0.60 on Basic and $0.41 across the Growth tiers. Current figures live on the pricing page.
Your plan also sets concurrency. The free tier allows 5 requests at a time, Startup 5, Basic 15, and the Growth tiers run from 50 to 500. Retry on the 429 with a backoff in anything unattended, because an agent that sweeps a keyword list will reach the ceiling before you do.
A re
只显示了开头部分;其余内容请在仓库中阅读