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.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
HASDATA_API_KEY, x-api-keyค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
ที่อยู่นี้ต้องใส่ key ใน header ของคำขอ ซึ่งเมนูเพิ่ม connector ใส่ให้ไม่ได้ ใช้ 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": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add --transport http google-images 'https://mcp.hasdata.com/mcp?apis=google_images' --header 'x-api-key: ใส่ค่าของคุณ'claude mcp add google-images --env HASDATA_API_KEY='ใส่ค่าของคุณ' -- 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": "ใส่ค่าของคุณ"
}
}
}
}วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"google-images": {
"command": "npx",
"args": [
"-y",
"@hasdata/google-images-mcp"
],
"env": {
"HASDATA_API_KEY": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"google-images": {
"type": "http",
"url": "https://mcp.hasdata.com/mcp?apis=google_images",
"headers": {
"x-api-key": "ใส่ค่าของคุณ"
}
}
}
}วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"google-images": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@hasdata/google-images-mcp"
],
"env": {
"HASDATA_API_KEY": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ที่อยู่นี้ต้องใส่ key ใน header ของคำขอ ซึ่งเมนูเพิ่ม connector ใส่ให้ไม่ได้ ใช้ Claude Code, Cursor หรือ VS Code แทน
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
x-api-key ความลับ จำเป็น HTTP headerค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
ยังไม่ได้อ่านรายการเครื่องมือของตัวนี้ เราตรวจ endpoint ทีละชุดวนไป
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันโดเมน hasdata.com แล้ว (registry ตรวจความเป็นเจ้าของโดเมน)
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราอ่านรายการเครื่องมือตอนตรวจ endpoint
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: HASDATA_API_KEY, x-api-key
ได้ทั้งสองแบบ จะลงในเครื่องหรือต่อผ่านคลาวด์ก็ได้
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.3) เข้า registry 42 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, AlphaGrowth
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
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.
Free crypto data for AI agents: TVL, fees, funding, investors, yields, token unlocks, DAO treasuries
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ 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
ตัดมาแค่ช่วงต้น อ่านต่อใน repo