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. Примеры для остальных клиентов соответствуют их документации по подключению удалённых серверов.
| Поле | Значение |
|---|---|
| URL | https://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.
| Параметр | Тип | Обязательный | Примечания |
|---|---|---|---|
q | string | да | Поисковый запрос. Поддерживаются операторы Scholar, например author: и source: |
asYlo / asYhi | number | Нижняя и верхняя границы года публикации | |
start | number | Смещение в результатах: 0 соответствует первому результату | |
num | number | Количество результатов на странице | |
scisbd | number | 1 сортирует аннотации по дате, 2 — все результаты по дате. Не указывайте параметр, чтобы сортировать по релевантности | |
cites | string | Поиск статей, цитирующих указанную работу. Используйте citedBy.citesId | |
cluster | string | Поиск всех индексированных версий статьи. Используйте versions.clusterId | |
asSdt | string | Тип поиска: 0,5 — статьи, 4 — судебная практика, 0 или 7 — патенты | |
asRr | number | Значение 1 возвращает только обзорные статьи | |
asVis | number | Значение 1 исключает цитирования, 0 включает их | |
hl | string | Язык интерфейса; доступно 159 языков | |
lr | array | Ограничение поиска указанными языками контента | |
safe | string | Значение active или off | |
filter | number | Значение 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
Блок с вариантами цитирования одной статьи.
| Параметр | Тип | Обязательный | Примечания |
|---|---|---|---|
q | string | да | resultId из результатов поиска, а не поисковый запрос |
hl | string | Язык интерфейса |
Возвращает 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
-
Документация Google Scholar API — REST-эндпоинты, на которых основаны эти инструменты
Другие 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.