Skip to main content
Glama
HasData

Google Maps MCP Server

Google Maps MCP Server

Claude, Cursor, Windsurf 및 기타 모든 MCP 클라이언트에 6개의 읽기 전용 Google Maps 도구를 제공하는 호스팅형 Model Context Protocol(MCP) 서버입니다. 장소를 검색하고, 장소 전체 정보를 읽고, 리, 사진, 게시물을 가져오며, 특정 리어의 활동 기록을 살펴볼 수 있습니다. 모든 데이터는 구조화된 JSON으로 제공되며, Google Cloud 프로젝트나 결제 활성화가 필요 없습니다.

https://mcp.hasdata.com/api/mcp?apis=google_maps

Glama score tool contract MCP Tools npm PyPI License

목차

Related MCP server: MCP Google Maps

필요한 것

커스텀 헤더와 함께 streamable HTTP를 지원하는 MCP 클라이언트가 필합니다. 대시보드에서 HasData API 키를 만들 수 있으며, 카드 없이 무료로 생성할 수 있고, 평기판은 5크레딧 요율로 약 200회 호출을 포합니다. 그 외에는 아무것도 필하지 않습니다. 이 서버는 원격 서버이므로 가장 간단한 방법은 URL과 헤더 하나뿐이며, 실할 컨테이너도 없고 어디에도 Google Cloud 프로젝트나 API 키가 필하지 않습니다. stdio 전용 클라이언트는 대신 @hasdata/google-maps-mcp( npm) 또는 hasdata-google-maps-mcp( PyPI) 런처를 사용할 수 있습니다.

빠른 시작

URL

https://mcp.hasdata.com/api/mcp?apis=google_maps

전송

HTTP, streamable

인증 헤더

x-api-key: HASDATA_API_KEY

서버 URL은 모든 클라이언트에서 동일합니다. 저희는 Claude Code와 Claude Desktop에서 직접 실하고 있습니다. 다른 블록들은 각 클라이언트가 문서화한 원격 서버 형식을 따릅니다.

OAuth를 지원하는 클라이언트는 동일한 URL을 커넥터로 추가하고 설정 파일에 키를 넣지 않고 로그인할 수 있습니다.

claude mcp add --transport http google-maps "https://mcp.hasdata.com/api/mcp?apis=google_maps" \
  --header "x-api-key: HASDATA_API_KEY"

Claude Desktop은 설정 파일에서 로컬(stdio) 서버만 불러오므로 stdio 런처를 통해 원격 서버에 접속합니다. @hasdata/google-maps-mcp 패키지가 바로 그 런처이며, 환결 변수에서 키를 읽습니다.

claude_desktop_config.json:

{
  "mcpServers": {
    "google-maps": {
      "command": "npx",
      "args": ["-y", "@hasdata/google-maps-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Node 대신 Python을 사용하시나요? 런처를 PyPI 패키지로 바꾸세요. uvx는 수동 설치 없이 실행할 수 있습니다.

{
  "mcpServers": {
    "google-maps": {
      "command": "uvx",
      "args": ["hasdata-google-maps-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

OAuth를 지원하는 클라이언트는 대신 URL을 커스텀 커넥터로 추가하고 량처를 건너 수 있습니다.

.cursor/mcp.json:

{
  "mcpServers": {
    "google-maps": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_maps",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "google-maps": {
      "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=google_maps",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
{
  "mcpServers": {
    "google-maps": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_maps",
      "type": "streamableHttp",
      "headers": { "x-api-key": "HASDATA_API_KEY" },
      "disabled": false
    }
  }
}

.vscode/mcp.json:

{
  "servers": {
    "google-maps": {
      "type": "http",
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_maps",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

~/.gemini/settings.json:

{
  "mcpServers": {
    "google-maps": {
      "httpUrl": "https://mcp.hasdata.com/api/mcp?apis=google_maps",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

예시 프롬프트

각 항목은 횟가 명시되지 않았는 한 한 번의 도구 호출입니다.

시애틀 다운타운 근처의 커피를 Google Maps에서 검색하고 평점, 리뷰 수, 웹사이트와 함께 상위 10곳을 알려줘.

한 번의 호출, 5크레딧. 검색 결과에는 placeId와 dataId가 이미 포함되어 있어 아래의 후속 호출에는 조회 단계가 필하지 않습니다.

ChIJAb0KE0RrkFQRuI4X0By5Mcw의 전체 세부 정보를 가져와 줘: 영업시간, 서비스 옵션, 가격대, 메뉴 링크.

한 번의 호출, 5크레딧.

그 장소의 최신 리를 최신순으로 읽고 가장 많 이 언급되는 주제가 무었인지 알려줘.

한 번의 호출, 5크레딧. 응답에는 Google이 직접 분류한 주제 클러스터와 각각의 언급 횟가 포함되며, 순위도 데이터에 들어 있습니다.

상위 리의 작성을 기준으로 그 사람이 리한 다른 모든 장소와 남긴 평점을 나열해 줘.

한 번의 호출, 5크레딧. 리에는 작설의 contributorId가 포함되며, 이것이 바로 기여자 도구가 입려으로 받는 값입니다.

그 장소의 사진 피드와 업체의 최근 게시물을 가져와 줘.

두 번의 호출. 사진은 5크레딧, 게시물은 10크레딧입니다.

이런 연쇄 호출을 저렴하게 만드는 두 가지가 있습니다. 검색은 모든 결과에 placeId와 dataId를 함께 돌려주며, 상세·리뷰·사진·게시물 호출에는 별도의 resolve 단계가 필요 없습니다. 또한 리뷰에는 작성자의 contributorId가 포함되어 있어 "누가 이 리뷰를 남겼는지"를 한 번의 호출로 그 사람의 전체 기록으로 건너뛸 수 있습니다.

도구

6개의 도구이며 모두 읽기 전용입니다. 아래 샘플은 실제 호출에서 일부를 발췌한 것으로, 숫자는 장소의 리뷰가 쌓임에 따라 달라집니다. 형태를 참고하세요. 각 도구 이름은 해당 엔드포인트 문서로 연결됩니다.

샘플은 전체 응답이 아니라 페이로드입니다. tools/call 결과에는 텍스트 블록 하나가 포함되며, 그 텍스트 자체가 url, status, text, json을 담은 JSON이고, 스크레이핑된 데이터는 json 아래에 있습니다. 원시 JSON-RPC 응답에서는 경로가 result.content[0].text이며, 이를 파싱한 다음 .json을 사용합니다. 채팅 클라이언트는 이 과정을 자동으로 풀어 주지만, 엔드포인트에 직접 연결하는 코드는 직접 처리해야 합니다.

4개의 도구는 placeId 또는 dataId 중 하나로 장소를 지정할 수 있습니다. 검색은 모든 결과에 둘 다 반환합니다. 일반적인 흐름은 검색 한 번 후, 원하는 id를 재사용하는 상세·리·사진·게시물 호출을 이어가는 것입니다.

Google Maps 검색

hasdata_google_maps_search_performMapSearch

쿼리에 대한 장소 목록을 Google Maps가 정렬한 순서대로 반환합니다.

Parameter

Type

Required

Notes

q

string

예

자유 형식 텍스트 쿼리(예: coffee 또는 plumber)

ll

string

지도 중심과 줌을 @lat,lng,zoomz 형식으로 지정합니다(예: @47.6062,-122.3321,14z). 이렇게 하여 검색 대상을 특정 장소에 고정할 수 있습니다

gl / hl

string

두 자리 국가 코드와 언어 코드

domain

string

쿼리할 Google 도메인(예: google.com)

start

number

페이징을 위한 결과 오프셋, 20 단위. ll도 함께 설정되어야 합니다

위치는 쿼리가 아니라 ll에 지정합니다. 지도 중심과 줌 수준을 여기에 넣으세요. "coffee"만으로는 Google이 사용자의 위치를 임의로 정해 결과를 반환하기 때문입니다. 줌 수준 숫자는 결과를 가져오는 영역을 넓히거나 좁힙니다.

{
  "localResults": [
    {
      "position": 1,
      "title": "Howdy Y'all Coffee (Central Library)",
      "placeId": "ChIJAb0KE0RrkFQRuI4X0By5Mcw",
      "dataId": "0x54906b44130abd01:0xcc31b91cd0178eb8",
      "address": "1000 4th Ave Fl 3, Seattle, WA 98104",
      "rating": 4.9,
      "reviews": 117,
      "type": "Coffee shop",
      "website": "https://howdyyallcoffee.com/",
      "workingHours": {
        "timezone": "America/Los_Angeles",
        "days": [ { "day": "Friday", "time": "10 AM–4 PM" } ]
      }
    }
  ]
}

장소 상세 정보 가져오기

hasdata_google_maps_place_getPlaceDetails

placeId로 장소 하나의 전체 정보를 반환합니다.

Parameter

Type

Required

Notes

placeId

string

예

검색 결과의 placeId

hl

string

언어 코드

domain

string

Google 도메인

placeResults 객체 하나를 반환하며, 검색 결과가 담고 있는 필드와 동일한 필드를 가지면서 images 배열이 추가됩니다. 필요 없는 검색을 실행하지 않고 특정 장소의 전체 기록을 가져오는 방법입니다.

장소 리뷰 가져오기

hasdata_google_maps_reviews_getMapReviews

장소의 리뷰 피드를 페이지 단위로 반환합니다.

Parameter

Type

Required

Notes

placeId

string

장소. placeId 또는 dataId 중 하나가 있어야 합니다

dataId

string

대신 dataId로 장소를 지정합니다

sortBy

string

기본값은 mostRelevant이고, newestFirst, ratingHigh, ratingLow도 지원합니다

topicId

string

topics 배열의 id를 사용해 특정 주제로 필터링합니다

hl

string

언어 코드

nextPageToken

string

이전 응답의 pagination.nextPageToken

placeInfo, topics 배열, reviews 배열, pagination을 반환합니다. 각 리에는 revieId, rating, snippet, date, isoDate, link, images, user 객체가 포함되며, 업체가 답변을 단 경우 response도 포함됩니다.

topics는 Google이 리에서 언급된 내용을 직접 분류한 것으로, 각 항목에는 keyword와 mentions 횟가 있습니다. 모든 리를 읽을 필없이 주제별 횟가 미리 계산되어 있습니다. 특정 주제를 언급한 리만 읽으려면 해당 주제의 id를 topicId로 다시 넘겨 주세요.

각 리의 user에는 contributorId가 포함됩니다. 이것이 기여자 도구가 입려으로 받는 값이므로 "누가 이 리를 썼는지"는 한 번의 호출로 "그들이 모든 것"에 도달할 수 있습니다.

{
  "placeInfo": { "title": "Howdy Y'all Coffee (Central Library)", "rating": 4.9, "reviews": 117 },
  "topics": [
    { "keyword": "earl grey matcha", "mentions": 26, "id": "bew1w_KAk5U" },
    { "keyword": "friendly baristas", "mentions": 17, "id": "FOw-91tYieQ" }
  ],
  "reviews": [
    {
      "reviewId": "…",
      "rating": 5,
      "snippet": "…",
      "isoDate": "2026-07-06T19:49:00.657Z",
      "user": { "name": "Angela Li", "contributorId": "106033685843245983748" },
      "response": { "isoDate": "2026-07-07T04:44:34.000Z", "snippet": "Thank you!! 🥺☺️" }
    }
  ],
  "pagination": { "nextPageToken": "…" }
}

기여자의 리 보기

hasdata_google_maps_contributor_reviews_getMapReviews

한 사람이 평점을 남긴 모든 장소에 걸쳐 작성한 모든 리를 반환합니다.

Parameter

Type

Required

Notes

contributorId

string

예

리의 user 객체에 있는 contributorId

num

number

반환할 리 수

gl / hl

string

국가 및 언어 코드

nextPageToken

string

이전 응답의 토큐

contributor 객체를 반환합니다. name, level, points 및 contributions 세부 내역을 포함하고, 각 항목이 자체 placeInfo를 갖는 reviews 배열도 포함하므로 두 번째 조회 없이 각 리뷰가 어떤 장소에 대한 것인지 알 수 있습니다. 이 도구는 리뷰 피드만으로는 할 수 없는 리뷰어 신뢰도 및 리뷰 네트워크 작업을 위한 기반입니다. 한 사람의 공개 리뷰 기록을 읽으므로, 결과를 Google의 약관 및 적용되는 법률에 부합하게 사용하십시오.

장소 사진 가져오기

hasdata_google_maps_photos_getMapPhotos

장소의 사진 피드입니다.

Parameter

Type

Required

Notes

placeId

string

장소입니다. placeId 또는 dataId 중 하나는 있어야 합니다.

dataId

string

대신 dataId로 장소를 지정합니다.

categoryId

string

categories 배열의 id를 사용하여 하나의 카테고리로 필터링합니다.

hl

string

언어 코드

nextPageToken

string

이전 응답의 토큰

categories 배열(All, Latest, Videos, Menu 및 장소별 항목), 각 항목에 image 및 thumbnail URL이 있는 photos 배열, 그리고 pagination을 반환합니다.

장소 게시물 가져오기

hasdata_google_maps_posts_getMapPosts

업체가 Google 등록정보에 직접 게시한 게시물과 업데이트입니다.

Parameter

Type

Required

Notes

placeId

string

장소입니다. placeId 또는 dataId 중 하나는 있어야 합니다.

dataId

string

대신 dataId로 장소를 지정합니다.

hl

string

언어 코드

nextPageToken

string

이전 응답의 토큰

posts 배열을 반환합니다.

대부분의 장소는 아무것도 게시하지 않으므로 빈 posts 배열이 일반적입니다. 게시물이 있다고 가정하기 전에 배열 길이를 확인하십시오.

오류 및 실패 경로

클라이언트는 도구 호출에서 HTTP 오류 코드를 거의 볼 수 없습니다. MCP 계층이 200으로 응답하고 실패를 결과 안에 넣으며, isError를 true로 설정하고 사유를 텍스트로 포함합니다. 에이전트는 상태 줄을 기대할 만한 자리에 메시지를 읽습니다.

잘못된 키는 연결 실패가 아니라 도구 출력으로 드러납니다. 도구 나열은 비어 있지 않은 키를 모두 수락하며, 클라이언트는 핸드셰이크를 완료하고 초록색 상태를 표시합니다. 그러면 첫 번째 도구 호출이 isError: true 및 HasData API error: 401 Unauthorized 텍스트와 함께 돌아옵니다. 그 문자열을 주시하십시오. 그 이전에는 어떤 단계에서도 문제를 보고하지 않기 때문입니다.

유일한 실제 HTTP 오류는 키 누락입니다. 인증은 모든 도구보다 먼저 실행되며, 연결 자체가 401로 실패합니다.

스키마를 위반하는 인수는 요청이 되기 전에 거부됩니다. q 없이 수행한 검색은 isError: true와 필드 이름을 명시하는 MCP error -32602: Input validation error 텍스트를 반환합니다. 아무것도 가져오지 않으며 비용도 청구되지 않습니다.

리뷰, 사진 또는 게시물 호출에는 장소가 필요합니다. 이 세 호출은 placeId 또는 dataId를 받으며, 둘 다 보내지 않으면 두 필드를 모두 명시하는 422가 반환됩니다. 이 요구 사항은 조건부이므로 스키마가 단순 필수 목록으로 표현할 수 없기 때문입니다. 하나를 전달하십시오.

확인되지 않는 장소 ID는 빈 데이터가 아니라 명확한 오류입니다. isError: true와 함께 HasData API error: 400 Bad Request를 반환하고, requestMetadata.status는 error로 설정됩니다. 배열 길이보다는 플래그를 검사하십시오.

빈 posts는 실제 데이터입니다. 대부분의 등록정보에는 게시물이 없으므로 호출은 status ok 및 빈 배열과 함께 성공합니다. 장소에 게시된 것이 없을 뿐입니다.

데이터를 포함하는 결과에는 지원 요청에 인용할 만한 requestMetadata.id와, 해당 정확한 호출의 저장된 산출물에 대한 html 및 json 링크도 포함됩니다.

가격, 무료 티어 및 제한

검색, 장소 상세, 리뷰, 기여자 리뷰 및 사진은 성공적인 호출당 5크레딧이 듭니다. 게시물은 10크레딧이 듭니다. 응답 크기는 가격을 바꾸지 않습니다. 리뷰 한 가득 찬 페이지나 한 개만 있는 페이지나 같은 비용입니다.

무료 트라이얼은 카드 없이 30일 동안 1,000크레딧이며, 5크레딧 요율로 200번 호출할 수 있음을 뜻합니다. 그 후에도 활성 계정은 잔액이 100 미만으로 떨어질 때마다 매일 100크레딧을 충전받으므로, 낮은 볼륨의 에이전트는 무료 티어에서 무기한 실행됩니다.

유료 요금제는 월 $49부터 시작하며 200,000크레딧을 제공합니다. 이는 5크레딧 기준 40,000회 호출입니다. 크레딧당 가격은 볼륨에 따라 낮아지며, 현재 수치는 가격 페이지에 있습니다.

요금제는 동시성도 결정합니다. 무료 트라이얼은 한 번에 1개의 요청을 허용하고, Startup은 15, Business는 30, Growth는 50이며, 대용량 요금제는 200에서 1,500까지입니다. 동시성만이 유일한 제한입니다. 별도의 분당 요청 수 상한은 없으며, 트라이얼이 다른 방식으로 느려지거나 제한되지도 않습니다. 무인 실행에서는 오버플로 상황을 방어적으로 처리하십시오. 장소들에 걸쳐 확장하는 에이전트는 당신보다 먼저 상한에 도달할 것이기 때문입니다.

페이지네이션은 호출할 때마다 비용이 듭니다. 리뷰는 페이지당 약 10개씩 오므로, 100개의 리뷰는 대략 10번의 호출과 50크레딧입니다. 사진은 페이지당 20개씩 옵니다. 트라이얼 크레딧은 체감하기 전까지 오래 지속됩니다.

도구 선택

?apis=google_maps는 정확히 이 여섯 가지 도구를 노출합니다. 이 매개변수는 목록을 받으며, ?apis=google_maps,google_serp는 지도 도구와 함께 Google 검색을 추가합니다. 매개변수를 생략하면 HasData가 노출하는 모든 것, 현재 57개의 도구를 얻을 수 있습니다.

좁은 목록이 보통 더 나은 기본값입니다. 여섯 개의 도구 중에서 선택하는 모델은 57개 중에서 선택하는 모델보다 더 자주 올바르게 고릅니다. 또한 도구 설명 자체가 매 턴마다 컨텍스트를 소비합니다.

비교

거의 모든 다른 Google Maps MCP 서버는 공식 Google Maps Platform을 래핑하며, 그것이 실제로 저울질해야 할 선택지입니다.

해당 서버들은 사용자 자신의 Google Cloud 자격 증명으로 Places, Routes 및 Geocoding API를 호출합니다. 실행하려면 Google Cloud 프로젝트를 생성하고, 카드로 결제를 활성화하고, 각 API를 켜고, 키와 그 할당량을 관리해야 합니다. 라우팅, 지오코딩 및 주소 검증이 필요할 때가 바로 그런 도구가 적합합니다. 이 서버는 그런 기능을 제공하지 않습니다.

이 서버는 Google Maps가 방문자에게 보여주는 것을 읽고, 그것을 파싱하여 반환합니다. Google Cloud 프로젝트도, 활성화할 결제도, 관리할 API별 할당량도 없습니다. 또한 Places API가 제공하지 않는 데이터에 접근할 수 있습니다. 작고 고정된 샘플이 아닌 전체 리뷰 피드, 한 리뷰어의 전체 기록, 사진 피드, 그리고 업체의 게시물입니다.

공식 Platform 래퍼

이 서버

설정할 것

Google Cloud 프로젝트, 결제, API별 키 및 할당량

API 키 하나, 한 번

라우팅, 지오코딩, 주소 검증

제공

제공 안 함

리뷰

장소당 작고 고정된 샘플

주제 클러스터가 포함된 페이징 피드

리뷰어의 기록

사용 불가

예, contributorId로

사진 및 게시물

제한적

사진 피드 및 업체의 게시물

출력

Platform 스키마에 따른 JSON

방문자가 보는 것을 파싱한 JSON

비용

청구서에 표시되는 Google의 호출별 가격

호출당 5크레딧, 게시물은 10크레딧

결정은 두 행으로 좁혀집니다. 길안내가 필요하거나 주소를 좌표로 변환해야 한다면 이 서버는 도움을 줄 수 없고 Platform은 할 수 있습니다. 처음 몇 개 뒤의 리뷰가 필요하거나, 리뷰어가 평가한 모든 장소에 걸쳐 그 리뷰어가 누구인지 알아야 한다면 Platform은 도움을 줄 수 없고 이 서버는 할 수 있습니다.

이 서버가 하지 않는 일. 라우팅, 지오코딩, 주소 검증, 거리 행렬이 없으며 쓰기 작업도 없습니다. 지도를 읽을 뿐입니다.

자주 묻는 질문

Google Maps MCP 서버란 무엇인가요?

Google Maps 데이터를 AI 클라이언트가 호출할 수 있는 도구로 노출하는 서버입니다. 클라이언트는 Model Context Protocol을 통해 도구 호출을 보내고, 서버는 데이터를 가져와 구조화된 JSON을 반환하며, 모델은 결과를 가지고 작업하고 HTML 페이지를 보지 않습니다. 이 서버는 여섯 개의 읽기 전용 도구를 노출하며 원격으로 실행됩니다. 클라이언트는 URL에 연결하고 로컬 프로세스를 시작하지 않습니다.

공식 Google Maps MCP 서버가 있나요?

Google은 범용 서버를 공개하지 않습니다. Google Maps Platform이라는 자체 Cloud 프로젝트로 호출하는 유료 API 세트가 있고, 여러 커뮤니티 MCP 서버가 이를 래핑합니다. 이 서버는 Cloud 프로젝트가 필요하지 않은 호스팅 대안입니다.

Google Cloud 프로젝트나 Maps API 키가 필요한가요?

아니요. 유일한 자격 증명은 HasData 키입니다. 생성할 Google Cloud 프로젝트도, 활성화할 결제도, 관리할 API별 할당량도 없습니다.

placeId와 dataId의 차이점은 무엇인가요?

둘 다 같은 장소에 대해 Google이 사용하는 두 가지 ID입니다. 검색은 모든 결과에 둘 다 반환하며, 상세, 리뷰, 사진, 게시물 도구는 둘 중 아무거나 받습니다. 검색 결과에서 원하는 것을 보관하고 재사용하세요.

첫 페이지만이 아니라 모든 리뷰를 얻으려면 어떻게 해야 하나요?

각 응답에서 pagination.nextPageToken을 읽고, 더 이상 오지 않을 때까지 그것을 nextPageToken으로 다시 전달하세요. 각 페이지는 한 번의 호출입니다.

호스팅하거나 실행해야 할 것이 있나요?

아니요. 스트리밍 가능한 HTTP 상의 원격 MCP 서버입니다. 설치할 것도, Python 환경도, 재시작할 프로세스도 없습니다.

데이터는 실시간인가요, 캐시된 것인가요?

실시간입니다. 각 호출은 요청 시점에 가져오며 자체 requestMetadata.id를 포함합니다. 동일한 두 호출은 저장된 복사본의 재생이 아니라 별개의 두 가져오기입니다.

하나의 서버를 여러 Google 표면에 사용할 수 있나요?

예. apis 매개변수는 목록을 받으며, ?apis=google_maps,google_serp는 에이전트에게 지도 도구와 Google 검색을 한 번에 제공합니다.

API 키는 만료되나요?

아니요. 키는 만료되지 않습니다. 필요할 때마다 대시보드에서 교체하세요.

이 서비스는 Google과 제휴 관계인가요?

아니요. HasData는 독립 서비스이며 Google과 제휴, 승인, 또는 후원 관계가 없습니다. Google 및 Google Maps는 각 소유자의 상표입니다. 도구는 공개적으로 이용 가능한 데이터만으로 작동하며, 결과를 Google의 약관 및 적용되는 법률에 맞게 사용할 책임은 사용자에게 있습니다.

HasData 링크

제품 페이지

Search, Reviews, Photos 및 Posts

서버 문서

MCP 서버 문서

하나의 서버에 있는 전체 57개 도구

HasData/hasdata-mcp

클라이언트 둘러보기

MCP 클라이언트 및 연동

우리가 파싱하는 기타 표면

추가 53개 스크래퍼 API

요금제 및 크레딧 비용

요금제 및 크레딧 비용

키 및 사용법

HasData 대시보드

npm의 Node 런처

@hasdata/google-maps-mcp

PyPI의 Python 런처

hasdata-google-maps-mcp

개발

이 저장소는 원격 서버의 구성 및 문서입니다. 빌드 단계가 없으며 컨테이너화할 항목도 없습니다.

계약 테스트(contract test)가 포함되어 있습니다. README는 특정 매개변수를 가진 여섯 가지 도구를 약속합니다. 그런데 여기에 커밋 없이 업스트림 도구 목록이 변경될 수 있으며, 그렇게 되면 이 파일이 조용히 거짓말을 하게 됩니다. 이 테스트는 그 약속을 검증하며, CI에서 매주 그리고 모든 푸시마다 실행됩니다.

HASDATA_API_KEY=your_key_here npm test

PowerShell에서:

$env:HASDATA_API_KEY = "your_key_here"; npm test

마지막 검사는 실제 호출을 수행하며 5크레딧이 소요되는데, 이는 올바른 이유로 실패할 수 있는 카나리(canary)를 두는 대가입니다. 도구 나열은 비어 있지 않은 키만 있으면 성공하며, 도구 나열만 수행하는 테스트는 취소된 키로도 통과 상태를 유지합니다.

기여하기

도구 표와 응답 샘플에 대한 수정이 가장 유용한 기여입니다. 이 부분들이 시간이 지나면서 어긋나기 때문입니다. 수행한 호출과 받은 응답을 포함해 주세요. 포크에서 온 풀 리퀘스트는 키 없이 테스트 스위트를 실행하며, 라이브 검사는 빨간불이 켜지는 대신 건너뜁니다.

라이선스

MIT. LICENSE를 참조하세요.

Available Tools

6 tools
hasdata_google_maps_contributor_reviews_getMapReviewsgoogle_maps_contributor_reviews: GET /AInspect

Get Map Contributor Reviews

Lists all Google Maps reviews authored by a specific Local Guide / contributor by contributorId, with language/country targeting and nextPageToken pagination. Returns per-review rating, text, date, place name, place address, placeId, photos, and owner responses. Use for reviewer reputation checks, detecting fake/bot review patterns, local-guide activity analysis, and building review-author profiles for trust scoring.

ParametersJSON Schema
NameRequiredDescriptionDefault
glNoThe two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`.
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
numNoNumber of results per page, ranging from 10 to 200.
contributorIdYesGoogle Maps Contributor ID.
nextPageTokenNoDefines the next page token. It is used for retrieving the next page results.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It describes the return fields and pagination but does not mention rate limits, errors, or authentication. It implies read-only via the GET method in the title but not explicitly in the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, with a clear verb, resource, and use-case sentence. It avoids fluff and is well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description lists the return fields (rating, text, date, place name, place address, placeId, photos, owner responses) and mentions pagination. It does not cover error handling or limitations, but for a simple GET endpoint it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All five parameters are described in the schema, and the description adds extra details such as the valid range for 'num' (10-200) and the purpose of 'nextPageToken'. This goes beyond simply restating the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: listing Google Maps reviews authored by a specific contributor. It uses a specific verb ('Lists') and resource ('reviews authored by a specific Local Guide / contributor'), distinguishing it from the sibling tool for place reviews (hasdata_google_maps_reviews_getMapReviews).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases ('Use for reviewer reputation checks, detecting fake/bot review patterns, local-guide activity analysis, and building review-author profiles for trust scoring'). It does not explicitly compare with sibling tools, but the contributor focus makes the intended scenario clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hasdata_google_maps_photos_getMapPhotosgoogle_maps_photos: GET /AInspect

Get Place Photos

Fetches the photo gallery of a Google Maps place by dataId or placeId, paginated with nextPageToken and filterable by categoryId (all, latest, menu, by owner, videos, street view). Returns each photo with image URL, thumbnail, upload date, uploader, and photoId. Use for restaurant-menu extraction, venue/ambience visual audits, building rich place detail pages, and sourcing up-to-date imagery for POI listings.

ParametersJSON Schema
NameRequiredDescriptionDefault
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
dataIdNoGoogle Maps data ID. Either dataId or placeId should be set.
placeIdNoUnique reference to a place on Google Maps. Either dataId or placeId should be set.
categoryIdNoFilters photos by category.
nextPageTokenNoToken for fetching the next page of photos.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the disclosure burden. It discloses pagination via nextPageToken, filtering by categoryId, and the per-photo return fields (image URL, thumbnail, upload date, uploader, photoId). It does not cover auth, rate limits, or error behavior, but the read-only fetch semantics are clear from 'Fetches.'

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with the core fetch behavior first and use cases last. The opening heading duplicates the tool title slightly, but the remaining sentences are information-dense and each earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description compensates by listing return fields and pagination behavior. It covers the main parameters (dataId/placeId, categoryId, nextPageToken) and provides use cases; only the optional hl parameter and required-parameter rules are left to the schema, which documents them adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaning by enumerating categoryId values ('all, latest, menu, by owner, videos, street view'), clarifying the dataId/placeId alternative, and tying nextPageToken to pagination. This goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Fetches the photo gallery of a Google Maps place.' It clearly distinguishes this tool from sibling Google Maps tools such as reviews, posts, and place details by centering on photos. The scope (by dataId or placeId) is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete use cases: 'restaurant-menu extraction, venue/ambience visual audits, building rich place detail pages, and sourcing up-to-date imagery for POI listings.' This tells an agent when the tool is valuable, but it does not explicitly name alternatives or state when not to use it, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hasdata_google_maps_place_getPlaceDetailsgoogle_maps_place: GET /AInspect

Get Place Details

Fetches full Google Maps place data by placeId with optional domain/language localization. Returns name, address, coordinates, phone, website, categories, hours, rating, review count, price level, photos, popular times, attributes/amenities, plus_code, and map URL. Use for local SEO audits, POI enrichment, lead generation, competitor mapping, and building location-aware agents.

ParametersJSON Schema
NameRequiredDescriptionDefault
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
domainNoGoogle domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`.
placeIdYesA unique identifier for the place. This ID can be obtained from Google Maps search results.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the transparency burden. It clearly states that the operation fetches (read-only) and enumerates the returned data fields, while also noting optional domain/language localization. It does not mention rate limits, error behavior, or response format, but for a simple GET-by-ID endpoint the core behavior is adequately disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficient and front-loaded: it states the action first, then the returned payload, then the use cases. The field list is long but earns its place because there is no output schema. The redundant heading 'Get Place Details' is a minor blemish.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given three parameters, no output schema, and no annotations, the description supplies the essential return-value list and use cases, so an agent can judge when to call it and what to expect. It could be more complete by pointing to performMapSearch as the way to obtain a placeId or by noting response formatting, but these are not blocking gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all three parameters with 100% coverage, so the baseline is 3. The description adds only a small amount of context by saying the localization parameters are optional and by framing placeId as the lookup key; it does not provide additional parameter-level detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific action and resource: it 'Fetches full Google Maps place data by placeId', immediately distinguishing this details-by-ID tool from sibling tools like performMapSearch, getMapReviews, getMapPhotos, and getMapPosts. The explicit field list (name, address, coordinates, phone, categories, hours, etc.) reinforces that this is the comprehensive place-details endpoint, not a focused sub-resource tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete application context—'local SEO audits, POI enrichment, lead generation, competitor mapping, and building location-aware agents'—which tells an agent when this enrichment tool is appropriate. It does not explicitly name sibling tools or state when not to use it, so it falls short of full 5-level guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hasdata_google_maps_posts_getMapPostsgoogle_maps_posts: GET /AInspect

Get Map Posts

Paginated fetch of Google Maps Posts (timeline-style updates such as offers, events, announcements, and notices) for a place by dataId or placeId, with language targeting and nextPageToken pagination. Returns per-post title, description, image, posted_at, link, and source/business name. Use for small-business intelligence, local-marketing monitoring, competitor activity tracking, and surfacing current promotions and events from local merchants.

ParametersJSON Schema
NameRequiredDescriptionDefault
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
dataIdNoGoogle Maps data ID.
placeIdNoUnique reference to a place on a Google Map. Either dataId or placeId should be set.
nextPageTokenNoDefines the next page token. It is used for retrieving the next page results.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the operation is a paginated fetch and enumerates the returned data. However, with no annotations provided, it does not mention authentication requirements, rate limits, or potential side effects, so it does not fully carry the behavioral transparency burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured. It covers what the tool does, what it returns, and relevant use cases in a compact two-paragraph format without unnecessary filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is fairly complete for a read-only fetch tool: it names the resource, the identifier options, the pagination mechanism, the return fields, and practical use cases. It could be slightly stronger by explicitly addressing parameter precedence or edge cases, but it is adequate for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all four parameters with descriptions, so the baseline is 3. The tool description adds minor context by mentioning 'by dataId or placeId' and 'nextPageToken pagination,' but it does not significantly enhance what the schema already conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the operation: fetch Google Maps Posts for a place by dataId or placeId. It also specifies the resource type and outlines returned fields, making it easily distinguishable from sibling tools like reviews or photos.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear use cases such as small-business intelligence, local-marketing monitoring, and competitor activity tracking. It does not explicitly mention when not to use it or name alternative sibling tools, but the stated use cases give solid contextual guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hasdata_google_maps_reviews_getMapReviewsgoogle_maps_reviews: GET /AInspect

Get Map Reviews

Paginated fetch of Google Maps reviews for a place by dataId or placeId, with sort (mostRelevant, newestFirst, ratingHigh, ratingLow), topicId filter, and language. Returns per-review author name and profile link, star rating, text, published/relative date, likes count, owner response, attached photos, and local-guide flag. Use for reputation management, sentiment and topic mining, competitor review benchmarking, and feeding review data into summarization or trust-score LLMs.

ParametersJSON Schema
NameRequiredDescriptionDefault
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
dataIdNoGoogle Maps data ID.
sortByNoParameter used for sorting and refining results.
placeIdNoUnique reference to a place on a Google Map. Either dataId or placeId should be set.
topicIdNoDefines the ID of the topic you want to use for filtering reviews.
nextPageTokenNoDefines the next page token. It is used for retrieving the next page results.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the transparency burden. It discloses pagination behavior, sort/filter options, mutually exclusive identifiers, and the per-review fields returned. It does not mention rate limits, errors, or read-only guarantees, but the core behavior is adequately described.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well structured: a short title, a functional summary, a list of returned fields, and use cases. It is slightly repetitive in listing parameter names that already appear in the schema, but it remains appropriately sized and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides enough context for an agent to select and invoke the tool correctly: purpose, key parameters, pagination token, and expected output fields. It is not exhaustive (no output schema or error scenarios), but it is adequate for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover 100% of parameters, so the baseline is 3. The description adds meaningful context beyond the schema, particularly that either dataId or placeId should be set and that pagination is handled via nextPageToken, which improves parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches Google Maps reviews, with resource, operation, and key refinements (dataId/placeId, sorting, topic, language). It is clearly distinguished from sibling tools for photos, posts, place details, and search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit use cases such as reputation management, sentiment analysis, competitor review benchmarking, and feeding summarization/trust-score LLMs. It does not explicitly say when not to use it versus a sibling, but the resource-specific language makes the context clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

hasdata_google_maps_search_performMapSearchgoogle_maps_search: GET /AInspect

Get Google Maps Search Results

Runs a Google Maps search by keyword plus optional GPS coordinates (@lat,lng,zoomz via ll) with language, country, domain, and offset-based pagination (start). Returns the local pack list with placeId, name, address, coordinates, rating, review count, price level, categories, phone, website, hours, and thumbnail. Use for local lead generation, competitor density mapping, market expansion research, hyperlocal directories, and feeding placeIds into the Maps Place, Reviews, or Photos endpoints.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch query term or phrase.
glNoThe two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`.
hlNoThe two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`.
llNoGPS coordinates of the location where the search query is to be performed. This parameter is required if the 'start' parameter is present. The format for the `ll` parameter is `@` followed by latitude, longitude, and zoom level, separated by commas. The latitude and longitude should be in decimal degrees, and the zoom level is an integer. Example: `@40.7455096,-74.0083012,14z`.
startNoSpecifies the result offset for pagination purposes. The offset dictates the number of rows to skip from the beginning of the results. This is useful for accessing subsequent pages of search results. For example, an offset of 0 (the default value) returns the first page of results, 20 returns the second page, 40 returns the third page, and so on. This parameter is especially relevant when used in conjunction with the 'll' parameter for location-based searches.
domainNoGoogle domain to use. Default is google.com. Provide one exact documented value (195 allowed), e.g. `google.ac`, `google.ad`.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It explains the search behavior, return fields, pagination via start, and the dependency between ll and start. It does not mention rate limits or error handling, but for a read-only search API this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the main purpose, and structured into three clear sentences: what it does, what it returns, and when to use it. It avoids unnecessary verbosity while covering essential details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description compensates by enumerating the exact fields returned in the local pack list. It also covers pagination behavior, language/country/domain options, and practical use cases, making it complete for an agent to decide invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Every parameter in the schema has a description that adds significant meaning beyond the type. The ll parameter includes a format example and a conditional requirement, start explains pagination with concrete offsets, and gl/hl/domain include value ranges and examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs a Google Maps search and returns the local pack list with specific fields. It distinguishes itself from sibling tools like place details, reviews, and photos by focusing on the search entry point.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists concrete use cases (local lead generation, competitor density mapping, market expansion research) and hints at follow-up tools by mentioning feeding placeIds into Maps Place, Reviews, or Photos endpoints. It does not explicitly say 'when not to use', but the use-case list is strong enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • First observedhasdata_google_maps_contributor_reviews_getMapReviews
    • First observedhasdata_google_maps_photos_getMapPhotos
    • First observedhasdata_google_maps_place_getPlaceDetails
    • First observedhasdata_google_maps_posts_getMapPosts
    • First observedhasdata_google_maps_reviews_getMapReviews
    • First observedhasdata_google_maps_search_performMapSearch

TDQS

A4.3/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct data type: search for places, place details, reviews for a place, reviews by a contributor, photos, and posts. There is no ambiguity between them, even though search and place details both return place info — search is for discovery, place details is for a specific known place.

Naming Consistency5/5

All tool names follow a consistent pattern: hasdata_google_maps_<resource>_get<Action> (or performMapSearch for search). The resource is always a clear noun (search, place, reviews, contributor_reviews, photos, posts), and the action verb is consistent (get) or explicit (performMapSearch). This is highly predictable.

Tool Count5/5

Six tools is a well-scoped count for a Google Maps data extraction server. Each tool covers a distinct endpoint needed for local business intelligence, and none are redundant or trivial. This is within the ideal range and feels complete for the stated purpose.

Completeness5/5

The tool set covers the core lifecycle of Google Maps data: search for places, fetch details for a place, retrieve reviews (both for a place and by a contributor), get photos, and get posts/updates. This is a comprehensive read-only surface for building location-aware agents, lead generation, and reputation management, with no obvious gaps.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers