Servidor API de MCP Meilisearch
Una implementación de servidor de Protocolo de Contexto de Modelo (MCP) que proporciona un puente entre los modelos de IA y el motor de búsqueda Meilisearch.
Descripción general
- Servidor MCP : expone las API de Meilisearch como herramientas utilizando el Protocolo de contexto de modelo.
- Demostración de cliente web : una interfaz de demostración que muestra las funcionalidades de búsqueda.
- Inferencia de IA : selección inteligente de herramientas basada en consultas del usuario.
Características principales
- Múltiples opciones de transporte : admite transportes STDIO y StreamableHTTP.
- Soporte de API de Meilisearch : acceso completo a las funcionalidades de Meilisearch.
- Demostración del cliente web : Interfaz actualizada que muestra capacidades y funciones de búsqueda.
- Inferencia de IA : aprovecha los LLM de proveedores como OpenAIo HuggingFace para determinar y utilizar de forma inteligente la herramienta más adecuada para las consultas de los usuarios.
Empezando
Prerrequisitos
- Node.js v20 o superior.
- Una instancia de Meilisearch en ejecución (local o remota).
- Clave API para Meilisearch (si es necesario).
- Clave API del proveedor de IA (si se utiliza inferencia de IA).
Instalación
Instalar el paquete:
Opciones
Opciones de conexión de Meilisearch
meilisearchHost
: URL de la instancia de Meilisearch (predeterminado: " http://localhost:7700 ")meilisearchApiKey
: clave API para autenticarse con Meilisearch (predeterminado: "")
Opciones del servidor MCP
transport
: Tipo de transporte para el servidor MCP ("http" | "stdio") (predeterminado: "http")httpPort
: puerto HTTP para el servidor MCP (predeterminado: 4995)mcpEndpoint
: ruta del punto final de MCP (predeterminado: "/mcp")
Opciones de sesión
sessionTimeout
: Tiempo de espera de la sesión en milisegundos (predeterminado: 3600000)sessionCleanupInterval
: intervalo de limpieza de sesión en milisegundos (predeterminado: 60000)
Opciones de inferencia de IA
aiProviderName
: Nombre del proveedor de IA ("openai" | "huggingface" | "openrouter" | "ollama") (Predeterminado: "openai")aiProviderApiKey
: clave API del proveedor de IA para la inferencia de IAllmModel
: Modelo de IA a utilizar (predeterminado: "gpt-3.5-turbo")
Tenga en cuenta que no todos los modelos admiten la llamada a funciones, necesaria para una inferencia de IA adecuada en este paquete. Asegúrese de seleccionar un modelo que admita el parámetro de herramientas.
Proveedor | Modelos compatibles |
---|---|
OpenAI | Lista de modelos compatibles |
OpenRouter | Lista de modelos compatibles |
Cara abrazada | Lista de modelos compatibles |
Ollama | Lista de modelos compatibles |
Ejemplo de configuración del servidor
Uso de MCPClient
El paquete exporta la clase MCPClient para la integración del lado del cliente:
Métodos de cliente de inferencia de IA
callToolWithAI(query, options)
Procesa una consulta del usuario a través de IA para determinar y ejecutar la herramienta más adecuada.
Parámetros:
query
: Cadena: la consulta o solicitud del usuario que se procesaráoptions
: Objeto (Opcional) - Opciones de configuraciónspecificTools
: String[] (opcional) - Restringe la selección de herramientas a esta lista de nombres de herramientasjustReasoning
: Boolean (opcional): cuando se establece entrue
, devuelve solo el razonamiento de la IA sin ejecutar la herramienta seleccionada
Iniciando el servidor
Puede iniciar el servidor mediante programación:
Herramientas
El servidor MCP expone diversas herramientas que permiten interactuar con las funcionalidades de Meilisearch. Cada herramienta corresponde a un punto final específico de la API de Meilisearch, lo que permite realizar operaciones como búsquedas, indexación y gestión de documentos.
Categorías de herramientas
- Herramientas del sistema : comprobaciones de estado, información de versión, estadísticas del servidor.
- Herramientas de índice : Administrar índices (crear, actualizar, eliminar, listar).
- Herramientas de documentos : agregue, actualice, elimine y recupere documentos.
- Herramientas de búsqueda : Búsqueda avanzada, incluida búsqueda vectorial.
- Herramientas de configuración : configure los ajustes del índice.
- Herramientas de tareas : Administrar tareas asincrónicas.
- Herramientas vectoriales : capacidades de búsqueda vectorial experimental.
Herramientas del sistema
salud
- Descripción : Comprueba si el servidor Meilisearch está en buen estado.
versión
- Descripción : Obtenga la información de la versión del servidor Meilisearch.
información
- Descripción : Obtenga la información del sistema del servidor Meilisearch.
estadísticas
- Descripción : Obtenga estadísticas sobre todos los índices o un índice específico.
- Parámetros :
indexUid
(cadena, opcional): identificador único del índice.
obtener tareas
- Descripción : Obtenga información sobre las tareas con filtrado opcional.
- Parámetros :
limit
(número, opcional): número máximo de tareas a devolver.from
(número, opcional): uid de la tarea desde el cual comenzar la búsqueda.status
(cadena, opcional): Estado de las tareas a devolver.type
(cadena, opcional): tipo de tareas a devolver.indexUids
(string[], opcional): UID de los índices en los que se realizaron tareas.
eliminar tareas
- Descripción : Eliminar tareas según los filtros proporcionados.
- Parámetros :
statuses
(cadena[], opcional): estados de las tareas a eliminar.types
(cadena[], opcional): tipos de tareas a eliminar.indexUids
(string[], opcional): UID de los índices en los que se realizaron las tareas a eliminar.uids
(número[], opcional): UID de las tareas a eliminar.canceledBy
(number[], opcional): UID de las tareas que cancelaron las tareas a eliminar.beforeUid
(número, opcional): elimina las tareas cuyo uid sea anterior a este valor.beforeStartedAt
(cadena, opcional): elimina las tareas que comenzaron a procesarse antes de esta fecha (formato ISO 8601).beforeFinishedAt
(cadena, opcional): elimina las tareas que finalizaron su procesamiento antes de esta fecha (formato ISO 8601).
Herramientas de índice
índices de lista
- Descripción : enumera todos los índices en la instancia de Meilisearch.
- Parámetros :
limit
(número, opcional): número máximo de índices a devolver.offset
(número, opcional): Número de índices a omitir.
obtener índice
- Descripción : Obtenga información sobre un índice específico de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.
crear-índice
- Descripción : Crea un nuevo índice de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único para el nuevo índice.primaryKey
(cadena, opcional): clave principal para el índice.
índice de actualización
- Descripción : Actualiza un índice de Meilisearch (actualmente solo admite la actualización de la clave principal).
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.primaryKey
(cadena, obligatoria): nueva clave principal para el índice.
eliminar índice
- Descripción : Eliminar un índice de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice a eliminar.
índices de swap
- Descripción : Intercambia dos o más índices en Meilisearch.
- Parámetros :
indexes
(cadena, obligatoria): matriz JSON de pares de índices para intercambiar, por ejemplo, [["movies", "movies_new"]].
Herramientas de documentos
obtener documentos
- Descripción : Obtenga documentos de un índice de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.limit
(número, opcional): número máximo de documentos a devolver (predeterminado: 20).offset
(número, opcional): Número de documentos a omitir (predeterminado: 0).fields
(string[], opcional): Campos a devolver en los documentos.filter
(cadena, opcional): consulta de filtro a aplicar.
obtener documento
- Descripción : Obtenga un documento por su ID de un índice de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.documentId
(cadena, obligatoria): ID del documento a recuperar.fields
(cadena[], opcional): Campos a devolver en el documento.
agregar documentos
- Descripción : Agrega documentos a un índice de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.documents
(cadena, obligatoria): matriz JSON de documentos para agregar.primaryKey
(cadena, opcional): clave principal para los documentos.
actualizar documentos
- Descripción : Actualizar documentos en un índice de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.documents
(cadena, obligatoria): matriz JSON de documentos para actualizar.primaryKey
(cadena, opcional): clave principal para los documentos.
eliminar documento
- Descripción : Eliminar un documento por su ID de un índice de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.documentId
(cadena, obligatoria): ID del documento a eliminar.
eliminar documentos
- Descripción : Elimina varios documentos por sus ID de un índice de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.documentIds
(cadena, obligatoria): matriz JSON de ID de documentos que se eliminarán.
eliminar-todos-los-documentos
- Descripción : Eliminar todos los documentos en un índice de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.
Herramientas de búsqueda
buscar
- Descripción : Busca documentos en un índice de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.q
(cadena, obligatoria): consulta de búsqueda.limit
(número, opcional): número máximo de resultados a devolver (predeterminado: 20).offset
(número, opcional): Número de resultados a omitir (predeterminado: 0).filter
(cadena, opcional): consulta de filtro a aplicar.sort
(string[], opcional): atributos para ordenar, por ejemplo ["price"].facets
(cadena[], opcional): Facetas a devolver.attributesToRetrieve
(cadena[], opcional): atributos para incluir en los resultados.attributesToCrop
(cadena[], opcional): atributos a recortar.cropLength
(número, opcional): longitud a la que se recortarán los atributos recortados.attributesToHighlight
(string[], opcional): Atributos a resaltar.highlightPreTag
(cadena, opcional): etiqueta para insertar antes del texto resaltado.highlightPostTag
(cadena, opcional): etiqueta para insertar después del texto resaltado.showMatchesPosition
(booleano, opcional): si se deben incluir las posiciones de los partidos en los resultados.matchingStrategy
(cadena, opcional): Estrategia de coincidencia: 'todos' o 'último'.
búsqueda múltiple
- Descripción : Realizar múltiples búsquedas en una sola solicitud.
- Parámetros :
queries
(cadena, obligatoria): matriz JSON de consultas de búsqueda, cada una de las cuales contiene los mismos parámetros que la herramientasearch
.
búsqueda global
- Descripción : Busque un término en todos los índices de Meilisearch disponibles y devuelva resultados combinados.
- Parámetros :
q
(cadena, obligatoria): consulta de búsqueda.limit
(número, opcional): número máximo de resultados a devolver por índice (predeterminado: 20).attributesToRetrieve
(cadena[], opcional): atributos para incluir en los resultados.
búsqueda por facetas
- Descripción : Busque valores de facetas que coincidan con criterios específicos.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.facetName
(cadena, obligatoria): nombre de la faceta a buscar.facetQuery
(cadena, opcional): consulta para comparar con los valores de la faceta.filter
(cadena, opcional): filtro para aplicar a la búsqueda base.
Herramientas de configuración
obtener configuraciones
- Descripción : Obtenga todas las configuraciones para un índice de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.
actualizar-configuración
- Descripción : Actualizar la configuración de un índice de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.settings
(cadena, obligatoria): objeto JSON que contiene la configuración para actualizar.
restablecer configuración
- Descripción : Restablece todas las configuraciones de un índice de Meilisearch a sus valores predeterminados.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.
Obtener herramientas de configuración
Las siguientes herramientas recuperan configuraciones específicas para un índice de Meilisearch:
- obtener atributos mostrados
- obtener atributos de búsqueda
- obtener atributos filtrables
- obtener atributos ordenables
- reglas de clasificación
- palabras clave
- obtener sinónimos
- obtener tolerancia a errores tipográficos
- obtener paginación
- facetado
- obtener diccionario
- obtener precisión de proximidad
- obtener tokens separadores
- obtener tokens no separadores
- diccionario de palabras
Todas estas herramientas tienen el mismo parámetro:
indexUid
(cadena, obligatoria): identificador único del índice.
Herramientas de configuración de actualización
Las siguientes herramientas actualizan configuraciones específicas para un índice de Meilisearch:
- actualizar atributos mostrados
indexUid
(cadena, obligatoria): identificador único del índice.displayedAttributes
(cadena, obligatoria): matriz JSON de atributos para mostrar, por ejemplo, ["título", "descripción"].
- actualizar atributos de búsqueda
indexUid
(cadena, obligatoria): identificador único del índice.searchableAttributes
(cadena, obligatoria): matriz JSON de atributos que se pueden buscar, por ejemplo, ["título", "descripción"].
- actualizar atributos filtrables
indexUid
(cadena, obligatoria): identificador único del índice.filterableAttributes
(cadena, obligatorio): matriz JSON de atributos que se pueden usar como filtros, por ejemplo, ["género", "director"].
- actualizar atributos ordenables
indexUid
(cadena, obligatoria): identificador único del índice.sortableAttributes
(cadena, obligatoria): matriz JSON de atributos que se pueden usar para ordenar, por ejemplo, ["precio", "fecha"].
- actualizar-reglas-de-clasificación
indexUid
(cadena, obligatoria): identificador único del índice.rankingRules
(cadena, obligatoria): matriz JSON de reglas de clasificación, por ejemplo, ["error tipográfico", "palabras", "proximidad", "atributo", "ordenación", "exactitud"].
- actualizar palabras vacías
indexUid
(cadena, obligatoria): identificador único del índice.stopWords
(cadena, obligatoria): matriz JSON de palabras que se ignorarán en las consultas de búsqueda, por ejemplo, ["el", "un", "un"].
- actualizar-sinónimos
indexUid
(cadena, obligatoria): identificador único del índice.synonyms
(cadena, obligatorio): objeto JSON que asigna palabras a sus sinónimos, por ejemplo {"movie": ["film"]}.
- actualización de tolerancia a errores tipográficos
indexUid
(cadena, obligatoria): identificador único del índice.typoTolerance
(cadena, obligatoria): objeto JSON con configuración de tolerancia a errores tipográficos, por ejemplo, {"enabled": true, "minWordSizeForTypos": {"oneTypo": 5, "twoTypos": 9}}.
- actualización-paginación
indexUid
(cadena, obligatoria): identificador único del índice.pagination
(cadena, obligatoria): objeto JSON con configuración de paginación, por ejemplo {"maxTotalHits": 1000}.
- actualización de facetas
indexUid
(cadena, obligatoria): identificador único del índice.faceting
(cadena, obligatorio): objeto JSON con configuración de facetado, p. ej. {"maxValuesPerFacet": 100}.
- actualizar diccionario
indexUid
(cadena, obligatoria): identificador único del índice.dictionary
(cadena, obligatorio): matriz JSON de palabras que se considerarán como una sola palabra, por ejemplo, ["San Francisco", "Nueva York"].
- actualizar-proximidad-precisión
indexUid
(cadena, obligatoria): identificador único del índice.proximityPrecision
(cadena, obligatoria): cadena con valor de precisión de proximidad, puede ser 'byWord' o 'byAttribute'.
- tokens separadores de actualización
indexUid
(cadena, obligatoria): identificador único del índice.separatorTokens
(cadena, obligatoria): matriz JSON de tokens que deben considerarse como separadores de palabras, por ejemplo, ["-", "_"].
- actualizar tokens no separadores
indexUid
(cadena, obligatoria): identificador único del índice.nonSeparatorTokens
(cadena, obligatoria): matriz JSON de tokens que no deben considerarse como separadores de palabras, por ejemplo, ["@", "."].
- actualizar diccionario de palabras
indexUid
(cadena, obligatoria): identificador único del índice.wordDictionary
(cadena, obligatoria): matriz JSON de palabras personalizadas para agregar al diccionario, por ejemplo, ["cbuilder", "meilisearch"].
Herramientas para restablecer configuraciones
Las siguientes herramientas restablecen configuraciones específicas para un índice de Meilisearch a sus valores predeterminados:
- restablecer atributos mostrados
- restablecer atributos de búsqueda
- restablecer atributos filtrables
- atributos ordenables restablecidos
- restablecer reglas de clasificación
- restablecer palabras vacías
- restablecer sinónimos
- restablecer la tolerancia a errores tipográficos
- restablecer paginación
- restablecimiento de facetas
- reiniciar diccionario
- restablecer proximidad-precisión
- tokens separadores de reinicio
- restablecer tokens no separadores
- restablecer diccionario de palabras
Todas estas herramientas de reinicio tienen el mismo parámetro:
indexUid
(cadena, obligatoria): identificador único del índice.
Herramientas de tareas
lista de tareas
- Descripción : Lista de tareas con filtrado opcional.
- Parámetros :
limit
(número, opcional): número máximo de tareas a devolver.from
(número, opcional): uid de la tarea desde el cual comenzar la búsqueda.statuses
(cadena[], opcional): estados de las tareas a devolver.types
(cadena[], opcional): tipos de tareas a devolver.indexUids
(string[], opcional): UID de los índices en los que se realizaron tareas.uids
(número[], opcional): UID de tareas específicas para devolver.
obtener tarea
- Descripción : Obtener información sobre una tarea específica.
- Parámetros :
taskUid
(número, obligatorio): Identificador único de la tarea.
cancelar tareas
- Descripción : Cancelar tareas según los filtros proporcionados.
- Parámetros :
statuses
(cadena[], opcional): estados de las tareas a cancelar.types
(cadena[], opcional): Tipos de tareas a cancelar.indexUids
(string[], opcional): UID de los índices en los que se realizaron tareas a cancelar.uids
(número[], opcional): UID de las tareas a cancelar.
esperar la tarea
- Descripción : Esperar a que se complete una tarea específica.
- Parámetros :
taskUid
(número, obligatorio): identificador único de la tarea a esperar.timeoutMs
(número, opcional): tiempo máximo de espera en milisegundos (predeterminado: 5000).intervalMs
(número, opcional): intervalo de sondeo en milisegundos (predeterminado: 500).
Herramientas vectoriales
habilitar la búsqueda vectorial
- Descripción : Habilite la función experimental de búsqueda vectorial en Meilisearch.
obtener características experimentales
- Descripción : Obtenga el estado de las funciones experimentales en Meilisearch.
actualización de incrustadores
- Descripción : Configurar incrustadores para la búsqueda vectorial.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.embedders
(cadena, obligatorio): objeto JSON que contiene configuraciones de embedder.
obtener incrustadores
- Descripción : Obtenga la configuración de incrustadores para un índice.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.
reiniciadores-incrustadores
- Descripción : Restablecer la configuración de incrustadores para un índice.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.
búsqueda vectorial
- Descripción : Realiza una búsqueda vectorial en un índice de Meilisearch.
- Parámetros :
indexUid
(cadena, obligatoria): identificador único del índice.vector
(cadena, obligatoria): matriz JSON que representa el vector a buscar.limit
(número, opcional): número máximo de resultados a devolver (predeterminado: 20).offset
(número, opcional): Número de resultados a omitir (predeterminado: 0).filter
(cadena, opcional): filtro a aplicar (por ejemplo, 'género = terror Y año > 2020').embedder
(cadena, opcional): nombre del embedder a utilizar (si se omite, se debe proporcionar un 'vector').attributes
(cadena[], opcional): atributos a incluir en la búsqueda vectorial.query
(cadena, opcional): consulta de texto a buscar (si se usa 'embedder' en lugar de 'vector').hybrid
(booleano, opcional): si se debe realizar una búsqueda híbrida (combinando búsqueda vectorial y de texto).hybridRatio
(número, opcional): relación entre la búsqueda vectorial y la búsqueda de texto en la búsqueda híbrida (0-1, valor predeterminado: 0,5).
This server cannot be installed
mcp-meilisearch
Related MCP Servers
- Python
- TypeScriptMIT License
- Apache 2.0
- Python