YGao2005/scholar-feed-mcp

YGao2005/scholar-feed-mcp

от ygao2005
MCP-сервер для поиска более 600 000 научных статей по CS/AI/ML с LLM-анализом новизны. Помогает исследователям проводить литературный обзор и отслеживать тренды прямо в Claude Code или Cursor.

Scholar Feed

Scholar Feed MCP Server

CI npm version Node License: MIT smithery badge

Research paper search with ranking and citation tracking, for LLM engineering and academic research, without leaving Claude Code, Cursor, or any MCP client.

Most paper tools hand back a flat list. Scholar Feed ranks it: sort by relevance, by proven citation count, or by rising impact, then trace any paper's citation lineage forward and backward across 22M+ edges. 600k+ CS/AI/ML papers, updated daily, each with an LLM-generated summary and novelty score.

Scholar Feed indexes arXiv papers daily and ranks them on recency, citation velocity, institutional reputation, and code availability.

Quick Start

npx scholar-feed-mcp@latest init

This interactive wizard will:

  1. Optionally ask for an API key (or skip for anonymous access)
  2. Detect your MCP client (Claude Code, Cursor, or Claude Desktop)
  3. Write the config and verify the connection

No API key required. Anonymous access gives you 200 calls/month, enough for a typical research session. For a higher quota (500/month per account) plus your library — collections, saved papers and watches — get a free key at scholarfeed.org/settings.

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

Инструменты были проиндексированы:
add_to_collection

Добавляет статью в коллекцию, адресуемую по collection_id ИЛИ collection_name (получить-или-создать по имени — не нужно сначала искать id). Вложенность через "/": имя коллекции "AgentOPA/Formal" помещает статью в папку "AgentOPA". МУТИРУЕТ: также автоматически сохраняет статью в библиотеку. Идемпотентна (добавление уже находящейся в коллекции статьи ничего не делает). Требует SF_API_KEY.

Добавить в коллекцию

Параметры
  • arxiv_idstringобязательный

    arXiv ID статьи для добавления, например '2407.15831'.

  • collection_idstring

    UUID существующей коллекции. Укажите его ИЛИ collection_name.

  • collection_namestring

    Название коллекции. Создаётся, если она не существует. Используйте '/' для вложенности, например 'AgentOPA/Formal'. Укажите это ИЛИ collection_id.

annotate_paper

Записывает ВАШ вердикт по статье: почему она важна для вашей работы, когда её использовать или почему вы её отклонили. Одна заметка на статью, upsert (повторная запись заменяет её), поэтому вызывать можно сколько угодно раз. Требует SF_API_KEY. ПОЧЕМУ ЭТО ВАЖНО: эта заметка - единственное, что переживает между сессиями. list_library возвращает note_text для каждой сохранённой статьи, поэтому вердикт, записанный сейчас, будущая сессия прочитает ВМЕСТО перечитывания статьи и повторного вывода того же заключения. ПИШИТЕ СУЖДЕНИЕ, А НЕ КРАТКОЕ СОДЕРЖАНИЕ: в статье уже есть llm_summary и аннотация, поэтому пересказ содержания статьи ничего не добавляет. Пишите то, чего они не могут: как статья относится к ВАШЕЙ задаче. Предпочитайте утверждение, которое кто-то позже сможет опровергнуть («нужен размеченный журнал трассировки, которого у нас нет», «наш бейзлайн: побейте его на конфигурации 7B»), а не неопровержимый вердикт («интересно», «не очень релевантно»), потому что механизм можно перепроверить, когда обстоятельства меняются, а впечатление - нет. Указывайте основание, когда оно шаткое: вердикт, сформированный только по аннотации, заслуживает пометки «(только аннотация)», поскольку fetch_fulltext по умолчанию берёт около 800 символов раздела результатов, а не всю статью. Передайте action='get', чтобы прочитать существующую заметку перед перезаписью: это стоит сделать, если предыдущая сессия уже могла оценить эту статью. Чтобы исправить заметку, просто напишите исправленный текст (он заменит старый).

Аннотирует статью

Параметры
  • actionenum

    'upsert' (по умолчанию) записывает или заменяет заметку. 'get' возвращает текущую заметку, не изменяя её. Удаления намеренно нет: ошибочную заметку исправляют перезаписью, что делает этот инструмент неразрушающим.

  • arxiv_idstringобязательный

    arXiv ID статьи, которую нужно аннотировать, например '2407.15831'.

  • note_textstring

    Ваш вердикт (максимум 5000 символов). Требуется для upsert по умолчанию; игнорируется для action='get'.

ask_libraryтолько чтение

Отвечает на вопрос, используя ТОЛЬКО сохранённые статьи - синтез по вашей библиотеке (или одной коллекции) со встроенными цитатами [arXiv-ID]. Обратная функция для find_gaps (которая находит важные работы, которых вам НЕ ХВАТАЕТ): ask_library рассуждает на основе того, что У ВАС ЕСТЬ. Опционально ограничивает область одной коллекцией (collection_name или collection_id); если опустить оба, используется вся библиотека. Только чтение. Требует SF_API_KEY (читает ваш сохранённый набор). Бесплатные аккаунты получают 1 вопрос в месяц; Pro увеличивает это до 200 в день.

Ask Library

Параметры
  • collection_idstring

    Ограничьте ответ одной коллекцией по UUID. Если не указать, будет использована вся библиотека.

  • collection_namestring

    Ограничьте ответ одной коллекцией по имени (имя определяется бэкендом). Если не указано, используется вся библиотека.

  • limitinteger

    Сколько из ваших наиболее релевантных сохранённых документов использовать для обоснования ответа (максимум 20). По умолчанию 8.

  • questionstringобязательный

    Вопрос на естественном языке, на который нужно ответить, используя ваши сохранённые документы.

check_driftтолько чтение

Отвечает на вопрос «превзойдён ли метод, который я использую, и чем?» на основе обоснованной базы знаний с разрешением сущностей, содержащей текстовые записи критики и рёбра доминирования в бенчмарках (без вызова LLM во время запроса). Принимает family (например, 'rag', 'peft', 'kvcache') и method (например, 'SnapKV', 'LoRA') и возвращает вердикт: насколько метод превзойдён, КТО его критикует (дословные цитаты + цитирующая статья), КТО обходит его в бенчмарках (победитель, цифры, условия, исходная статья) и какие альтернативы в той же подзадаче ещё не превзойдены. Без method возвращает карту всего семейства: наиболее превзойдённые бейзлайны, конкурирующие подзадачи и актуальный рубеж. Имена методов сопоставляются без учёта регистра и пробелов, а при отсутствии совпадения выдаются подсказки «возможно, вы имели в виду». Это полезно при выборе или рецензировании техники для известной проблемной области, а также для проверки, превзойдён ли бейзлайн, на который опирается статья. Не требует Pro API-ключа. Охватывает около 10 семейств задач разработчика и продолжает расширяться; параметр family перечисляет их, или можно передать family='list' для актуального набора. Оговорка о покрытии: данные берутся только из таблиц бенчмарков arXiv, поэтому «превзойдён» означает, что метод был побит в опубликованном сравнении (а не то, что он мёртв или непригоден), продакшен-фреймворки (LangChain, LlamaIndex и т.д.) появляются только как бейзлайны и никогда как победители, а результаты - это сигнал из литературы, а не рекомендация к развёртыванию. ОБОСНОВАННОСТЬ: насколько можно доверять отдельной записи. Каждое утверждение проходит через детерминированный фильтр, сверяющийся с исходным LaTeX статьи (критика должна содержать дословную цитату-шингл, найденную в источнике; ребро бенчмарка должно содержать все свои числа в источнике), так что выдуманная цитата или ячейка таблицы не может попасть в базу знаний. Чего фильтр НЕ проверяет, так это АТРИБУЦИЮ: цитата настоящая, но её субъект может быть на уровне класса или местоимением («эти методы», «они»), а не конкретным названным методом, поэтому отнести запись к конкретному методу иногда можно только путём логического вывода. Сквозная точность не измерялась…

Проверить Drift (мой метод устарел?)

Параметры
  • familystring

    Семейство задач для запроса, например, 'rag' (генерация с дополнением поиска), 'peft' (эффективная тонкая настройка параметров), 'kvcache' (сжатие KV-кэша). Опустите его (или передайте неизвестное семейство, например, 'list'), чтобы получить актуальный список доступных семейств для выбора — начните здесь, если вы не знаете семейство для метода.

  • limitinteger

    Максимум элементов в списке - чеки, рёбра доминирования, граница (3–50, по умолчанию 12).

  • methodstring

    Метод для проверки, например, 'SnapKV', 'H2O', 'StreamingLLM' (без учёта регистра и пробелов). Опустите, чтобы получить карту всего семейства вместо вердикта по одному методу.

check_watchesтолько чтение

Получает новые подходящие статьи с момента последней доставки дайджеста в том же формате, что и результаты search_papers. Опционально ограничивает область одним наблюдением по watch_name или watch_id; если оба опущены — применяет ко всем наблюдениям. Только для чтения и идемпотентный — НЕ продвигает никакой watermark (только доставка дайджеста делает это), поэтому его можно безопасно вызывать многократно (без отметки о прочтении). Это внутрисессионный запрос «что нового в моих наблюдениях?». Требует SF_API_KEY.

Проверяет часы

Параметры
  • limitinteger

    Максимум результатов для возврата (не более 100).

  • watch_idstring

    Ограничьте область действия одним watch по UUID. Укажите это или watch_name. Если не указано ни то, ни другое, возвращаются все.

  • watch_namestring

    Ограничьте область действия одним watch по имени. Укажите это ИЛИ watch_id, либо ни то, ни другое для всех.

co_author_graphтолько чтение

Находит окрестность соавторства одного или нескольких авторов. Получает список author_ids, возвращает ребра {from, to, papers_count, last_collab_year}, где 'from' — один из входных авторов, а 'to' — любой соавтор, появившийся в совместной статье в пределах окна. Используется для сортировки рецензентов AC (поиск конфликтов), уточнения исследователей (с кем они на самом деле работают?) или расширения начального набора авторов до исследовательского сообщества. window_years по умолчанию 10. Результат ограничен 500 ребрами, отсортирован по papers_count DESC.

Co-Author Graph

Параметры
  • author_idsinteger[]обязательный

    Запрашивает идентификаторы авторов (1-25). Получите идентификаторы авторов через инструмент find_author.

  • window_yearsinteger

    Подсчитывайте только соавторства за последние N лет (по умолчанию 10, максимум 30).

create_collection

Создаёт новую именованную коллекцию. MUTATES. Если коллекция с таким именем уже существует, возвращает существующую (get-or-create — никогда не вызывает ошибку при дубликате). Используйте "/" для вложения в папку, например "AgentOPA/Formal" — папка определяется из имени, поэтому не нужно сначала создавать родительскую. Требуется SF_API_KEY.

Создаёт коллекцию

Параметры
  • namestringобязательный

    Название для коллекции, например, 'KV-cache compression'. Используйте '/' для вложения: 'AgentOPA/Formal' помещает её в папку 'AgentOPA'.

create_watch

Создаёт постоянное наблюдение - ежедневно проверяется по вновь проиндексированным статьям, выводит новые совпадения через дайджест по электронной почте и через check_watches. МУТИРУЕТ. Получает или создаёт по имени (повторное создание с существующим именем возвращает его без изменений - никогда не выдаёт ошибку при дубликате). ДВЕ формы: (1) структурированный фильтр v2 через criteria (collections/authors/categories/text/has_code/min_novelty/similar, объединённые по И) - компонуемая, настраиваемая агентом форма, рекомендуется; сначала настройте с помощью preview_watch, а затем отредактируйте через update_watch. Структурированные наблюдения по умолчанию ранжируются по 'rising' (прогнозируемый прорывной импакт) и ужесточаются с помощью min_impact_pct для наблюдения, фильтрующего шум и показывающего только прорывные статьи в вашей нише. (2) один устаревший селектор-источник (q ИЛИ collection_name ИЛИ collection_id ИЛИ anchor_paper_id); если указан criteria, он имеет приоритет. Требуется SF_API_KEY.

Создаёт наблюдатель

Параметры
  • anchor_paper_idstring

    Отслеживает статьи, похожие на этот arXiv ID. Только один выбор начальной точки.

  • author_idstring

    Отслеживает новые работы автора по идентификатору автора. Только один селектор начального значения.

  • categorystring

    Следите за категорией arXiv (например, 'cs.LG'), отфильтрованной по novelty_min. Только один выбор сидера.

  • collection_idstring

    Отслеживает окружение коллекции по UUID. Только один селектор начальных элементов.

  • collection_namestring

    Отслеживает окрестность коллекции по имени (резолвится бэкендом). Только один seed-селектор.

  • criteriaobject

    v2 STRUCTURED фильтр (collections/authors/categories/text/has_code/min_novelty/similar). Когда указан, он определяет watch (kind='filter'), а односелекторные начальные значения выше ИГНОРИРУЮТСЯ. Это компонуемая, настраиваемая агентом форма. Сначала вызовите preview_watch, чтобы настроить её.

  • namestringобязательный

    Подпись для watch, например: «новая работа с KV-кэшем».

  • novelty_minnumber

    Показывай только статьи с оценкой новизны не ниже этого значения (0..1). Регулятор сигнал/шум: подними его, чтобы показывать только действительно важное. По умолчанию 0.5.

  • qstring

    Семантическое/ключевое семя темы. Только один селектор семян.

  • recency_daysinteger

    Для структурированного отслеживания (по критериям): учитывайте только статьи за последние N дней (по умолчанию 7; для связи 'cites' — 30).

  • scope_to_citations_ofstring

    Отслеживает новые статьи, цитирующие этот arXiv ID. Только один селектор начальной точки.

delete_watch

Удаляет отслеживание, заданное по watch_id ИЛИ имени. ИЗМЕНЯЕТ. Идемпотентно: удаление несуществующего отслеживания не выполняет никаких действий (без ошибки). Чтобы изменить отслеживание на месте (rename / novelty_min / retarget criteria), используйте update_watch вместо delete-and-recreate. Требует SF_API_KEY.

Удалить отслеживание

Параметры
  • namestring

    Название часов, которые нужно удалить. Укажите его или watch_id.

  • watch_idstring

    UUID удаляемых часов. Укажите это ИЛИ имя.

embed_textтолько чтение

Встраивает текстовую строку в 768-мерный вектор Gemini Flash. Используется для поиска в стиле HyDE: (1) создаёт гипотетическую короткую статью, которая идеально отвечает на запрос пользователя, (2) встраивает её с task_type='RETRIEVAL_DOCUMENT' (по умолчанию — соответствует стороне эмбеддингов корпуса), (3) передаёт полученный эмбеддинг обратно через инструменты поискового типа, чтобы найти реальные статьи, ближайшие к гипотетической. task_type='RETRIEVAL_QUERY' соответствует стороне запроса и полезен для прямого встраивания запроса пользователя без HyDE. Только для Pro — требует SF_API_KEY на аккаунте Pro; анонимные и бесплатные вызывающие получают ошибку 403 pro_required. Стоимость: ~$0,0001 за вызов; ограничение скорости: 30 запросов в минуту на один ключ API.

Встраивает текст

Параметры
  • task_typeenum

    RETRIEVAL_DOCUMENT (по умолчанию) сопоставляет эмбеддинги на стороне документа — используйте для HyDE. RETRIEVAL_QUERY сопоставляет семантический поиск на стороне запроса.

  • textstringобязательный

    Текст для встраивания (1-8000 символов). Для HyDE-потоков это ваш гипотетический ответ/аннотация.

fetch_fulltextтолько чтение

Читает фактический текст статей arXiv по разделам. Выбор раздела управляет расходом контекста: запрашивайте один или два нужных раздела, а не всю статью: «all» это примерно 13,5 КБ на статью, а для 8 статей около 108 КБ. Названия разделов выводятся автоматически: проверьте low_confidence_sections, прежде чем считать какой-то раздел собственным заголовком статьи. Источником служит HTML arXiv с разметкой разделов, затем LaTeX, затем PDF; код 404 означает, что все три варианта не сработали.

Получает полный текст

Параметры
  • arxiv_idstring

    arXiv ID одной статьи.

  • arxiv_idsstring[]

    До 8 arXiv ID, по одной записи на статью. sections обязателен, если ID больше одного.

  • sectionsenum | enum[]

    Одно название раздела или массив. По умолчанию 'all' для одной статьи; для пакета нет значения по умолчанию.

find_authorтолько чтение

Двухрежимный инструмент для работы с авторами. Укажите ровно один из параметров: q или id. Q-MODE (q=...): ищет исследователей по теме или имени. Использует сходство эмбеддингов для тем ('efficient LLM inference') и нечёткое сопоставление для имён ('Yann LeCun'). Возвращает список подходящих авторов с полями author_id, name, h_index, total_papers, primary_field, research_topics. ID-MODE (id=...): получает профиль одного автора по author_id (полученному из предыдущего вызова в режиме q-mode или из результатов co_author_graph). Возвращает h-index, общее количество цитирований, глобальный рейтинг, основную область, распределение оценок новизны, исследовательские темы, оценки code/venue, годы активности и топ-10 статей автора по рейтинговому баллу.

Находит автора

Параметры
  • fieldstring

    (только q-mode) Фильтрует по основной области исследования, например 'cs.LG', 'cs.CV', 'cs.CL'.

  • idinteger

    ID автора для прямого поиска профиля (id-mode). Возвращает профиль одного автора с 10 лучшими статьями. Получает ID из результатов q-mode или co_author_graph.

  • limitinteger

    (только q-mode) Максимум результатов для возврата (по умолчанию 20).

  • qstring

    Тема или имя исследователя для поиска (q-mode). Возвращает список соответствующих авторов. Примеры: 'efficient transformer training', 'Geoffrey Hinton'.

find_gapsтолько чтение

Находит важные работы, которые вы НЕ СОХРАНИЛИ для коллекции или темы: анализ «что я упускаю?». Возвращает две категории: foundational_gaps (канонические якоря графа цитирования в нише, отсутствующие в вашей библиотеке) и frontier_gaps (недавние высокооригинальные работы в нише, ещё не сохранённые). Принимает ровно один источник: collection_name, collection_id или topic. Бэкенд определяет нишу, выполняет поиск по цепочке цитирования и недавним новинкам, а затем вычитает ваше сохранённое множество. Только для чтения. Требует SF_API_KEY (он нужен для вычитания вашей библиотеки) и доступен только в Pro, бесплатные аккаунты увидят предложение обновить тариф.

Find Research Gaps

Параметры
  • collection_idstring

    Анализирует пробелы для коллекции по UUID. Предоставляет ровно одно начальное значение.

  • collection_namestring

    Анализирует пробелы для коллекции по имени (разрешается бэкендом). Предоставляет ровно один сид.

  • limitinteger

    Максимум пропусков на сегмент (макс. 50). По умолчанию 10.

  • scopeenum

    Какие пробелы показывать: «фундаментальные» (канонические якоря, которых вам не хватает), «передовые» (недавние новые работы, которые вы не сохранили) или «оба» (по умолчанию).

  • topicstring

    Проанализируйте пробелы для темы/области, заданной свободным текстом. Предоставьте ровно одно семя.

get_citationsтолько чтение

Получает граф цитирования для статьи, отсортированный по rank_score цитирующей статьи (сначала с наибольшим влиянием). 'citing' = исходящие ссылки, которые цитирует эта статья; 'cited_by' = входящие цитирования из других статей. Ответ по умолчанию — компактная форма с 12 полями на статью — передайте verbose=true для полной формы с 28 полями.

Получает цитаты

Параметры
  • arxiv_idstringобязательный

    arXiv ID статьи

  • directionenum

    'citing' = исходящие ссылки, на которые ссылается эта статья; 'cited_by' = входящие цитирования из других статей

  • exclude_idsstring[]

    Идентификаторы arXiv, которые нужно исключить из результатов (чтобы убрать дубликаты при цепочке вызовов).

  • fieldsstring

    Список возвращаемых полей через запятую (например, 'arxiv_id,title,llm_summary,llm_novelty_score'). Если не указано, возвращается стандартный набор из 12 полей, если verbose=true не задан.

  • limitinteger

    Количество статей для возврата (максимум 50)

  • verboseboolean

    Если true, возвращает полную форму документа из 28 полей. По умолчанию false возвращает компактный набор из 12 полей. Игнорируется, когда предоставлен fields.

get_field_orientationтолько чтение

Возвращает КАНДИДАТОВ В ФУНДАМЕНТАЛЬНЫЕ РАБОТЫ для исследовательской темы: только дешёвый поиск, без синтеза. Ранжирует работы по смеси числа цитирований (вес 0.6, отражает важность) и семантического сходства с вашей темой (вес 0.4). Используйте это, чтобы начать обзор литературы или быстро оценить ландшафт. Для синтезированного ориентировочного отчёта (ключевые концепции, открытые проблемы, порядок чтения) используйте навык /field-guide, который внутри себя вызывает этот инструмент. Не требует ключа Pro API. Вызовы LLM не производятся.

Получает ориентацию поля

Параметры
  • limitinteger

    Количество кандидатных статей для возврата (5–30, по умолчанию 15).

  • topicstringобязательный

    Область исследования, на которую стоит ориентироваться. Будьте конкретнее для лучших результатов. Примеры: «модели диффузии для предсказания структуры белков», «эффективные механизмы внимания для LLM с длинным контекстом», «графовые нейронные сети для предсказания свойств молекул».

get_foundational_lineageтолько чтение

Возвращает ОСНОВОПОЛАГАЮЩУЮ РАБОТУ ДЛЯ НИШИ СТАТЬИ через граф цитирования - относительный вопрос («что является основополагающим для конкретной подобласти ЭТОЙ статьи», часто сама эта работа цитируется скромно), а не очевидные глобальные ориентиры. Привязывается к статье, берёт её окрестность эмбеддингов в качестве ниши и ранжирует то, что цитируется в нише, по трём уровням: niche_roots (основополагающие работы для конкретной ниши, ранжированные по тому, насколько специфично окрестность на них опирается - выявляет канонические якоря, которые пропускает семантический поиск), field_level (более широкие вторичные основы) и discipline (универсальные ориентиры, такие как Attention Is All You Need, свёрнутые в сторону). Каждая статья содержит свидетельство cited_by_in_niche, чтобы утверждение было обоснованным, а не голословным. Используйте этот инструмент для отслеживания предшествующих работ / происхождения статьи или для поиска канонических методов, на которых построена ниша. Дополняет get_field_orientation (который привязан к теме и работает только на поиске). Не требует Pro-ключа и вызовов LLM.

Get Foundational Lineage

Параметры
  • anchor_paper_idstringобязательный

    arXiv ID статьи, на которую нужно опираться, например '2504.04704' или '2504.04704v2'. Ниша строится на основе окрестности эмбеддингов этой статьи.

  • generality_ceilingboolean

    Если значение true (по умолчанию), ключевые работы, на которые часто ссылаются, перемещаются в свёрнутый уровень discipline, чтобы на первый план выходили специализированные материалы. Если задать false, ключевые работы остаются на базовых уровнях.

  • limitinteger

    Максимальное количество статей в каждом из уровней niche_roots и field_level (5–40, по умолчанию 15).

  • scopeenum

    Ширина ниши: 'узкая' (~100 ближайших статей, самый узкий подраздел, выявляет корень ниши с малым числом цитирований), 'поле' (~200, по умолчанию), 'широкая' (~400, основы более широкой области).

get_paperтолько чтение

Получает полные сведения об одной или нескольких статьях по arXiv ID. Передайте одноэлементный массив для одной статьи; передайте несколько ID для пакетного получения до 50 статей за один вызов. Передайте format='bibtex', чтобы получить запись цитирования .bib (bibtex работает только для одной статьи; для нескольких статей в формате bibtex вызывайте инструмент повторно). По умолчанию возвращает компактный набор из 13 полей (arxiv_id, title, authors, year, categories, has_code, github_url, citation_count, venue_name, llm_summary, llm_significance, llm_novelty_score, impact_pct): impact_pct - это процентиль влияния по прогнозу ML от 0 до 100, вычисленный ВНУТРИ когорты arXiv-категории самой статьи, то есть это относительный ранг внутри когорты, а не абсолютная оценка; для более старых статей, выпадающих из недавнего окна оценки ~90 дней, он равен NULL. Передайте verbose=true для полного набора полей со структурированным извлечением (method_name, contribution_type, task_category, datasets, baselines) и institution_tags. Используйте fields='arxiv_id,title,abstract', чтобы выбрать точное подмножество полей, или fetch_fulltext с sections='all' для получения полного текста статьи.

Получает документ.

Параметры
  • arxiv_idsstring[]обязательный

    Один или несколько arXiv ID. Для поиска одной статьи используется [id]; при пакетном поиске передаются несколько ID (максимум 50). Пример: ['2407.15831'] или ['2407.15831', '2402.09906'].

  • fieldsstring

    Список полей для возврата, разделенных запятыми (например, 'arxiv_id,title,llm_summary,abstract'). Если не указано, возвращается компактный набор из 12 полей по умолчанию, если только verbose=true.

  • formatenum

    Формат ответа. 'json' (по умолчанию) возвращает структурированные данные статьи. 'bibtex' возвращает библиографическую запись .bib. Режим Bibtex использует первый ID в arxiv_ids.

  • verboseboolean

    Если значение true, возвращается полный набор из 28 полей для статьи (извлечение метода/задачи/набора данных, application_domain, базовые показатели и т. д.). Значение по умолчанию false возвращает сокращённый набор из 12 полей. Параметр игнорируется, если указан fields.

like_paper

Лайкает статью — калибровочный сигнал «больше похожего», который настраивает ленту «Для вас» пользователя на похожие работы. Только INSERT и идемпотентно (двойной лайк — пустая операция, никогда не отменяет лайк). Отличается от save_paper: лайк выражает предпочтение для ранжирования; сохранение добавляет закладку для последующего чтения. Требует SF_API_KEY.

Как бумага

Параметры
  • arxiv_idstringобязательный

    arXiv ID статьи, которую нужно отметить.

list_collectionsтолько чтение

Перечисляет коллекции (именованные группы сохранённых статей) аутентифицированного пользователя с количеством статей. Только для чтения. Используйте перед add_to_collection, чтобы просмотреть существующие коллекции. Требует SF_API_KEY.

Выводит список коллекций

Параметры

Без параметров.

list_libraryтолько чтение

Перечисляет сохранённые статьи пользователя (их библиотеку), сначала новые. Только чтение. Используйте это, чтобы просмотреть список для чтения или увидеть, что уже сохранено, перед тем как сохранить больше. Требуется SF_API_KEY. ФОРМА: вызывающие агенты получают компактную запись — llm_summary (~300 символов) ВМЕСТО аннотации, с опущенными пустыми полями, а не отправленными как null. Каждая статья также несёт состояние, которое превращает это в базу знаний, а не в список закладок: note_text (собственный зафиксированный вердикт пользователя, если он есть), is_read и collections (категории, в которые она помещена, например 'AgentOPA/G4'). СНАЧАЛА читайте note_text. Статья, несущая его, уже была оценена в предыдущей сессии — используйте этот вердикт вместо повторного чтения статьи и повторного вывода. Если его нет, подумайте о том, чтобы записать его с помощью annotate_paper, чтобы следующая сессия унаследовала ваш вывод. Передавайте verbose=true (или fields=...) только когда вам действительно нужна полная аннотация или все 28 полей; по умолчанию запись примерно в 4 раза меньше и подходит для обзора того, что у вас уже есть.

Список библиотек

Параметры
  • fieldsstring

    Поля, разделённые запятыми, для возврата, например 'arxiv_id,title,abstract'. Переопределяет verbose. Состояние библиотеки (note_text/is_read/is_saved/collections) включается всегда, независимо от этого.

  • limitinteger

    Сколько сохранённых документов возвращать (максимум 100)?

  • pageinteger

    Номер страницы для постраничного просмотра большой библиотеки.

  • verboseboolean

    Возвращайте полную структуру статьи (включая аннотацию) вместо краткого варианта по умолчанию. Это стоит примерно в 4 раза больше токенов. Предпочитайте llm_summary, если только вам не нужна точная формулировка аннотации.

list_watchesтолько чтение

Перечисляет watches аутентифицированного пользователя с именем, однострочным кратким описанием, last_evaluated_at и pending_hits (количество новых совпадений с момента последней доставки дайджеста). Только чтение. Используйте перед create_watch, чтобы увидеть, что уже отслеживается. Требуется SF_API_KEY.

Перечисляет наблюдения.

Параметры

Без параметров.

preview_watchтолько чтение

Выполняет пробный прогон структурированного фильтра по недавним статьям БЕЗ создания отслеживания - цикл настройки. Возвращает {window_days, needs_similarity, match_count, sample}, чтобы вы могли итерировать (добавить категорию, повысить min_novelty, изменить отношение коллекции) перед сохранением с помощью create_watch. Структурированные отслеживания по умолчанию ранжируют по 'rising' (прогнозируемый прорывной эффект) и ужесточают с помощью min_impact_pct для антишумового отслеживания, которое показывает только прорывные статьи в вашей нише. ПРИМЕЧАНИЕ: для фильтра по схожести match_count ограничен 200 (окно косинусного поиска) и поэтому насыщается на уровне 200 по широким/горячим темам - настраивайте по оценкам sample и сужайте с помощью categories/min_novelty (или более высокого порога схожести), а не полагайтесь только на match_count. Только для чтения. Требует SF_API_KEY.

Preview Watch

Параметры
  • criteriaobjectобязательный

    Структурированный фильтр для тестирования.

  • recency_daysinteger

    Окно в днях (по умолчанию 7; отношение 'cites' использует 30).

remove_from_collection

Удаляет статью из коллекции по идентификатору коллекции (collection_id) или имени коллекции (collection_name). MUTATES (статья остаётся в вашей библиотеке; она только удаляется из этой коллекции). Идемпотентна. Требует SF_API_KEY.

Удаляет из коллекции

Параметры
  • arxiv_idstringобязательный

    arXiv ID статьи для удаления из коллекции.

  • collection_idstring

    UUID коллекции. Укажите это ИЛИ collection_name.

  • collection_namestring

    Название коллекции. Укажите это ИЛИ collection_id.

save_paper

Сохраняет статью в библиотеку Scholar Feed аутентифицированного пользователя (закладка). ИЗМЕНЯЕТ библиотеку и влияет на персонализацию пользователя — сохранённые статьи — самый сильный сигнал в ленте For You и в email-дайджесте. Идемпотентно: повторный вызов для уже сохранённой статьи оставляет её сохранённой. Требует SF_API_KEY. Чтобы одним шагом поместить её в именованную коллекцию, используйте add_to_collection (он тоже сохраняет).

Экономия бумаги

Параметры
  • arxiv_idstringобязательный

    Идентификатор arXiv статьи для сохранения, например '2407.15831'.

search_papersтолько чтение

Ищет по корпусу Scholar Feed из 600 000+ статей по CS/AI/ML. По умолчанию работает семантический (эмбеддинговый) поиск, поэтому находит концептуально связанные работы, даже когда формулировки различаются. КАЖДЫЙ ПАРАМЕТР ОПИСЫВАЕТ СОБСТВЕННОЕ ПОВЕДЕНИЕ И ГРАНИЦЫ ОХВАТА: прочитайте те, которыми собираетесь пользоваться; это описание покрывает только то, что не может рассказать ни один отдельный параметр. ОГРАНИЧЕНИЕ ВЫДАЧИ: семантическое ранжирование отдаёт предпочтение свежим и стилистически близким статьям и регулярно ПРОПУСКАЕТ старую высокоцитируемую якорную работу в области (H2O для вытеснения KV, GRIT для объединённых эмбеддингов и генерации). Чтобы добраться до канонической работы в области, прочитайте первые пять аннотаций в поисках повторяющихся упоминаний бейзлайнов («мы сравниваем с X») и найдите это название напрямую, либо вызовите get_foundational_lineage. ТРИ НЕСВЯЗАННЫХ ПОНЯТИЯ ВЛИЯНИЯ, которые легко перепутать: подтверждённые цитирования (sort='impactful', min_citations) | процентиль прогноза на ~90 дней, который равен NULL на старых статьях и тем самым исключает их (sort='trending', impact_min) | популярность на GitHub (sort='community', min_stars). ВАША БИБЛИОТЕКА ОТМЕЧЕНА ПРЯМО В ВЫДАЧЕ на авторизованных вызовах: каждый результат несёт is_saved и is_read, а результат, который вы ранее аннотировали, несёт note_text, ваш собственный прошлый вывод. Читайте note_text ВМЕСТО того, чтобы заново делать вывод из аннотации; повторная оценка статьи, по которой вы уже вынесли решение, это самый частый способ, которым агент тратит исследовательскую сессию впустую. is_saved=false это реальное измерение; на анонимных вызовах эти ключи отсутствуют полностью, поэтому никогда не читайте отсутствующий is_saved как false. Статьи, которые вы раньше не видели, ранжируются точно так же, как и прежде, ничего не понижается за то, что оно не было просмотрено.

Ищет статьи

Параметры
  • anchor_paper_idstring

    Возвращает статьи, похожие на указанный идентификатор статьи arXiv. Когда задан параметр q, он игнорируется, а результаты содержат similarity_score. Пример: '2407.15831'.

  • categorystring

    Фильтруйте по категории arXiv, например 'cs.AI', 'cs.LG'

  • contribution_typeenum

    Фильтровать по типу вклада статьи

  • cursorstring

    Курсор из поля next_cursor предыдущего ответа для keyset-пагинации.

  • datasetstring

    Фильтрует работы, которые оцениваются на конкретном наборе данных, например 'MMLU', 'ImageNet'

  • daysinteger

    Ограничить статьи, опубликованные в течение N дней

  • exclude_idsstring[]

    Идентификаторы arXiv, которые нужно исключить из результатов (чтобы убрать дубликаты при цепочке вызовов).

  • fieldsstring

    Список возвращаемых полей через запятую (например, 'arxiv_id,title,llm_summary,llm_novelty_score'). Если не указано, возвращается стандартный набор из 12 полей, если verbose=true не задан.

  • github_url_existsboolean

    Фильтр по наличию у статьи URL-ссылки на GitHub (true = только статьи с репозиторием). Строже, чем has_code (который учитывает любую ссылку на код).

  • has_codeboolean

    Фильтрует статьи с привязанным релизом кода (has_code=true). Показывает запускаемые и воспроизводимые работы — комбинируйте с параметрами min_stars или sort='community', чтобы найти статьи, которые практики реально используют.

  • impact_mininteger

    Минимальный impact_pct (0–100), например, 80 = верхние 20% по прогнозируемому влиянию. Это фильтр для РАСТУЩИХ работ: impact_pct считается только за последние ~90 дней, поэтому impact_min оставляет лишь свежие статьи, которым прогнозируют хороший отклик, и ВЫКИДЫВАЕТ всё старое. Используй его, когда нужно узнать, «что набирает обороты в теме X». Не используй его, чтобы найти влиятельные или основополагающие работы по теме — он отсекает устоявшиеся труды; для этого бери sort='impactful'.

  • limitinteger

    Результатов на странице (максимум 25)

  • method_categorystring

    Фильтровать по категории метода, например «обучение с подкреплением», «трансформер»

  • method_namestring

    Отфильтровать статьи, в которых представлен или используется конкретный именованный метод, например 'LoRA', 'YOLO', 'DPO'. Совпадение подстроки без учёта регистра по извлечённому полю method_name.

  • min_citationsinteger

    Минимальное количество реальных цитирований. В отличие от impact_min (процентиль ПРОГНОЗА на ~90 дней), этот параметр фильтрует по ПОДТВЕРЖДЁННЫМ цитированиям и оставляет признанные и канонические работы.

  • min_starsinteger

    Минимальное количество звёзд на GitHub у связанного репозитория. Это показатель инженерного использования — показывает работы, которые практики реально запускают или дорабатывают. Используйте вместе с sort='community', чтобы ранжировать по этому параметру. ВАЖНОЕ ОГРАНИЧЕНИЕ: репозиторий, который никогда не загружался, хранится как 0, а не NULL, поэтому этот фильтр не отличает «нет использования» от «не измерялось». Он применяется как «точно есть N звёзд или больше» — работы, чьи звёзды не загружались, исключаются, а не считаются нулевыми. Так что результат честный, но неполный: действительно популярная старая работа может отсутствовать просто потому, что её никто не измерял. Охват смещён в сторону свежих работ и постепенно дополняется. Используйте этот фильтр для недавних работ; для устоявшихся берите min_citations.

  • modeenum

    Режим поиска. 'semantic' (по умолчанию) использует схожесть эмбеддингов - находит концептуально связанные статьи даже без точных совпадений по ключевым словам. 'keyword' использует полнотекстовый поиск Postgres - быстрее, но сопоставляет только точные термины.

  • novelty_minnumber

    Минимальная оценка новизны (0-1). Используйте 0.5+ для новых статей.

  • pageinteger

    Номер страницы

  • published_afterstring

    Только статьи, опубликованные в эту дату или после нее, 'YYYY-MM-DD'. Используйте вместе с published_before, чтобы задать произвольный диапазон дат (параметр days дает только скользящее окно на N дней назад).

  • published_beforestring

    Только статьи, опубликованные в эту дату или раньше, 'ГГГГ-ММ-ДД'. Используйте вместе с published_after, чтобы задать явный диапазон дат.

  • qstring

    Ключевые слова запроса. Обязательны, если не заданы anchor_paper_id или scope_to_citations_of (в этом режиме q игнорируется и возвращаются похожие на указанную статью), и если sort не равен 'trending', 'recent' или 'impactful' — это лента свежих публикаций, которая ограничена первыми 200 результатами (запрос за пределами offset 200 вернёт ошибку 422; сузьте выборку через q= или фильтры). Любой вызов без q вернёт 422, даже если указаны только фильтры (category/days/...) и sort='community'. Фильтры сами по себе не заменяют q — комбинируйте их с сортировкой по ленте (например, category='cs.AI' + sort='recent') или передавайте q. Для вопроса «что сейчас горячего в AI» подойдёт либо sort='trending' без q, либо широкий q вместе с sort='trending'.

  • scope_to_citations_ofstring

    Сужает поиск до графа цитирования этой статьи, ранжируя результаты по релевантности к q. Передаёт arXiv ID статьи, в цитированиях которой нужно искать.

  • sortenum

    Ранжирование результатов - шкала релевантность↔влиятельность плюс порядок по времени и по популярности. 'relevance' (по умолчанию) = лучшее соответствие теме. 'balanced' = релевантные И хорошо цитируемые. 'impactful' = самые цитируемые (подтверждённо влиятельные) среди релевантных запросу - используйте для 'важных/основополагающих работ по теме X'. 'trending' = растущие/прогнозируемые по влиятельности (impact_pct, последние ~90 дней) - используйте для 'что сейчас актуально/нового в X', НЕ для устоявшихся работ. 'recent' = сначала новые. 'community' = популярность в сообществе (звёзды + скорость набора звёзд) - показывает работы, которые практики реально запускают/используют, независимо от цитирований. ОГРАНИЧЕНИЕ ПО ОХВАТУ (аналог проблемы ~90 дней у impact): не загруженный репозиторий хранит 0, а не NULL, и охват сильно смещён к недавним публикациям, поэтому большинство старых работ с репозиторием сейчас получают 0 звёзд и тонут - 'community' отражает измеренную популярность, а не популярность по всему корпусу. Подтверждённая влиятельность ('impactful'/'balanced') ранжирует по реальным цитированиям; 'trending' - это прогноз модели; 'community' - реальное использование в разработке в текущий период. Используйте get_foundational_lineage, чтобы найти канонические корни темы.

  • taskstring

    Фильтруйте по задаче, например, «классификация изображений», «ответы на вопросы» (частичное совпадение).

  • task_categoryenum

    Фильтр по широкой области исследований.

  • verboseboolean

    Если значение true, возвращается полный набор из 28 полей для статьи (извлечение метода/задачи/набора данных, application_domain, базовые показатели и т. д.). Значение по умолчанию false возвращает сокращённый набор из 12 полей. Параметр игнорируется, если указан fields.

unsave_paper

Удаляет статью из библиотеки Scholar Feed аутентифицированного пользователя. ИЗМЕНЯЕТ библиотеку. Идемпотентна: удаление статьи, которой нет в сохранённых, оставляет её несохранённой. Примечание: сохранённая библиотека — это надмножество всех коллекций, поэтому отмена сохранения статьи ТАКЖЕ удаляет её из каждой коллекции, в которой она находилась. Чтобы оставить её в коллекции, используйте вместо этого remove_from_collection (это оставляет статью сохранённой). Требует SF_API_KEY.

Отменяет сохранение документа.

Параметры
  • arxiv_idstringобязательный

    arXiv ID статьи, которую нужно удалить из библиотеки.

update_watch

Обновляет существующее наблюдение на месте: переименовывает, изменяет novelty_min или ПЕРЕНАЦЕЛИВАЕТ его структурированный фильтр criteria. МУТИРУЕТ. Адресуется по watch_id ИЛИ имени. Изменение criteria заменяет определение и очищает ожидающие попадания наблюдения (чтобы устаревшие совпадения не доставлялись); следующая ежедневная оценка перезаполняет список. Структурированные наблюдения ранжируются по 'rising' (прогнозируемая ударная сила прорыва) по умолчанию и ужесточают порог с помощью min_impact_pct для защиты от шума — такое наблюдение показывает только прорывные статьи в вашей нише. Сначала настройте новые критерии с помощью preview_watch. Требует SF_API_KEY.

Обновляет Watch

Параметры
  • criteriaobject

    Заменяет фильтр watch (становится kind='filter'). Очищает ожидающие совпадения.

  • namestring

    Найдите часы по его текущему названию. Укажите это или watch_id.

  • new_namestring

    Переименуйте часы.

  • novelty_minnumber

    Новый минимальный порог новизны (0..1).

  • recency_daysinteger

    Окно для новых критериев.

  • watch_idstring

    Найдите часы по UUID. Укажите это ИЛИ имя.

3.20.0основная
3.19.1
3.19.0
3.18.0
3.17.1
3.17.0
3.16.0
3.15.0
3.14.1
3.14.0
3.13.2
3.13.1
3.13.0
3.12.1
3.12.0
3.11.0
3.10.1
3.10.0
3.9.1
3.9.0
3.8.0
3.7.1
3.7.0
3.5.1
3.3.0
3.2.0
3.1.0
3.0.2
3.0.1
3.0.0
1.3.2
1.3.1
1.3.0
1.2.1
1.1.0
1.0.3
1.0.2
1.0.0

Выберите клиент, чтобы установить YGao2005/scholar-feed-mcp:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "ygao2005-scholar-feed-mcp-e0ocamlci7": {
      "command": "npx",
      "args": [
        "-y",
        "scholar-feed-mcp@latest"
      ]
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "ygao2005-scholar-feed-mcp-e0ocamlci7": {
      "command": "npx",
      "args": [
        "-y",
        "scholar-feed-mcp@latest"
      ]
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "ygao2005-scholar-feed-mcp-e0ocamlci7": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "scholar-feed-mcp@latest"
      ]
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"ygao2005-scholar-feed-mcp-e0ocamlci7\",\"type\":\"stdio\",\"command\":\"npx\",\"args\":[\"-y\",\"scholar-feed-mcp@latest\"]}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "ygao2005-scholar-feed-mcp-e0ocamlci7": {
      "command": "npx",
      "args": [
        "-y",
        "scholar-feed-mcp@latest"
      ]
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add ygao2005-scholar-feed-mcp-e0ocamlci7 -- npx -y scholar-feed-mcp@latest

Либо через JSON-конфиг:

claude mcp add-json ygao2005-scholar-feed-mcp-e0ocamlci7 "{\"command\":\"npx\",\"args\":[\"-y\",\"scholar-feed-mcp@latest\"]}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add ygao2005-scholar-feed-mcp-e0ocamlci7 -- npx -y scholar-feed-mcp@latest

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.ygao2005-scholar-feed-mcp-e0ocamlci7]
command = "npx"
args = ["-y", "scholar-feed-mcp@latest"]
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите YGao2005/scholar-feed-mcp, а в поле команды запуска — строку ниже:
npx -y scholar-feed-mcp@latest

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "ygao2005-scholar-feed-mcp-e0ocamlci7": {
      "command": "npx",
      "args": [
        "-y",
        "scholar-feed-mcp@latest"
      ]
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "ygao2005-scholar-feed-mcp-e0ocamlci7": {
      "command": "npx",
      "args": [
        "-y",
        "scholar-feed-mcp@latest"
      ],
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например ygao2005-scholar-feed-mcp-e0ocamlci7.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: ygao2005-scholar-feed-mcp-e0ocamlci7
    command: npx
    args:
      - "-y"
      - "scholar-feed-mcp@latest"
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "ygao2005-scholar-feed-mcp-e0ocamlci7": {
      "command": "npx",
      "args": [
        "-y",
        "scholar-feed-mcp@latest"
      ]
    }
  }
}

Похожие MCP-сервера

blazickjp/arxiv-mcp-server

blazickjp/arxiv-mcp-server

от blazickjp

Ищет научные статьи arXiv по датам и категориям, скачивает и читает полные тексты, сохраняет их в локальную папку.

Python⭐ 3223
connerlambden/bgpt-mcp

connerlambden/bgpt-mcp

от connerlambden

Сервер BGPT даёт AI-помощникам и Python-скриптам доступ к структурированным данным из научных статей: методам, результатам и выводам. Незаменим для обзоров литературы и проверки гипотез.

JavaScript⭐ 43
takashiishida/arxiv-latex-mcp

takashiishida/arxiv-latex-mcp

от takashiishida

MCP сервер для доступа к LaTeX-исходникам arXiv. Точная обработка математических формул отличает его от PDF. Предоставляет инструменты: полный текст, абстракт, разделы статьи. Полезен для работы с научными публикациями в Claude, Cursor и других.

Python⭐ 148
pallaprolus/mendeley-mcp

pallaprolus/mendeley-mcp

от pallaprolus

MCP-сервер, который подключает вашу библиотеку Mendeley к ИИ-ассистентам вроде Claude. Ищите статьи, управляйте папками, читайте аннотации и даже извлекайте полный текст PDF. Незаменим для исследователей — работа с литературой через LLM становится быстрой и удобной.

Python⭐ 46
parallel-web/task-mcp

parallel-web/task-mcp

от parallel-web

Parallel Task MCP запускает глубокие исследования и группы задач прямо из LLM-клиента. Помогает изучить возможности Parallel API и проводить эксперименты при разработке продакшн-систем. Полезен для...

TypeScript⭐ 16
mlava/scholar-sidekick-mcp

mlava/scholar-sidekick-mcp

от mlava

MCP-сервер для научных идентификаторов: преобразует DOI, PMID, arXiv в цитаты (10 000+ стилей CSL) и экспорт (BibTeX, RIS и др.), проверяет отзывы, открытый доступ и фабрикацию. Полезен исследовате...

TypeScript⭐ 11
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин