Google Maps MCP-сервер
Размещённый сервер Model Context Protocol (MCP), который предоставляет Claude, Cursor, Windsurf и любому другому MCP-клиенту шесть инструментов Google Maps только для чтения. Ищите места, получайте полную информацию о них, отзывы, фотографии и публикации, а также просматривайте историю отзывов отдельного пользователя — всё в виде структурированного JSON. Для работы не нужны проект Google Cloud и включённый биллинг.
Каждый месяц — 1 000 бесплатных кредитов без привязки карты. Этого хватит на 200 вызовов по 5 кредитов.
https://mcp.hasdata.com/mcp?apis=google_maps
Содержание
-
Что потребуется
-
Быстрый старт
-
Примеры запросов
-
Инструменты
-
Ошибки и возможные сбои
-
Стоимость, бесплатный тариф и ограничения
-
Выбор инструмента
-
Сравнение с аналогами
-
Часто задаваемые вопросы
-
Ссылки на HasData
-
Разработка
-
Участие в проекте
-
Лицензия
Что потребуется
MCP-клиент с поддержкой streamable HTTP и пользовательских заголовков. Также понадобится ключ API HasData из личного кабинета. Его можно бесплатно создать без привязки карты; бесплатного тарифа хватит примерно на 200 вызовов в месяц по 5 кредитов. Больше ничего не нужно. Это удалённый сервер, поэтому для подключения достаточно URL и заголовка: не придётся запускать контейнер или использовать проект Google Cloud и его API-ключ. Клиенты, поддерживающие только stdio, могут воспользоваться лаунчером @hasdata/google-maps-mcp (npm) или hasdata-google-maps-mcp (PyPI).
Быстрый старт
| URL | https://mcp.hasdata.com/mcp?apis=google_maps |
| Транспорт | HTTP, streamable |
| Заголовок авторизации | x-api-key: HASDATA_API_KEY |
URL сервера одинаков для всех клиентов. Мы проверили работу сервера в Claude Code и Claude Desktop. Примеры для остальных клиентов приведены в формате, указанном в их документации для удалённых серверов.
Клиенты с поддержкой OAuth могут добавить тот же URL в качестве коннектора и войти в систему, не указывая ключ в конфигурационном файле.
Claude Code
claude mcp add --transport http google-maps "https://mcp.hasdata.com/mcp?apis=google_maps" \
--header "x-api-key: HASDATA_API_KEY"
Claude Desktop
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" }
}
}
}
Предпочитаете Python вместо Node? Замените лаунчер на пакет из PyPI. Его можно запустить с помощью uvx без ручной установки:
{
"mcpServers": {
"google-maps": {
"command": "uvx",
"args": ["hasdata-google-maps-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}
Если клиент поддерживает OAuth, можно добавить URL в качестве пользовательского коннектора и обойтись без лаунчера.
Cursor
.cursor/mcp.json:
{
"mcpServers": {
"google-maps": {
"url": "https://mcp.hasdata.com/mcp?apis=google_maps",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
Windsurf
~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"google-maps": {
"serverUrl": "https://mcp.hasdata.com/mcp?apis=google_maps",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
Cline
{
"mcpServers": {
"google-maps": {
"url": "https://mcp.hasdata.com/mcp?apis=google_maps",
"type": "streamableHttp",
"headers": { "x-api-key": "HASDATA_API_KEY" },
"disabled": false
}
}
}
VS Code
.vscode/mcp.json:
{
"servers": {
"google-maps": {
"type": "http",
"url": "https://mcp.hasdata.com/mcp?apis=google_maps",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
Gemini CLI
~/.gemini/settings.json:
{
"mcpServers": {
"google-maps": {
"httpUrl": "https://mcp.hasdata.com/mcp?apis=google_maps",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}
Примеры запросов
Для каждого примера нужен один вызов инструмента, если не указано иное.
Найди в Google Maps кофейни рядом с центром Сиэтла и покажи первые десять, указав рейтинг, количество отзывов и сайт.
Один вызов, 5 кредитов. В результатах поиска уже есть placeId и dataId, поэтому для последующих запросов не потребуется дополнительный шаг поиска.
Получи полную информацию о месте
ChIJAb0KE0RrkFQRuI4X0By5Mcw: часы работы, варианты обслуживания, ценовой уровень и ссылку на меню.
Один вызов, 5 кредитов.
Покажи последние отзывы об этом месте, отсортированные от новых к старым, и расскажи, какие темы встречаются чаще всего.
Один вызов, 5 кредитов. В ответе есть группы тем, сформированные самим Google, с количеством упоминаний каждой темы. Данные уже ранжированы.
Найди автора самого популярного отзыва и перечисли все остальные места, которые он оценивал, вместе с поставленными оценками.
Один вызов, 5 кредитов. В отзыве есть contributorId автора — именно этот идентификатор принимает инструмент для получения данных о пользователе.
Получи ленту фотографий этого места и последние публикации компании.
Два вызова. Фотографии стоят 5 кредитов, публикации — 10.
Есть две причины, по которым такие цепочки обходятся недорого. В каждом результате поиска уже указаны placeId и dataId, поэтому для получения сведений о месте, отзывах, фотографиях и публикациях не нужно выполнять отдельный запрос на поиск идентификатора. Кроме того, в отзыве есть contributorId автора: благодаря этому запрос «кто оставил этот отзыв» позволяет одним вызовом получить полную историю пользователя.
Инструменты
| Инструмент | Что возвращает |
|---|---|
hasdata_google_maps_contributor_reviews_getMapReviews | Оценку и текст каждого отзыва, дату, название и адрес места, placeId, фотографии и ответы владельца. 5 кредитов за вызов |
hasdata_google_maps_photos_getMapPhotos | Каждую фотографию с URL изображения, миниатюрой, датой загрузки, именем загрузившего и photoId. 5 кредитов за вызов |
hasdata_google_maps_place_getPlaceDetails | Название, адрес, координаты, телефон, сайт, категории, часы работы, рейтинг, количество отзывов, ценовой уровень, фотографии, популярное время посещения, атрибуты и удобства, plus_code и ссылку на карту. 5 кредитов за вызов |
hasdata_google_maps_posts_getMapPosts | Заголовок, описание, изображение, дату публикации, ссылку и название источника или компании для каждой публикации. 10 кредитов за вызов |
hasdata_google_maps_reviews_getMapReviews | Имя автора каждого отзыва и ссылку на его профиль, оценку в звёздах, текст, дату публикации или относительную дату, количество отметок «Нравится», ответ владельца, прикреплённые фотографии и признак Local Guide. 5 кредитов за вызов |
hasdata_google_maps_search_performMapSearch | Список local pack с placeId, названием, адресом, координатами, рейтингом, количеством отзывов, ценовым уровнем, категориями, телефоном, сайтом, часами работы и миниатюрой. 5 кредитов за вызов |
Все шесть инструментов доступны только для чтения. Ниже приведены сокращённые примеры реальных вызовов. Данные в них меняются по мере появления новых отзывов о местах, поэтому воспринимайте их как примеры структуры ответа. Название каждого инструмента ведёт на справочную страницу его конечной точки.
Примеры показывают содержимое полезной нагрузки, а не весь ответ. Результат вызова tools/call содержит один текстовый блок, в котором находится JSON с полями url, status, text и json; собранные данные находятся в json. В исходном JSON-RPC-ответе нужный путь — result.content[0].text: сначала разберите его как JSON, затем обратитесь к .json. Чат-клиент извлекает эти данные автоматически, а при прямом взаимодействии с конечной точкой код должен сделать это самостоятельно.
Четыре инструмента позволяют указать место по placeId или dataId. Поиск возвращает оба идентификатора для каждого результата. Обычно достаточно выполнить поиск, а затем вызвать инструмент получения подробной информации, отзывов, фотографий или публикаций, передав один из сохранённых идентификаторов.
Поиск в Google Maps
hasdata_google_maps_search_performMapSearch
Места, соответствующие запросу, отсортированные так же, как в Google Maps.
| Параметр | Тип | Обязательный | Примечания |
|---|---|---|---|
q | строка | да | Поисковый запрос в свободной форме, например coffee или plumber |
ll | строка | Центр карты и масштаб в формате @lat,lng,zoomz, например @47.6062,-122.3321,14z. Этот параметр позволяет привязать поиск к определённому месту | |
gl / hl | строка | Двухбуквенные коды страны и языка | |
domain | строка | Домен Google для поиска, например google.com | |
start | число | Смещение для постраничного вывода результатов, с шагом 20. Также необходимо указать ll |
Каждый результат содержит поля position, title, placeId, dataId, address, gpsCoordinates, rating, reviews, type, types, price, website, thumbnail, openState, workingHours, serviceOptions и, если Google показывает такую ссылку, menu.
Местоположение задаётся параметром
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.
| Параметр | Тип | Обязательный | Примечания |
|---|---|---|---|
placeId | строка | да | placeId из результата поиска |
hl | строка | Код языка | |
domain | строка | Домен Google |
Возвращает один объект placeResults с теми же полями, что и результат поиска, а также массивом images. Этот инструмент позволяет получить полную запись о месте, не выполняя лишний поиск.
Получение отзывов о месте
hasdata_google_maps_reviews_getMapReviews
Отзывы о месте с постраничной загрузкой.
| Параметр | Тип | Обязательный | Примечания |
|---|---|---|---|
placeId | строка | Идентификатор места. Необходимо указать либо placeId, либо dataId | |
dataId | строка | Альтернативный идентификатор места — dataId | |
sortBy | строка | По умолчанию используется mostRelevant; также доступны newestFirst, ratingHigh и ratingLow | |
topicId | строка | Фильтр по теме: укажите её id из массива topics | |
hl | строка | Код языка | |
nextPageToken | строка | Значение pagination.nextPageToken из предыдущего ответа |
Возвращает placeInfo, массивы topics и reviews, а также объект pagination. Каждый отзыв содержит поля reviewId, 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
Все отзывы одного автора обо всех местах, которым он поставил оценку.
| Параметр | Тип | Обязательный | Примечания |
|---|---|---|---|
contributorId | строка | да | contributorId из объекта user в отзыве |
num | число | Количество отзывов для возврата | |
gl / hl | строка | Коды страны и языка | |
nextPageToken | строка | Токен из предыдущего ответа |
Возвращает объект contributor с полями name, level, points и разбивкой contributions, а также массив reviews. Каждая запись в нём содержит собственный объект placeInfo, поэтому для определения места, о котором написан отзыв, дополнительный запрос не нужен. Этот инструмент позволяет анализировать надёжность авторов и связи между отзывами — возможности, недоступные при использовании только ленты отзывов о месте. Он получает общедоступную историю отзывов одного человека. Используйте результаты с соблюдением условий Google и применимого законодательства.
Получение фотографий места
hasdata_google_maps_photos_getMapPhotos
Фотографии, опубликованные для места.
| Параметр | Тип | Обязательный | Примечания |
|---|---|---|---|
placeId | строка | Идентификатор места. Необходимо указать либо placeId, либо dataId | |
dataId | строка | Альтернативный идентификатор места — dataId | |
categoryId | строка | Фильтр по категории: укажите её id из массива categories | |
hl | строка | Код языка | |
nextPageToken | строка | Токен из предыдущего ответа |
Возвращает массив categories (категории All, Latest, Videos, Menu и другие, специфичные для места), массив photos, где у каждой записи есть URL изображений image и thumbnail, а также объект pagination.
Получение публикаций места
hasdata_google_maps_posts_getMapPosts
Публикации и обновления компании в её карточке Google.
| Параметр | Тип | Обязательный | Примечания |
|---|---|---|---|
placeId | строка | Идентификатор места. Необходимо указать либо placeId, либо dataId | |
dataId | строка | Альтернативный идентификатор места — dataId | |
hl | строка | Код языка | |
nextPageToken | строка | Токен из предыдущего ответа |
Возвращает массив 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 с указанием обоих полей: требование условное, и его нельзя описать в схеме обычным списком обязательных полей. Укажите один из идентификаторов.
Если идентификатор места не найден, возвращается ошибка, а не пустые данные. В ответе будут isError: true, текст HasData API error: 400 Bad Request и значение error в поле requestMetadata.status. Проверяйте этот флаг, а не длину массива.
Пустой массив posts — это корректные данные. В большинстве карточек нет публикаций, поэтому вызов завершается успешно, возвращает статус ok и пустой массив. Это означает, что для места просто нет публикаций.
Результаты, содержащие данные, также включают requestMetadata.id, который полезно указывать при обращении в поддержку, а также ссылки html и json на сохранённый артефакт именно этого вызова.
Тарифы, бесплатный план и лимиты
Поиск, сведения о местах, отзывы, отзывы авторов и фотографии стоят 5 кредитов за успешный вызов. Публикации — 10 кредитов. Размер ответа не влияет на стоимость. Полная страница отзывов стоит столько же, сколько страница с одним отзывом.
Бесплатный план включает 1 000 кредитов в месяц без привязки карты — это 200 вызовов по 5 кредитов. Кредиты обновляются с началом расчётного периода, поэтому агент с небольшим объёмом запросов может работать на бесплатном плане бессрочно.
Платные планы начинаются от $59 в месяц за 200 000 кредитов — это 40 000 вызовов по 5 кредитов. Чем больше объём, тем ниже стоимость одного кредита. Актуальные цены указаны на странице тарифов.
План также определяет допустимое число одновременных запросов. Бесплатный план позволяет выполнять 1 запрос за раз, Startup — 5, Basic — 15, а планы Growth — от 50 до 500. Ограничение по числу одновременных запросов — единственный лимит нагрузки. Отдельного ограничения запросов в минуту нет, а бесплатный план не замедляется и не урезается каким-либо иным образом. Если агент работает без присмотра, предусмотрите обработку превышения лимита: агент, который отправляет запросы сразу по множеству мест, достигнет его раньше, чем вы ожидаете.
Каждый запрос следующей страницы стоит отдельный вызов. На одной странице отзывов обычно около десяти записей, поэтому получение ста отзывов потребует примерно десяти вызовов и 50 кредитов. На одной странице фотографий — двадцать. Бесплатного плана хватит надолго.
Выбор инструментов
Параметр ?apis=google_maps открывает ровно шесть инструментов. Он принимает список: например, ?apis=google_maps,google_serp добавляет к инструментам карт поиск Google. Если не указывать параметр, станут доступны все инструменты HasData — сейчас их 57.
Как правило, лучше ограничить список инструментов. Модель чаще выбирает правильный вариант из шести инструментов, чем из пятидесяти семи. Кроме того, описания инструментов занимают контекст при каждом обращении.
Сравнение
Почти все остальные MCP-серверы для Google Maps работают как оболочка над официальной Google Maps Platform — именно между этими вариантами и предстоит выбирать.
Такие серверы обращаются к API Places, Routes и Geocoding, используя ваши учётные данные Google Cloud. Чтобы запустить один из них, нужно создать проект Google Cloud, подключить оплату с помощью карты, включить каждый API и самостоятельно управлять ключом и квотами. Это подходящий вариант, если вам нужны маршрутизация, геокодирование и проверка адресов — этот сервер таких функций не предоставляет.
Этот сервер получает и разбирает данные, которые Google Maps показывает посетителям. Для работы не нужны проект Google Cloud, подключение оплаты или управление квотами для отдельных API. Кроме того, он предоставляет доступ к данным, которые API Places не отдаёт: полной ленте отзывов, а не небольшой фиксированной выборке, всей истории отзывов отдельного автора, ленте фотографий и публикациям компании.
| Оболочка над официальной Platform | Этот сервер | |
|---|---|---|
| Что нужно настроить | Проект Google Cloud, оплату, ключи и квоты для отдельных API | Один API key — один раз |
| Маршрутизация, геокодирование, проверка адресов | Да | Не поддерживаются |
| Отзывы | Небольшая фиксированная выборка для каждого места | Лента с постраничной загрузкой и кластерами по темам |
| История автора отзывов | Недоступна | Да, по contributorId |
| Фотографии и публикации | Ограниченный доступ | Лента фотографий и публикации компании |
| Формат результата | JSON в соответствии со схемой Platform | JSON, разобранный из данных, которые видит посетитель |
| Стоимость | Оплата Google за каждый вызов | 5 кредитов за вызов, 10 — за публикации |
Выбор зависит от двух строк. Если вам нужны маршруты или перевод адреса в координаты, этот сервер не поможет, а Platform справится. Если нужны отзывы, которые не вошли в первую выборку, или история автора по всем местам, которые он оценивал, Platform не поможет, а этот сервер справится.
Что этот сервер не умеет. Маршрутизация, геокодирование, проверка адресов, матрица расстояний и любые операции записи не поддерживаются. Сервер только считывает данные карты.
Часто задаваемые вопросы
Что такое MCP-сервер Google Maps?
Это сервер, который предоставляет данные Google Maps в виде инструментов, доступных AI-клиенту. Клиент отправляет вызов инструмента по Model Context Protocol, сервер получает данные и возвращает структурированный JSON. Модель работает с результатом, не обрабатывая HTML-страницу. Этот сервер предоставляет шесть инструментов только для чтения и работает удалённо: клиент подключается к URL, не запуская локальный процесс.
Существует ли официальный MCP-сервер Google Maps?
Google не выпускает универсальный MCP-сервер. Вместо него есть Google Maps Platform — набор платных API, к которым можно обращаться через собственный проект Cloud. Несколько независимых MCP-серверов предоставляют к Platform доступ через оболочку. Этот сервер — размещённая альтернатива, для которой не нужен проект Cloud.
Нужны ли мне проект Google Cloud или ключ API Maps?
Нет. Единственные учётные данные, которые вам понадобятся, — ключ HasData. Создавать проект Google Cloud, подключать оплату и управлять квотами отдельных API не нужно.
Чем отличаются placeId и dataId?
Это два идентификатора, которые Google использует для одного и того же места. Поиск возвращает оба идентификатора для каждого результата, а инструменты получения сведений, отзывов, фотографий и публикаций принимают любой из них. Сохраните тот, который вам удобнее, и используйте его повторно.
Как получить все отзывы, а не только первую страницу?
Прочитайте pagination.nextPageToken в ответе и передавайте его в nextPageToken, пока токен не перестанет возвращаться. Для каждой страницы нужен отдельный вызов.
Нужно ли размещать или запускать сервер самостоятельно?
Нет. Это удалённый MCP-сервер, работающий по streamable HTTP. Ничего не нужно устанавливать, настраивать среду Python или перезапускать процесс.
Данные актуальные или кэшированные?
Актуальные. Каждый вызов получает данные в момент запроса и содержит собственный requestMetadata.id. Два одинаковых вызова выполняются отдельно и не возвращают сохранённую копию ответа.
Можно ли использовать один сервер для нескольких сервисов Google?
Да. Параметр apis принимает список, поэтому ?apis=google_maps,google_serp предоставит агенту инструменты для работы с картами и поиска Google одновременно.
Истекает ли срок действия API key?
Нет, срок действия ключа не истекает. При необходимости его можно заменить в панели управления.
Связан ли этот сервис с Google?
Нет. HasData — независимый сервис, не связанный с Google и не одобренный и не спонсируемый этой компанией. Google и Google Maps — товарные знаки соответствующего владельца. Инструменты работают только с общедоступными данными. Вы несёте ответственность за использование результатов в соответствии с условиями Google и применимым законодательством.
Ссылки HasData
| Страницы продуктов | Поиск, Отзывы, Фотографии и Публикации |
| Документация сервера | Документация MCP-сервера |
| Все 57 инструментов на одном сервере | HasData/hasdata-mcp |
| Руководства для клиентов | MCP-клиенты и интеграции |
| Другие сервисы, данные которых мы обрабатываем | Ещё 53 API для сбора данных |
| Планы и стоимость кредитов | Планы и стоимость кредитов |
| Ключи и статистика использования | Панель управления HasData |
| Node launcher в npm | @hasdata/google-maps-mcp |
| Python launcher в PyPI | hasdata-google-maps-mcp |
Разработка
В этом репозитории собраны конфигурация и документация удалённого сервера. Сборка и упаковка в контейнер не требуются.
Здесь есть тест контракта. В README указаны шесть инструментов и их конкретные параметры, но список инструментов на стороне сервера может измениться без коммита в этот репозиторий — тогда информация в README незаметно устареет. Тест проверяет соответствие заявленным характеристикам и запускается в CI каждую неделю, а также при каждом отправленном изменении.
HASDATA_API_KEY=your_key_here npm test
В PowerShell:
$env:HASDATA_API_KEY = "your_key_here"; npm test
Последняя проверка выполняет реальный вызов и стоит 5 кредитов. Это плата за контрольную проверку, которая может завершиться ошибкой по обоснованной причине. Получить список инструментов можно с любым непустым ключом, поэтому тест, который проверяет только список, продолжит проходить и с отозванным ключом.
Участие в разработке
Полезнее всего исправлять таблицы инструментов и примеры ответов — именно эти части быстрее всего устаревают. Указывайте выполненный вызов и полученный ответ. Pull request из fork запускают набор тестов без ключа, а проверки с реальными запросами пропускаются, чтобы не помечать сборку как неудачную.
Лицензия
MIT. См. LICENSE.