MCP Meilisearch API-сервер
Реализация сервера Model Context Protocol (MCP), которая обеспечивает мост между моделями ИИ и поисковой системой Meilisearch.
Обзор
- Сервер MCP : предоставляет API Meilisearch в качестве инструментов, использующих протокол контекста модели.
- Демонстрация веб-клиента : демонстрационный интерфейс, демонстрирующий функции поиска.
- Вывод ИИ : интеллектуальный выбор инструментов на основе запросов пользователя.
Основные характеристики
- Несколько вариантов транспорта : поддерживает транспорты STDIO и StreamableHTTP.
- Поддержка API Meilisearch : полный доступ к функциям Meilisearch.
- Демонстрация веб-клиента : обновленный интерфейс, демонстрирующий возможности и функции поиска.
- Вывод ИИ : использует LLM от таких поставщиков, как OpenAIo HuggingFace, для разумного определения и использования наиболее подходящего инструмента для пользовательских запросов.
Начиная
Предпосылки
- Node.js v20 или выше.
- Работающий экземпляр Meilisearch (локальный или удаленный).
- API-ключ для Meilisearch (при необходимости).
- API-ключ поставщика ИИ (если используется вывод ИИ).
Установка
Установите пакет:
Параметры
Параметры подключения Meilisearch
meilisearchHost
: URL-адрес экземпляра Meilisearch (по умолчанию: « http://localhost:7700 »)meilisearchApiKey
: API-ключ для аутентификации с помощью Meilisearch (по умолчанию: "")
Параметры сервера MCP
transport
: Тип транспорта для сервера MCP ("http" | "stdio") (по умолчанию: "http")httpPort
: HTTP-порт для сервера MCP (по умолчанию: 4995)mcpEndpoint
: путь к конечной точке MCP (по умолчанию: "/mcp")
Параметры сеанса
sessionTimeout
: время ожидания сеанса в миллисекундах (по умолчанию: 3600000)sessionCleanupInterval
: интервал очистки сеанса в миллисекундах (по умолчанию: 60000)
Параметры вывода ИИ
aiProviderName
: Имя поставщика ИИ ("openai" | "huggingface" | "openrouter" | "ollama") (по умолчанию: "openai")aiProviderApiKey
: API-ключ поставщика ИИ для вывода ИИllmModel
: модель ИИ для использования (по умолчанию: «gpt-3.5-turbo»)
Обратите внимание, что не все модели поддерживают вызов функций, который требуется для правильного вывода ИИ в этом пакете. Обязательно выберите модель, которая поддерживает параметр tools.
Провайдер | Поддерживаемые модели |
---|---|
OpenAI | Список поддерживаемых моделей |
OpenRouter | Список поддерживаемых моделей |
HuggingFace | Список поддерживаемых моделей |
Оллама | Список поддерживаемых моделей |
Пример настройки сервера
Использование MCPClient
Пакет экспортирует класс MCPClient для интеграции на стороне клиента:
Методы клиента вывода ИИ
callToolWithAI(query, options)
Обрабатывает запрос пользователя с помощью ИИ, чтобы определить и применить наиболее подходящий инструмент.
Параметры:
query
: Строка — запрос или запрос пользователя, который необходимо обработать.options
: Объект (необязательно) - Параметры конфигурацииspecificTools
: String[] (Необязательно) — Ограничивает выбор инструментов этим списком названий инструментовjustReasoning
: Boolean (необязательно) — если установлено значениеtrue
, возвращает только рассуждения ИИ без выполнения выбранного инструмента.
Запуск сервера
Вы можете запустить сервер программно:
Инструменты
Сервер MCP предоставляет различные инструменты, которые позволяют вам взаимодействовать с функциональными возможностями Meilisearch. Каждый инструмент соответствует определенной конечной точке API Meilisearch, позволяя вам выполнять такие операции, как поиск, индексирование и управление документами.
Категории инструментов
- Системные инструменты : проверки работоспособности, информация о версии, статистика сервера.
- Инструменты индексирования : управление индексами (создание, обновление, удаление, составление списка).
- Инструменты для работы с документами : добавление, обновление, удаление и извлечение документов.
- Инструменты поиска : расширенный поиск, включая векторный поиск.
- Инструменты настроек : настройка параметров индекса.
- Инструменты задач : управление асинхронными задачами.
- Векторные инструменты : экспериментальные возможности поиска векторов.
Системные инструменты
здоровье
- Описание : Проверьте работоспособность сервера Meilisearch.
версия
- Описание : Получить информацию о версии сервера Meilisearch.
информация
- Описание : Получить системную информацию сервера Meilisearch.
статистика
- Описание : Получение статистики по всем индексам или по конкретному индексу.
- Параметры :
indexUid
(строка, необязательно): уникальный идентификатор индекса.
получить-задачи
- Описание : Получение информации о задачах с дополнительной фильтрацией.
- Параметры :
limit
(число, необязательно): максимальное количество возвращаемых задач.from
(число, необязательно): UID задачи, с которой следует начать извлечение.status
(строка, необязательно): Статус задач для возврата.type
(строка, необязательно): Тип возвращаемых задач.indexUids
(string[], необязательно): UID индексов, по которым выполнялись задачи.
удалить-задачи
- Описание : Удаление задач на основе предоставленных фильтров.
- Параметры :
statuses
(string[], необязательно): статусы задач для удаления.types
(string[], необязательно): типы задач для удаления.indexUids
(string[], необязательно): UID индексов, по которым были выполнены задачи по удалению.uids
(число[], необязательно): UID задач для удаления.canceledBy
(number[], необязательно): UID задач, которые отменили задачи для удаления.beforeUid
(число, необязательно): удалить задачи, uid которых предшествует этому значению.beforeStartedAt
(строка, необязательно): удалить задачи, обработка которых началась до этой даты (формат ISO 8601).beforeFinishedAt
(строка, необязательно): удалить задачи, обработка которых была завершена до указанной даты (формат ISO 8601).
Индекс Инструменты
списки-индексы
- Описание : Список всех индексов в экземпляре Meilisearch.
- Параметры :
limit
(число, необязательно): максимальное количество возвращаемых индексов.offset
(число, необязательно): количество индексов, которые следует пропустить.
получить-индекс
- Описание : Получить информацию о конкретном индексе Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.
создать-индекс
- Описание : Создать новый индекс Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор нового индекса.primaryKey
(строка, необязательно): Первичный ключ для индекса.
обновление-индекса
- Описание : Обновление индекса Meilisearch (в настоящее время поддерживается только обновление первичного ключа).
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.primaryKey
(строка, обязательно): новый первичный ключ для индекса.
удалить-индекс
- Описание : Удаление индекса Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса для удаления.
своп-индексы
- Описание : Поменять местами два или более индексов в Meilisearch.
- Параметры :
indexes
(строка, обязательно): JSON-массив пар индексов для обмена, например [["movies", "movies_new"]].
Инструменты для работы с документами
получить-документы
- Описание : Получение документов из индекса Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.limit
(число, необязательно): максимальное количество возвращаемых документов (по умолчанию: 20).offset
(число, необязательно): количество пропускаемых документов (по умолчанию: 0).fields
(string[], необязательно): поля, возвращаемые в документах.filter
(строка, необязательно): Фильтр запроса для применения.
получить-документ
- Описание : Получить документ по его идентификатору из индекса Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.documentId
(строка, обязательно): идентификатор документа, который необходимо получить.fields
(string[], необязательно): поля, возвращаемые в документе.
добавить-документы
- Описание : Добавление документов в индекс Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.documents
(строка, обязательно): JSON-массив документов для добавления.primaryKey
(строка, необязательно): Первичный ключ для документов.
обновление-документов
- Описание : Обновление документов в индексе Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.documents
(строка, обязательно): JSON-массив документов для обновления.primaryKey
(строка, необязательно): Первичный ключ для документов.
удалить-документ
- Описание : Удаление документа по его идентификатору из индекса Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.documentId
(строка, обязательно): идентификатор документа для удаления.
удалить-документы
- Описание : Удаление нескольких документов по их идентификаторам из индекса Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.documentIds
(строка, обязательно): JSON-массив идентификаторов документов для удаления.
удалить все документы
- Описание : Удалить все документы в индексе Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.
Инструменты поиска
поиск
- Описание : Поиск документов в индексе Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.q
(строка, обязательно): Поисковый запрос.limit
(число, необязательно): максимальное количество возвращаемых результатов (по умолчанию: 20).offset
(число, необязательно): количество результатов, которые следует пропустить (по умолчанию: 0).filter
(строка, необязательно): Фильтр запроса для применения.sort
(string[], необязательно): Атрибуты для сортировки, например ["price"].facets
(string[], необязательно): возвращаемые грани.attributesToRetrieve
(string[], необязательно): атрибуты для включения в результаты.attributesToCrop
(string[], необязательно): Атрибуты для обрезки.cropLength
(число, необязательно): длина, по которой следует обрезать обрезанные атрибуты.attributesToHighlight
(string[], необязательно): Атрибуты для выделения.highlightPreTag
(строка, необязательно): тег для вставки перед выделенным текстом.highlightPostTag
(строка, необязательно): тег для вставки после выделенного текста.showMatchesPosition
(логическое значение, необязательное): включать ли позиции совпадений в результаты.matchingStrategy
(строка, необязательно): Стратегия сопоставления: «все» или «последний».
многопоисковый
- Описание : Выполнение нескольких поисков в одном запросе.
- Параметры :
queries
(строка, обязательно): массив поисковых запросов JSON, каждый из которых содержит те же параметры, что и инструментsearch
.
глобальный поиск
- Описание : Поиск термина по всем доступным индексам Meilisearch и возврат объединенных результатов.
- Параметры :
q
(строка, обязательно): Поисковый запрос.limit
(число, необязательно): максимальное количество результатов, возвращаемых для каждого индекса (по умолчанию: 20).attributesToRetrieve
(string[], необязательно): атрибуты для включения в результаты.
фасетный поиск
- Описание : Поиск значений фасетов, соответствующих определенным критериям.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.facetName
(строка, обязательно): Имя фасета для поиска.facetQuery
(строка, необязательно): Запрос для сопоставления со значениями фасета.filter
(строка, необязательно): Фильтр для применения к базовому поиску.
Настройки Инструменты
получить-настройки
- Описание : Получить все настройки для индекса Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.
обновить настройки
- Описание : Обновление настроек индекса Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.settings
(строка, обязательно): объект JSON, содержащий настройки для обновления.
сброс настроек
- Описание : Сброс всех настроек индекса Meilisearch до значений по умолчанию.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.
Получить настройки инструментов
Следующие инструменты извлекают определенные настройки для индекса Meilisearch:
- получить-отображаемые-атрибуты
- получить-поисковые-атрибуты
- получить-фильтруемые-атрибуты
- получить-сортируемые-атрибуты
- получить-ранжирование-правила
- получить-стоп-слова
- получить-синонимы
- получить-типо-толерантность
- получить-пагинацию
- получить-гранение
- получить-словарь
- получить-близость-точность
- получить-разделители-токены
- получить-не-разделительные-токены
- получить-слово-словарь
Все эти инструменты имеют одинаковые параметры:
indexUid
(строка, обязательно): уникальный идентификатор индекса.
Инструменты настроек обновления
Следующие инструменты обновляют определенные настройки индекса Meilisearch:
- обновить-отображаемые-атрибуты
indexUid
(строка, обязательно): уникальный идентификатор индекса.displayedAttributes
(строка, обязательно): массив атрибутов JSON для отображения, например ["title", "description"].
- обновить-поисковые-атрибуты
indexUid
(строка, обязательно): уникальный идентификатор индекса.searchableAttributes
(строка, обязательно): массив атрибутов JSON, по которым можно выполнять поиск, например ["title", "description"].
- обновление-фильтруемых-атрибутов
indexUid
(строка, обязательно): уникальный идентификатор индекса.filterableAttributes
(строка, обязательно): массив атрибутов JSON, которые можно использовать в качестве фильтров, например ["жанр", "режиссер"].
- обновление-сортируемых-атрибутов
indexUid
(строка, обязательно): уникальный идентификатор индекса.sortableAttributes
(строка, обязательно): массив атрибутов JSON, которые можно использовать для сортировки, например ["цена", "дата"].
- правила обновления-рейтинга
indexUid
(строка, обязательно): уникальный идентификатор индекса.rankingRules
(строка, обязательно): массив правил ранжирования JSON, например ["опечатка", "слова", "близость", "атрибут", "сортировка", "точность"].
- обновление-стоп-слов
indexUid
(строка, обязательно): уникальный идентификатор индекса.stopWords
(строка, обязательно): JSON-массив слов, которые следует игнорировать в поисковых запросах, например ["the", "a", "an"].
- обновление-синонимы
indexUid
(строка, обязательно): уникальный идентификатор индекса.synonyms
(строка, обязательно): объект JSON, сопоставляющий слова с их синонимами, например {"movie": ["film"]}.
- обновление-типо-толерантность
indexUid
(строка, обязательно): уникальный идентификатор индекса.typoTolerance
(строка, обязательно): объект JSON с конфигурацией допуска опечаток, например {"enabled": true, "minWordSizeForTypos": {"oneTypo": 5, "twoTypos": 9}}.
- обновление-пагинация
indexUid
(строка, обязательно): уникальный идентификатор индекса.pagination
(строка, обязательно): объект JSON с конфигурацией пагинации, например {"maxTotalHits": 1000}.
- обновление-фасетирование
indexUid
(строка, обязательно): уникальный идентификатор индекса.faceting
(строка, обязательно): объект JSON с конфигурацией фасетирования, например {"maxValuesPerFacet": 100}.
- обновление-словаря
indexUid
(строка, обязательно): уникальный идентификатор индекса.dictionary
(строка, обязательно): массив слов JSON, которые следует рассматривать как одно слово, например ["Сан-Франциско", "Нью-Йорк"].
- обновление-близость-точность
indexUid
(строка, обязательно): уникальный идентификатор индекса.proximityPrecision
(строка, обязательно): строка со значением точности близости, может быть «byWord» или «byAttribute».
- обновление-разделителей-токенов
indexUid
(строка, обязательно): уникальный идентификатор индекса.separatorTokens
(строка, обязательно): массив токенов JSON, которые следует рассматривать как разделители слов, например ["-", "_"].
- обновление-не-разделительных-токенов
indexUid
(строка, обязательно): уникальный идентификатор индекса.nonSeparatorTokens
(строка, обязательно): массив токенов JSON, которые не следует рассматривать как разделители слов, например ["@", "."].
- обновить-словарь-слов
indexUid
(строка, обязательно): уникальный идентификатор индекса.wordDictionary
(строка, обязательно): JSON-массив пользовательских слов для добавления в словарь, например ["cbuilder", "meilisearch"].
Сброс настроек Инструменты
Следующие инструменты сбрасывают определенные настройки индекса Meilisearch до значений по умолчанию:
- сброс отображаемых атрибутов
- сброс-поисковых-атрибутов
- сбросить-фильтруемые-атрибуты
- сбросить-сортируемые-атрибуты
- сброс-правил-ранжирования
- сброс-стоп-слов
- сброс-синонимы
- сброс-типо-толерантности
- сброс-пагинации
- сброс-гранение
- сброс-словаря
- сброс-близость-точность
- сброс-разделителей-токенов
- сброс-не-разделительных-токенов
- сброс-словарного-словаря
Все эти инструменты сброса имеют один и тот же параметр:
indexUid
(строка, обязательно): уникальный идентификатор индекса.
Инструменты для задач
список-задач
- Описание : Список задач с возможностью фильтрации.
- Параметры :
limit
(число, необязательно): максимальное количество возвращаемых задач.from
(число, необязательно): UID задачи, с которой следует начать извлечение.statuses
(string[], необязательно): Статусы задач для возврата.types
(string[], необязательно): типы возвращаемых задач.indexUids
(string[], необязательно): UID индексов, по которым выполнялись задачи.uids
(число[], необязательно): UID конкретных задач, которые необходимо вернуть.
получить-задачу
- Описание : Получить информацию о конкретной задаче.
- Параметры :
taskUid
(число, обязательно): уникальный идентификатор задачи.
отменить-задачи
- Описание : Отмена задач на основе предоставленных фильтров.
- Параметры :
statuses
(string[], необязательно): статусы задач для отмены.types
(string[], необязательно): типы задач для отмены.indexUids
(string[], необязательно): UID индексов, по которым были выполнены отменяемые задачи.uids
(число[], необязательно): UID задач, которые нужно отменить.
ожидание-задачи
- Описание : Дождитесь завершения определенной задачи.
- Параметры :
taskUid
(число, обязательно): уникальный идентификатор задачи, которую необходимо дождаться.timeoutMs
(число, необязательно): максимальное время ожидания в миллисекундах (по умолчанию: 5000).intervalMs
(число, необязательно): интервал опроса в миллисекундах (по умолчанию: 500).
Векторные инструменты
включить-векторный-поиск
- Описание : Включить экспериментальную функцию поиска векторов в Meilisearch.
получить-экспериментальные-функции
- Описание : Получите статус экспериментальных функций в Meilisearch.
обновление-внедрители
- Описание : Настройка встраиваемых устройств для векторного поиска.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.embedders
(строка, обязательно): объект JSON, содержащий конфигурации embedder.
получить-внедрители
- Описание : Получить конфигурацию встраиваемых устройств для индекса.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.
сброс-внедрители
- Описание : Сброс конфигурации встраиваемых устройств для индекса.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.
вектор-поиск
- Описание : Выполнение векторного поиска в индексе Meilisearch.
- Параметры :
indexUid
(строка, обязательно): уникальный идентификатор индекса.vector
(строка, обязательно): массив JSON, представляющий вектор для поиска.limit
(число, необязательно): максимальное количество возвращаемых результатов (по умолчанию: 20).offset
(число, необязательно): количество результатов, которые следует пропустить (по умолчанию: 0).filter
(строка, необязательно): Фильтр для применения (например, «жанр = ужасы И год > 2020»).embedder
(строка, необязательно): Имя используемого embedder (если не указано, необходимо указать «вектор»).attributes
(string[], необязательно): Атрибуты для включения в векторный поиск.query
(строка, необязательно): Текстовый запрос для поиска (если используется «embedder» вместо «vector»).hybrid
(логический, необязательный): следует ли выполнять гибридный поиск (объединяющий векторный и текстовый поиск).hybridRatio
(число, необязательно): соотношение векторного и текстового поиска в гибридном поиске (0-1, по умолчанию: 0,5).
This server cannot be installed
mcp-meilisearch
Related MCP Servers
- Python
- TypeScriptMIT License
- Apache 2.0
- Python