API ВЕГА

MCP-сервер Google Scholar

Размещённый сервер Model Context Protocol (MCP), который предоставляет Claude, Cursor, Windsurf и другим MCP-клиентам два инструмента Google Scholar только для чтения. Ищите научные публикации с помощью операторов Google Scholar, фильтров по годам и поиска цитирующих работ. Получайте сведения о цитировании статьи в пяти форматах, а также ссылки на экспорт в BibTeX и EndNote — всё в виде структурированного JSON. Размещать сервер самостоятельно не нужно.

Сервер получает данные с общедоступных страниц Google Scholar, которые доступны посетителям без входа в аккаунт.

1 000 бесплатных кредитов каждый месяц — банковская карта не нужна. При стоимости вызова в 10 кредитов этого хватит на 100 запросов к Scholar.

https://mcp.hasdata.com/mcp?apis=google_scholar

Содержание

  • Требования

  • Быстрый старт

  • Примеры запросов

  • Инструменты

  • Ошибки и сценарии сбоев

  • Стоимость, бесплатный тариф и ограничения

  • Выбор инструмента

  • Сравнение с аналогами

  • Часто задаваемые вопросы

  • Ссылки HasData

  • Разработка

  • Участие в проекте

  • Лицензия

Требования

Вам понадобится MCP-клиент и API-ключ HasData из панели управления. Создать ключ можно бесплатно, банковская карта не требуется. Бесплатного тарифа хватит примерно на 100 вызовов в месяц при стоимости вызова в 10 кредитов. Это удалённый сервер, поэтому для подключения достаточно URL и заголовка x-api-key — запускать контейнер не нужно. Клиенты, которые поддерживают только stdio, подключаются через небольшой launcher. Он опубликован в npm под именем @hasdata/google-scholar-mcp и в PyPI под именем hasdata-google-scholar-mcp; примеры приведены ниже.

Быстрый старт

URL сервера одинаков для всех клиентов. Ниже показана настройка в Claude Code и Claude Desktop. Примеры для остальных клиентов соответствуют их документации по подключению удалённых серверов.

ПолеЗначение
URLhttps://mcp.hasdata.com/mcp?apis=google_scholar
ТранспортHTTP, потоковый
Заголовок авторизацииx-api-key: HASDATA_API_KEY

Клиенты с поддержкой OAuth можно подключить по тому же URL и выполнить вход, не добавляя ключ в конфигурационный файл.

Claude Code

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

Claude Desktop

Откройте Settings, затем Connectors и Add custom connector. Вставьте https://mcp.hasdata.com/mcp?apis=google_scholar и выполните вход.

Если вы настраиваете подключение через файл конфигурации, учитывайте, что Claude Desktop загружает только локальные серверы stdio. Поэтому для подключения к удалённому серверу используется launcher stdio. Пакет @hasdata/google-scholar-mcp выполняет эту роль и считывает ключ из переменной окружения. Добавьте следующий фрагмент в claude_desktop_config.json:

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

Если вместо Node вы используете Python, замените launcher на пакет из PyPI. Его можно запустить с помощью uvx без предварительной установки:

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

Cursor

Используйте ~/.cursor/mcp.json, чтобы подключить сервер для всех проектов, или .cursor/mcp.json — для одного проекта:

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

Windsurf

Настройки хранятся в ~/.codeium/windsurf/mcp_config.json. В Windsurf поле называется serverUrl, а не url:

{
  "mcpServers": {
    "google-scholar": {
      "serverUrl": "https://mcp.hasdata.com/mcp?apis=google_scholar",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

VS Code

Добавьте настройки в файл .vscode/mcp.json в рабочей области:

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

Примеры запросов

Каждый из этих запросов обращается к одному инструменту или последовательно к двум, если второму нужен идентификатор, возвращённый первым.

  • Найди статьи об архитектурах трансформеров, опубликованные после 2023 года, и отсортируй их по числу цитирований.

  • Кто цитировал эту статью и как менялось число цитирований по годам?

  • Предоставь BibTeX для этой статьи.

  • Найди по этой теме только обзорные статьи, исключив цитирования без полных библиографических записей.

  • Покажи все индексированные версии этой статьи и укажи, у каких из них есть PDF.

  • Найди недавние работы этого автора по данной теме.

Для запроса с названием статьи нужны два вызова: сначала поиск, чтобы получить её resultId, затем поиск сведений о цитировании. Запрос о том, кто цитирует статью, тоже требует двух вызовов: во втором используется citedBy.citesId, полученный в первом.

Инструменты

ИнструментЧто возвращает
hasdata_google_scholar_cite_getScholarCitationFormatsОформленные варианты цитирования (MLA, APA, Chicago, Harvard, Vancouver) и ссылки для экспорта в менеджеры библиографии (BibTeX, EndNote, RefMan, RefWorks). 10 кредитов за вызов
hasdata_google_scholar_scholar_getScholarSearchResultsКаждый результат органической выдачи: название, ссылка, краткое описание, сведения о публикации (авторы со ссылками на профили), число и ссылка на цитирования, ссылка на связанные статьи, количество всех версий и другие данные. 10 кредитов за вызов

Доступны два инструмента; каждый успешный вызов стоит 10 кредитов.

Получение результатов поиска Scholar

hasdata_google_scholar_scholar_getScholarSearchResults

Возвращает страницу результатов Scholar.

ПараметрТипОбязательныйПримечания
qstringдаПоисковый запрос. Поддерживаются операторы Scholar, например author: и source:
asYlo / asYhinumberНижняя и верхняя границы года публикации
startnumberСмещение в результатах: 0 соответствует первому результату
numnumberКоличество результатов на странице
scisbdnumber1 сортирует аннотации по дате, 2 — все результаты по дате. Не указывайте параметр, чтобы сортировать по релевантности
citesstringПоиск статей, цитирующих указанную работу. Используйте citedBy.citesId
clusterstringПоиск всех индексированных версий статьи. Используйте versions.clusterId
asSdtstringТип поиска: 0,5 — статьи, 4 — судебная практика, 0 или 7 — патенты
asRrnumberЗначение 1 возвращает только обзорные статьи
asVisnumberЗначение 1 исключает цитирования, 0 включает их
hlstringЯзык интерфейса; доступно 159 языков
lrarrayОграничение поиска указанными языками контента
safestringЗначение active или off
filternumberЗначение 1 сохраняет фильтры Google для похожих и исключённых результатов, 0 отключает их

В ответе содержатся searchInformation с полями totalResults, queryDisplayed и временем, указанным Scholar, массив organicResults и данные pagination.

Для каждого результата возвращаются position, resultId, title, link, snippet, объект publicationInfo, массив resources, а также citedBy, versions, relatedPagesLink и citeHasdataLink.

Особенно полезно поле publicationInfo.authors. Помимо исходной строки summary, в нём перечислены авторы, для которых в Scholar есть профили. Для каждого автора указаны name, ссылка на профиль link и authorId. С помощью этих данных можно находить публикации конкретного автора, не разбирая строку с именами авторов.

Поля citedBy и versions содержат идентификаторы, которые позволяют использовать этот инструмент для последовательных поисков. Значение citedBy.citesId можно передать в cites, чтобы проследить цепочку цитирований, а versions.clusterId — в cluster, чтобы найти все индексированные копии одной статьи.

{
  "position": 1,
  "resultId": "A7L9JolPKkoJ",
  "title": "A historical survey of advances in transformer architectures",
  "link": "https://www.mdpi.com/2076-3417/14/10/4316",
  "snippet": "… of the Vision Transformer (ViT) opening a new realm of architectures which build … transformer architecture, it becomes pertinent to examine in detail the architecture of the transformer …",
  "publicationInfo": {
    "summary": "AR Sajun, I Zualkernan, D Sankalpa - Applied Sciences, 2024 - mdpi.com",
    "authors": [
      { "name": "AR Sajun", "authorId": "k6zWX4EAAAAJ", "link": "https://scholar.google.com/citations?user=k6zWX4EAAAAJ&hl=en" }
    ]
  },
  "resources": [{ "fileFormat": "Html", "title": "mdpi.com", "link": "https://www.mdpi.com/2076-3417/14/10/4316" }],
  "citedBy": { "total": 97, "citesId": "5344171358311789059" },
  "versions": { "total": 7, "clusterId": "5344171358311789059" }
}

Получение форматов цитирования Google Scholar

hasdata_google_scholar_cite_getScholarCitationFormats

Блок с вариантами цитирования одной статьи.

ПараметрТипОбязательныйПримечания
qstringдаresultId из результатов поиска, а не поисковый запрос
hlstringЯзык интерфейса

Возвращает citations — строки с оформлением по MLA, APA, Chicago, Harvard и Vancouver, а также links — URL для экспорта в BibTeX, EndNote, RefMan и RefWorks.

{
  "citations": [
    {
      "title": "APA",
      "snippet": "Sajun, A. R., Zualkernan, I., & Sankalpa, D. (2024). A historical survey of advances in transformer architectures. Applied Sciences, 14(10), 4316."
    }
  ],
  "links": [
    { "name": "BibTeX", "link": "https://scholar.googleusercontent.com/scholar.bib?q=info:A7L9JolPKkoJ:scholar.google.com/&output=citation..." }
  ]
}

Ошибки и сценарии сбоев

Учитывайте эти особенности, а не рассчитывайте на то, что всё всегда работает без ошибок.

В инструменте для получения цитат параметр q принимает идентификатор статьи, а не поисковый запрос. В него нужно передать resultId из результатов поиска, например A7L9JolPKkoJ. Если указать название статьи или DOI, полезных результатов не будет. Причина распространённой ошибки — одинаковое имя параметра в разных инструментах.

Значения citesId и clusterId могут совпадать, но сами параметры не взаимозаменяемы. Для статьи выше они были одинаковыми. Значение cites используют, чтобы найти статьи, цитирующие эту работу, а cluster — чтобы найти другие версии той же работы. Если передать правильный идентификатор не тому параметру, можно получить правдоподобную страницу, но с неподходящими результатами.

Поле type присутствует не во всех результатах. В одном из пяти результатов оно указывало формат основного ресурса. Чтобы определить, доступен ли PDF, проверяйте resources[].fileFormat.

Ссылка BibTeX — это URL Google Scholar с подписью, а не сам файл BibTeX. Массив links содержит адреса для получения данных. В них используются временные токены scisig, поэтому переходите по ссылкам сразу, а не сохраняйте их на потом.

totalResults — приблизительная оценка Google Scholar, причём довольно неточная. Для приведённого выше запроса было указано 2,080,000 результатов. Рассматривайте это число только как порядок величины, а не как точный подсчёт.

Google Scholar считает цитирования, а не оценивает качество работ; кроме того, он индексирует препринты, диссертации и записи, содержащие только сведения о цитировании. Если нужны записи с полными метаданными, параметр asVis: 1 исключает записи, содержащие только сведения о цитировании.

При глубокой пагинации результаты становятся менее полными. Google Scholar ограничивает глубину выдачи и начинает повторять результаты или блокировать запросы задолго до того, как будет достигнута указанная оценка. Вместо последовательного увеличения start сужайте поиск с помощью asYlo, asYhi или asSdt.

Результаты, содержащие данные, также включают requestMetadata.id. Его стоит указывать при обращении в службу поддержки.

Стоимость, бесплатный тариф и ограничения

Каждый инструмент Scholar стоит 10 кредитов за успешный вызов. Размер ответа на стоимость не влияет, поэтому для расширения поиска выгоднее увеличить num.

Бесплатный тариф включает 1 000 кредитов в месяц без привязки карты — это 100 вызовов Scholar по базовой ставке. Кредиты обновляются с началом нового расчётного периода, поэтому агент с небольшим объёмом запросов может пользоваться бесплатным тарифом постоянно.

Платные тарифы начинаются от $59 в месяц за 200 000 кредитов — этого хватит на 20 000 вызовов. При увеличении объёма цена за единицу снижается: с $2.95 за 1 000 вызовов на начальном тарифе до $1.19 на Basic и $0.83 на тарифах Growth. Актуальные цены указаны на странице тарифов.

Тариф также определяет допустимое количество одновременных запросов. Бесплатный тариф позволяет выполнять 1 запрос за раз, Startup — 5, Basic — 15, а тарифы Growth — от 50 до 500. Для запросов, выполняемых без присмотра, настройте повторные попытки с увеличивающейся задержкой при получении ответа 429: агент, обходящий граф цитирований, достигнет лимита раньше, чем вы заметите проблему.

Запрос, завершившийся ответом с кодом, отличным от 200, не тарифицируется. Успешный вызов, не вернувший результатов, всё равно считается вызовом.

Выбор инструмента

Начинайте с того, что указано в запросе. Для темы, автора или диапазона лет используйте инструмент поиска. Если у вас уже есть resultId, сразу вызывайте инструмент для получения цитат.

Затем определите, какой идентификатор нужен для следующего шага. Для обзора литературы достаточно одного поискового вызова с большим значением num. Чтобы построить граф цитирований, выполните поиск, а затем вызовите cites для каждой статьи, которую нужно проследить. Чтобы устранить дубликаты препринтов и опубликованных версий, вызывайте cluster для каждой статьи. Во всех этих случаях используется идентификатор из первого ответа, поэтому повторный поиск обычно не нужен.

Перед тем как переходить к следующей странице, увеличьте num. Стоимость зависит от количества вызовов, а не результатов, поэтому одна широкая страница выгоднее трёх узких.

Сравнение с альтернативами

У Google Scholar нет публичного API, поэтому сравнивать его имеет смысл с открытыми библиографическими API.

OpenAlex или Semantic ScholarЭтот сервер
ДоступОткрытый доступ, для базового использования ключ не нуженТребуется ключ API
ОхватБольшой, курируемый, с акцентом на DOIДанные, индексируемые Scholar, включая диссертации и препринты
Количество цитированийСобственные данные, рассчитанные на основе графаДанные Scholar в том виде, в котором они отображаются
Форматы цитированияИх нужно формировать самостоятельно по метаданнымMLA, APA, Chicago, Harvard и Vancouver в оформлении Scholar
Ссылки на полные текстыDOI и источники с открытым доступомСсылки на ресурсы, которые показывает Scholar, включая PDF
Структурированные метаданныеПодробные, типизированныеВ том виде, в котором их показывает страница

Решающим фактором будет то, чьи данные о цитировании вам нужны. Для библиометрического анализа с использованием типизированных и стабильных метаданных лучше подойдут OpenAlex и Semantic Scholar; они бесплатны. Этот сервер стоит выбрать, если вас интересует именно то, что показывает Google Scholar и на что обычно ориентируются исследователи, или если вам нужна готовая запись цитирования, а не поля для её самостоятельного формирования.

Часто задаваемые вопросы

Есть ли официальный MCP-сервер Google Scholar?

Google не публикует такой сервер, и у Scholar также нет публичного API. Этот сервер поддерживает HasData; он работает с общедоступными страницами Scholar.

Что такое MCP-сервер Google Scholar?

MCP-сервер предоставляет инструменты, которые может вызывать AI-клиент. Этот сервер преобразует результаты поиска Scholar и блоки цитирования в JSON, который агент может анализировать. Для этого в стеке не нужны браузер или библиотека для скрейпинга.

Нужен ли аккаунт Google?

Нет. Единственные учётные данные, которые нужны, — ключ HasData.

Как получить BibTeX для статьи?

Потребуются два вызова. Сначала выполните поиск, чтобы получить resultId статьи. Затем передайте этот идентификатор как q инструменту для получения цитат и возьмите URL BibTeX из links.

Как найти все статьи, которые цитируют заданную работу?

Возьмите citedBy.citesId из результата поиска и передайте его как параметр cites. Ответ будет содержать цитирующие статьи; для него действует обычная пагинация результатов поиска.

Чем отличаются cites и cluster?

Параметр cites позволяет найти статьи, цитирующие указанную работу. cluster находит другие индексированные версии этой же работы, например препринт рядом с опубликованной статьёй. Идентификаторы часто выглядят одинаково, поэтому выбирайте параметр исходя из того, что именно нужно найти, а не по значению идентификатора.

Можно ли искать по автору?

Да. Используйте оператор Scholar в параметре q, например author:"J Dean". В результатах поиска также есть authorId для авторов с профилем Scholar; этот идентификатор надёжнее.

Можно ли использовать этот сервер вместе с другими API HasData?

Да. Один ключ подходит для всех API, а один endpoint обслуживает их через параметр apis. Укажите для клиента ?apis=google_scholar,google_serp, чтобы получить оба набора инструментов в одном подключении, или используйте mcp.hasdata.com/api/mcp, чтобы получить полный каталог.

Связана ли HasData с Google?

Нет. HasData — независимый сервис, не связанный с Google и не получивший от него одобрения или спонсорской поддержки. Google Scholar — товарный знак его соответствующего владельца. Инструменты работают только с общедоступными данными. Вы несёте ответственность за использование результатов в соответствии с условиями Google и применимым законодательством.

Соблюдение требований и персональные данные

Имена авторов, сведения об их организациях и идентификаторы профилей Scholar относятся к персональным данным, даже если они опубликованы как часть научных записей. Составление профиля публикационной активности отдельного исследователя отличается от подсчёта цитирований по теме; в первом случае следует внимательнее отнестись к целям обработки и срокам хранения данных. На сами статьи распространяются собственные лицензии, поэтому наличие ссылки не даёт права распространять PDF.

Ссылки HasData

Другие MCP-серверы HasData: Google Search, Google Images, Google Maps, Google Trends, Bing, DuckDuckGo, YouTube, TikTok, Instagram, Amazon, Walmart, Shopify, Yelp, Yellow Pages, Zillow, Redfin, Airbnb, Booking.com, Indeed, Glassdoor.

Разработка

Запускатель представляет собой простой мост stdio к удалённому серверу, поэтому сборка не требуется.

npm install
HASDATA_API_KEY=your_key_here npm test

Тесты в test/ проверяют контракт инструментов — то, что может измениться без коммита в этом репозитории. Они проверяют, что ?apis=google_scholar возвращает два ожидаемых инструмента, их имена не изменились, оба по-прежнему требуют q и содержат описания, параметры поиска, описанные в этом README, по-прежнему указаны в схеме, а используемый ключ действителен.

Ещё два теста проверяют дополнительные сценарии. Первый подтверждает, что живой поиск по-прежнему возвращает resultId, citedBy.citesId и versions.clusterId: именно эти три идентификатора позволяют комбинировать инструменты, а по остальным данным ответа их потерю обнаружить нельзя. Второй передаёт resultId напрямую в инструмент цитирования — это описанный в README сценарий из двух вызовов — и проверяет, что возвращаются все пять стилей. Один запуск обходится в 20 кредитов — такова цена проверочного теста, который способен выявить именно нужный сбой.

Набор тестов контракта также запускается каждую неделю по расписанию: список инструментов на стороне сервиса может измениться независимо от этого репозитория.

Участие в разработке

Если таблица инструментов, пример ответа или описанное поведение не соответствуют действительности, сообщите об этом в issue — для таких случаев предусмотрен отдельный шаблон. Pull request с исправлениями также приветствуются, как и предложения по улучшению запускателя.

Лицензия

MIT. См. LICENSE.