Searchcraft

Gestiona los Documentos, Índices, Federaciones, Claves de Acceso y Análisis del clúster de Searchcraft.

Documentación

ReTail website screenshot

searchcraft-mcp-server

Un servidor MCP impulsado por Searchcraft – el motor de búsqueda vertical pensado para desarrolladores.

TypeScript Node.js Node.js

El servidor MCP de Searchcraft proporciona un conjunto de herramientas para gestionar los Documentos, Índices, Federaciones, Claves de Acceso y Analíticas de tu clúster Searchcraft. Permite que clientes MCP, como Claude Desktop, reciban instrucciones en lenguaje natural para realizar acciones administrativas como configurar índices de búsqueda, claves de acceso, ingerir documentos, ver analíticas, buscar en índices y más.

Cómo crear una aplicación en 2 minutos con el servidor MCP de Searchcraft (enlace al video)

Ejemplos de Prompts

Aquí tienes un ejemplo de prompt que podría usarse una vez que Claude esté conectado al servidor MCP de Searchcraft.

I'd like to create a product search application using the create_vite_app tool.

Please use this JSON dataset https://dummyjson.com/products
First use the Searchcraft create_index_from_json tool to create the index and add the documents.

Then create an API read key for the vite app using the create_key tool.

App details:
- App name: "my-ecommerce-app"
- Endpoint: http://localhost:8000
- Index name: my-ecommerce-app

Herramientas Disponibles

El servidor MCP de Searchcraft actualmente proporciona tres categorías de herramientas: herramientas de importación, herramientas de API del motor y herramientas de generación de aplicaciones:

Herramientas de API del Motor

Estas herramientas proporcionan acceso directo a la funcionalidad principal de tu clúster Searchcraft para gestionar índices, documentos, federaciones, autenticación y operaciones de búsqueda.

Gestión de Índices

Nombre de la HerramientaDescripción
create_indexCrea un nuevo índice con el esquema especificado. Esto vaciará el índice si ya existe.
delete_indexElimina un índice y todos sus documentos de forma permanente.
get_all_index_statsObtiene recuentos de documentos y estadísticas para todos los índices.
get_index_schemaObtiene la definición del esquema para un índice específico.
get_index_statsObtiene estadísticas y metadatos para un índice específico (recuento de documentos, etc.).
list_all_indexesObtiene una lista de todos los índices en la instancia de Searchcraft.
patch_indexRealiza cambios parciales de configuración en el esquema de un índice (search_fields, weight_multipliers, etc.).
update_indexReemplaza todo el contenido de un índice existente con una nueva definición de esquema.

Gestión de Documentos

Nombre de la HerramientaDescripción
add_documentsAñade uno o varios documentos a un índice. Los documentos deben proporcionarse como un array de objetos JSON.
delete_all_documentsElimina todos los documentos de un índice. El índice continuará existiendo después de que se eliminen todos los documentos.
delete_document_by_idElimina un solo documento de un índice por su ID interno de Searchcraft (_id).
delete_documents_by_fieldElimina uno o varios documentos de un índice por coincidencia de término de campo (por ejemplo, {id: 'xyz'} o {title: 'foo'}).
delete_documents_by_queryElimina uno o varios documentos de un índice por coincidencia de consulta.
get_document_by_idObtiene un solo documento de un índice por su ID interno de Searchcraft (_id).

Gestión de Federaciones

Nombre de la HerramientaDescripción
create_federationCrea o actualiza una federación con la configuración especificada.
delete_federationElimina una federación de forma permanente.
get_federation_detailsObtiene información detallada para una federación específica.
get_federation_statsObtiene recuentos de documentos por índice para una federación, así como el recuento total de documentos.
get_organization_federationsObtiene una lista de todas las federaciones para una organización específica.
list_all_federationsObtiene una lista de todas las federaciones en la instancia de Searchcraft.
update_federationReemplaza la entidad de federación actual con una actualizada.

Gestión de Autenticación y Claves

Nombre de la HerramientaDescripción
create_keyCrea una nueva clave de autenticación con permisos y controles de acceso especificados.
delete_all_keysElimina todas las claves de autenticación en el clúster de Searchcraft. ¡Úsalo con extrema precaución!
delete_keyElimina una clave de autenticación específica de forma permanente.
get_application_keysObtiene una lista de todas las claves de autenticación asociadas con una aplicación específica.
get_federation_keysObtiene una lista de todas las claves de autenticación asociadas con una federación específica.
get_key_detailsObtiene información detallada para una clave de autenticación específica.
get_organization_keysObtiene una lista de todas las claves de autenticación asociadas con una organización específica.
list_all_keysObtiene una lista de todas las claves de autenticación en el clúster de Searchcraft.
update_keyActualiza una clave de autenticación existente con una nueva configuración.

Gestión de Palabras Vacías (Stopwords)

Nombre de la HerramientaDescripción
add_stopwordsAñade palabras vacías personalizadas a un índice. Estas se añaden además del diccionario predeterminado específico del idioma.
delete_all_stopwordsElimina todas las palabras vacías personalizadas de un índice. Esto solo afecta a las palabras vacías personalizadas, no al diccionario de idioma predeterminado.
delete_stopwordsElimina palabras vacías personalizadas específicas de un índice. Esto solo afecta a las palabras vacías personalizadas, no al diccionario de idioma predeterminado.
get_index_stopwordsObtiene todas las palabras vacías de un índice, incluyendo tanto el diccionario de idioma predeterminado como las palabras vacías personalizadas.

Gestión de Sinónimos

Nombre de la HerramientaDescripción
add_synonymsAñade sinónimos a un índice. Los sinónimos solo funcionan con consultas difusas, no con consultas de coincidencia exacta.
delete_all_synonymsElimina todos los sinónimos de un índice.
delete_synonymsElimina sinónimos específicos de un índice por sus claves.
get_index_synonymsObtiene todos los sinónimos definidos para un índice.

Búsqueda y Analíticas

Nombre de la HerramientaDescripción
get_measure_conversionObtiene datos de conversión de mediciones con parámetros opcionales de filtrado y agregación. *requiere Clickhouse si se ejecuta localmente
get_measure_summaryObtiene datos de resumen de mediciones con parámetros opcionales de filtrado y agregación. *requiere Clickhouse si se ejecuta localmente
get_search_resultsRealiza una consulta de búsqueda usando la API de Searchcraft con soporte para coincidencia difusa/exacta, facetas y rangos de fechas.
get_prelim_search_dataObtiene campos de esquema e información de facetas para un índice de búsqueda para comprender los campos disponibles para construir consultas.
get_searchcraft_statusObtiene el estado actual del servicio de búsqueda de Searchcraft.

Herramientas de Importación

Estas herramientas proporcionan flujos de trabajo para importar datos JSON y generar automáticamente esquemas de Searchcraft. Perfectas para configurar rápidamente nuevos índices a partir de fuentes de datos existentes.

Nombre de la HerramientaDescripción
analyze_json_from_fileLee datos JSON de un archivo local y analiza su estructura para comprender los tipos de campos y patrones para la generación de esquemas de índice de Searchcraft.
analyze_json_from_urlObtiene datos JSON de una URL y analiza su estructura para comprender los tipos de campos y patrones para la generación de esquemas de índice de Searchcraft.
generate_searchcraft_schemaGenera un esquema de índice de Searchcraft completo a partir de la estructura JSON analizada, con opciones personalizables para campos de búsqueda, pesos y otras configuraciones del índice.
create_index_from_jsonFlujo de trabajo completo para crear un índice de Searchcraft a partir de datos JSON. Obtiene JSON de una URL o archivo, analiza la estructura, genera el esquema, crea el índice y añade todos los documentos en un solo paso.

Flujo de Trabajo de las Herramientas de Importación

Las herramientas de importación están diseñadas para trabajar juntas en un flujo de trabajo simplificado:

  1. Analizar → Usa analyze_json_from_file o analyze_json_from_url para examinar la estructura de tus datos JSON
  2. Generar → Usa generate_searchcraft_schema para crear un esquema de Searchcraft personalizado a partir del análisis
  3. Crear → Usa la herramienta create_index de la API del Motor para crear el índice con tu esquema generado
  4. Importar → Usa add_documents para poblar tu nuevo índice con datos

O usa el enfoque todo-en-uno:

  • Un Solo Paso → Usa create_index_from_json para analizar, generar el esquema, crear el índice e importar todos los documentos en un solo comando

Herramientas de Generación de Aplicaciones

Estas herramientas crean aplicaciones de búsqueda completas y listas para ejecutar a partir de tus datos JSON, perfectas para prototipos y demostraciones.

Nombre de la HerramientaDescripción
create_vite_appCrea una aplicación de búsqueda completa de Vite + React a partir de datos JSON. Analiza la estructura de tus datos, genera plantillas de búsqueda optimizadas y crea una aplicación web totalmente funcional con integración de Searchcraft.

Flujo de Trabajo de Generación de Aplicaciones

Las herramientas de generación de aplicaciones proporcionan una solución de extremo a extremo para crear aplicaciones de búsqueda:

  1. Análisis de Datos → Analiza automáticamente tu estructura JSON para comprender los tipos de campos y el contenido
  2. Generación de Plantillas → Crea plantillas de resultados de búsqueda optimizadas basadas en tus campos de datos
  3. Creación de la Aplicación → Clona y configura una aplicación completa de Vite + React
  4. Configuración del Entorno → Configura los ajustes de conexión de Searchcraft
  5. Listo para Ejecutar → Proporciona una aplicación de búsqueda totalmente funcional que puedes iniciar y personalizar inmediatamente

Uso Detallado de las Herramientas

Uso de create_index_from_json

La herramienta create_index_from_json proporciona un flujo de trabajo completo para crear un índice de Searchcraft a partir de datos JSON en un solo comando. Esto es perfecto para configurar rápidamente índices de búsqueda a partir de conjuntos de datos existentes. Ten en cuenta que, si conoces el idioma de los datos que estás importando, debes especificarlo con el parámetro language (usa el código de dos letras ISO 639-1 para el idioma)

Parámetros

ParámetroTipoRequeridoDescripción
source"url" o "file"✅Si obtener datos de una URL o leerlos de un archivo local
pathstring✅URL o ruta de archivo a los datos JSON
index_namestring✅Nombre para el nuevo índice de Searchcraft
sample_sizenumber❌Número de elementos a analizar para la generación del esquema (predeterminado: 10)
search_fieldsstring[]❌Sobrescribir los campos de búsqueda detectados automáticamente
weight_multipliersobject❌Pesos de campo personalizados para la relevancia de búsqueda (0.0-10.0)
languagestring❌Código de idioma para el índice (por ejemplo, "en", "es")
auto_commit_delaynumber❌Retraso de confirmación automática en segundos
exclude_stop_wordsboolean❌Si excluir palabras vacías de la búsqueda
time_decay_fieldstring❌Nombre del campo para la decadencia de relevancia basada en el tiempo

Ejemplo de Uso

Desde una URL:

{
  "source": "url",
  "path": "https://api.example.com/products.json",
  "index_name": "products",
  "sample_size": 50,
  "search_fields": ["title", "description", "category"],
  "weight_multipliers": {
    "title": 2.0,
    "description": 1.0,
    "category": 1.5
  }
}

Desde un archivo local:

{
  "source": "file",
  "path": "/path/to/data.json",
  "index_name": "my_data",
  "language": "en"
}

Qué hace

  1. Obtiene/Lee Datos → Descarga desde URL o lee desde archivo local
  2. Analiza la Estructura → Examina el JSON para comprender los tipos de campos y patrones
  3. Genera el Esquema → Crea un esquema de índice de Searchcraft optimizado
  4. Crea el Índice → Configura el índice en tu clúster de Searchcraft
  5. Importa Documentos → Añade todos los datos JSON como documentos buscables
  6. Devuelve un Resumen → Proporciona información detallada sobre lo que se creó

Formato JSON Esperado

La herramienta funciona con varias estructuras JSON:

  • Array de objetos: [{...}, {...}, ...]
  • Objeto con propiedad de array: {"data": [{...}, {...}], "meta": {...}}
  • Objeto único: {...} (se tratará como un solo documento)

La herramienta encuentra automáticamente el mejor array de objetos para usar en el índice.

Uso de create_vite_app

La herramienta create_vite_app crea una aplicación de búsqueda completa y lista para ejecutar a partir de tus datos JSON. Es perfecta para prototipar rápidamente interfaces de búsqueda o crear aplicaciones de demostración.

Parámetros

ParámetroTipoRequeridoDescripción
data_source"url" o "file"✅Si obtener datos de una URL o leer desde un archivo local
data_pathstring✅URL o ruta de archivo a los datos JSON
app_namestring✅Nombre para la aplicación generada (se usa para el nombre del directorio)
VITE_ENDPOINT_URLstring✅La URL del endpoint de tu clúster de Searchcraft
VITE_INDEX_NAMEstring✅El nombre del índice de Searchcraft al que conectarse
VITE_READ_KEYstring✅Clave de lectura de Searchcraft para la aplicación
sample_sizenumber❌Número de elementos a analizar para la generación de plantillas (predeterminado: 50)
search_fieldsstring[]❌Sobrescribir los campos de búsqueda detectados automáticamente
weight_multipliersobject❌Pesos personalizados de campos para la relevancia de búsqueda (0.0-10.0)

Ejemplo de uso

Si viste el prompt anteriormente en la documentación, puedes usar fácilmente la herramienta create_vite_app con lenguaje natural. Sin embargo, si deseas un control más preciso, puedes usar la herramienta con parámetros JSON.

Creando una aplicación de búsqueda de productos:

{
  "data_source": "url",
  "data_path": "https://api.example.com/products.json",
  "app_name": "product-search",
  "VITE_ENDPOINT_URL": "https://your-cluster.searchcraft.io",
  "VITE_INDEX_NAME": "products",
  "VITE_READ_KEY": "your_read_key_here",
  "sample_size": 100,
  "search_fields": ["title", "description", "brand"],
  "weight_multipliers": {
    "title": 2.5,
    "description": 1.0,
    "brand": 1.8
  }
}

Creando una aplicación de búsqueda de blog desde datos locales:

{
  "data_source": "file",
  "data_path": "/path/to/blog-posts.json",
  "app_name": "blog-search",
  "VITE_ENDPOINT_URL": "https://your-cluster.searchcraft.io",
  "VITE_INDEX_NAME": "blog_posts",
  "VITE_READ_KEY": "your_read_key_here"
}

Qué hace

  1. Analiza la estructura de datos → Examina tu JSON para comprender los tipos de campos y los patrones de contenido
  2. Genera plantillas de búsqueda → Crea plantillas optimizadas de visualización de resultados basadas en tus datos
  3. Clona la plantilla de Vite → Descarga la plantilla oficial de Searchcraft Vite + React
  4. Instala dependencias → Configura todos los paquetes npm necesarios
  5. Configura el entorno → Crea el archivo .env con tu configuración de Searchcraft
  6. Personaliza plantillas → Genera componentes dinámicos de resultados de búsqueda
  7. Actualiza el código de la aplicación → Modifica la aplicación principal con tu marca y configuración específicas

Características de la aplicación generada

La aplicación creada incluye:

  • React + Vite → Configuración de desarrollo moderna y rápida
  • Integración con el SDK de Searchcraft → Funcionalidad completa de búsqueda lista para usar
  • Diseño responsivo → Funciona en dispositivos de escritorio y móviles
  • Plantillas autogeneradas → Visualización inteligente de resultados según tu estructura de datos
  • Configuración de entorno → Configuración fácil para diferentes entornos
  • Servidor de desarrollo → Recarga en caliente para personalización rápida

Lógica de generación de plantillas

La herramienta analiza inteligentemente tus datos para crear plantillas óptimas de resultados de búsqueda:

  • Detección de campo de título → Encuentra el mejor campo para usar como título principal
  • Detección de campo de descripción → Identifica campos de texto descriptivos
  • Detección de campo de imagen → Localiza URLs de imágenes para resultados visuales
  • Detección de campo de fecha → Encuentra campos de marca de tiempo para ordenamiento temporal
  • Campos adicionales → Incluye otros campos de texto relevantes para resultados completos

Próximos pasos después de la creación

Una vez que la aplicación esté creada, puedes:

  1. Iniciar el servidor de Vite:

    cd apps/your-app-name
    yarn dev
    
  2. Personalizar el estilo → Modifica CSS y componentes para que coincidan con tu marca

  3. Agregar funciones → Extiende con filtros, facetas u opciones avanzadas de búsqueda

  4. Implementar → Compila e implementa en tu plataforma de hosting preferida

Requisitos previos

  • Índice de Searchcraft existente → El índice especificado en VITE_INDEX_NAME ya debería existir
  • Clave de lectura válida → La VITE_READ_KEY debe tener permisos de lectura para el índice
  • Git disponible → La herramienta usa git para clonar el repositorio de plantillas
  • Node.js y Yarn → Requeridos para la instalación de dependencias

Flujo de trabajo completo: de JSON a aplicación de búsqueda

Aquí se explica cómo usar ambas herramientas juntas para pasar de datos JSON sin procesar a una aplicación de búsqueda completamente funcional:

Opción 1: Proceso de dos pasos (recomendado para producción)

Paso 1: Crear el índice de Searchcraft

{
  "source": "url",
  "path": "https://api.example.com/products.json",
  "index_name": "products",
  "sample_size": 100,
  "search_fields": ["title", "description", "category", "brand"],
  "weight_multipliers": {
    "title": 2.5,
    "description": 1.0,
    "category": 1.8,
    "brand": 1.5
  },
  "language": "en"
}

Paso 2: Crear la aplicación de búsqueda

{
  "data_source": "url",
  "data_path": "https://api.example.com/products.json",
  "app_name": "product-search-app",
  "VITE_ENDPOINT_URL": "https://your-cluster.searchcraft.io",
  "VITE_INDEX_NAME": "products",
  "VITE_READ_KEY": "your_read_key_here",
  "sample_size": 100,
  "search_fields": ["title", "description", "category", "brand"],
  "weight_multipliers": {
    "title": 2.5,
    "description": 1.0,
    "category": 1.8,
    "brand": 1.5
  }
}

Opción 2: Proceso solo de aplicación (para índices existentes)

Si ya tienes un índice de Searchcraft configurado, puedes pasar directamente a crear la aplicación:

{
  "data_source": "url",
  "data_path": "https://api.example.com/products.json",
  "app_name": "my-search-app",
  "VITE_ENDPOINT_URL": "https://your-cluster.searchcraft.io",
  "VITE_INDEX_NAME": "existing_index",
  "VITE_READ_KEY": "your_read_key_here"
}

Beneficios del enfoque de dos pasos

  • Optimización del índice → Ajusta tu índice de búsqueda por separado de la interfaz de usuario
  • Múltiples aplicaciones → Crea diferentes interfaces de búsqueda para los mismos datos
  • Listo para producción → Mejor separación de preocupaciones para implementaciones de producción
  • Depuración más fácil → Prueba la funcionalidad de búsqueda independientemente de la interfaz de usuario

Primeros pasos

Variables de entorno

Crea el archivo .env en la raíz del proyecto y completa los valores:

# Server Config
USER_AGENT=searchcraft-mcp-server/<project-version>
DEBUG=true
PORT=3100

# Searchcraft Config
ENDPOINT_URL= # The endpoint url of your Searchcraft Cluster
CORE_API_KEY= # The Searchcraft API key of your Searchcraft cluster. Must match the permissions required by the tools you are using.

Ejemplo de .env

Uso remoto

Si ya has creado un índice a través de Vektron en Searchcraft Cloud, puedes usar la clave de escritura para el índice al que intentas acceder y usar el servidor MCP para operaciones de API que no requieren privilegios de administrador. IMPORTANTE: Si usas el servidor MCP con una clave de escritura, NO debe estar expuesta públicamente en internet. Las claves de escritura están diseñadas para estar protegidas y, al ejecutar un servidor MCP, cualquier usuario con acceso al servidor MCP podrá escribir en el índice o eliminar datos.

Instalación y configuración

Asegúrate de que tu entorno tenga la versión correcta de node seleccionada.

nvm use

Instala las dependencias con yarn

yarn

Compila el servidor

yarn build

Esto crea dos versiones del servidor:

  • dist/server.js - Servidor HTTP para pruebas e implementación remota
  • dist/stdio-server.js - Servidor stdio para Claude Desktop

Uso

Opción 1: Claude Desktop (stdio) - Recomendado

Para uso local con Claude Desktop, usa la versión stdio que proporciona mejor rendimiento y confiabilidad.

claude_desktop_config.json

{
  "mcpServers": {
    "searchcraft": {
      "command": "node",
      "args": [
        "/path/to/searchcraft-mcp-server/dist/stdio-server.js"
      ]
    }
  }
}

El archivo de configuración de Claude Desktop se puede encontrar en:

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

Si el archivo no existe, créalo.

Opción 2: Claude Code

Para uso con Claude Code, usa la CLI para configurar el servidor MCP:

Configuración básica:

# Add the Searchcraft MCP server to Claude Code
claude mcp add searchcraft -- node /path/to/searchcraft-mcp-server/dist/stdio-server.js

Con variables de entorno:

# Add with your Searchcraft cluster configuration
claude mcp add searchcraft \
  --env ENDPOINT_URL=https://your-cluster.searchcraft.io \
  --env CORE_API_KEY=YOUR_API_KEY \
  -- node /path/to/searchcraft-mcp-server/dist/stdio-server.js

Ámbitos de configuración:

  • --scope local (predeterminado): Disponible solo para ti en el proyecto actual
  • --scope project: Compartido con el equipo a través del archivo .mcp.json (recomendado para equipos)
  • --scope user: Disponible para ti en todos los proyectos

Gestión de servidores:

# List configured servers
claude mcp list

# Check server status
/mcp

# Remove server
claude mcp remove searchcraft

Opción 3: Open WebUI (a través de Pipelines)

Open WebUI admite servidores MCP a través de su marco de trabajo Pipelines. Esto requiere crear un pipeline personalizado que conecte tu servidor MCP con Open WebUI.

Paso 1: Iniciar el servidor HTTP de Searchcraft MCP

yarn start  # Starts HTTP server on port 3100

Paso 2: Crear un pipeline MCP para Open WebUI

Crea un archivo llamado searchcraft_mcp_pipeline.py:

"""
title: Searchcraft MCP Pipeline
author: Searchcraft Team
version: 1.0.0
license: Apache-2.0
description: A pipeline that integrates Searchcraft MCP server with Open WebUI
requirements: requests
"""

import requests
import json
from typing import List, Union, Generator, Iterator
from pydantic import BaseModel


class Pipeline:
    class Valves(BaseModel):
        MCP_SERVER_URL: str = "http://localhost:3100/mcp"
        ENDPOINT_URL: str = ""
        CORE_API_KEY: str = ""

    def __init__(self):
        self.name = "Searchcraft MCP Pipeline"
        self.valves = self.Valves()

    async def on_startup(self):
        print(f"on_startup:{__name__}")

    async def on_shutdown(self):
        print(f"on_shutdown:{__name__}")

    def pipe(
        self, user_message: str, model_id: str, messages: List[dict], body: dict
    ) -> Union[str, Generator, Iterator]:
        # This pipeline acts as a bridge between Open WebUI and your MCP server
        # You can customize this to handle specific Searchcraft operations

        # Example: If user mentions search operations, route to MCP server
        if any(keyword in user_message.lower() for keyword in ['search', 'index', 'document', 'searchcraft']):
            try:
                # Initialize MCP session
                init_payload = {
                    "jsonrpc": "2.0",
                    "id": 1,
                    "method": "initialize",
                    "params": {
                        "protocolVersion": "2025-06-18",
                        "capabilities": {},
                        "clientInfo": {"name": "open-webui-pipeline", "version": "1.0.0"}
                    }
                }

                response = requests.post(self.valves.MCP_SERVER_URL, json=init_payload)

                if response.status_code == 200:
                    # Add context about available Searchcraft tools
                    enhanced_message = f"""
{user_message}

[Available Searchcraft MCP Tools: create_index, delete_index, add_documents, get_search_results, list_all_indexes, get_index_stats, create_key, delete_key, and 20+ more tools for managing Searchcraft clusters]
"""
                    return enhanced_message

            except Exception as e:
                print(f"MCP connection error: {e}")

        return user_message

Paso 3: Instalar el pipeline en Open WebUI

  1. A través del panel de administración:

    • Ve a Configuración de administración → Pipelines
    • Haz clic en "Agregar pipeline"
    • Pega el código del pipeline anterior
    • Configura las válvulas con tu configuración de Searchcraft:
      • MCP_SERVER_URL: http://localhost:3100/mcp
      • ENDPOINT_URL: La URL de tu clúster de Searchcraft
      • CORE_API_KEY: Tu clave API de Searchcraft
  2. A través del entorno Docker:

    # Save the pipeline to a file and mount it
    docker run -d -p 3000:8080 \
      -v open-webui:/app/backend/data \
      -v ./searchcraft_mcp_pipeline.py:/app/backend/data/pipelines/searchcraft_mcp_pipeline.py \
      --name open-webui \
      ghcr.io/open-webui/open-webui:main
    

Paso 4: Configurar Open WebUI para usar Pipelines

  1. Inicia Open WebUI con soporte de Pipelines:

    # Using Docker Compose (recommended)
    services:
      openwebui:
        image: ghcr.io/open-webui/open-webui:main
        ports:
          - "3000:8080"
        volumes:
          - open-webui:/app/backend/data
        environment:
          - OPENAI_API_BASE_URL=http://pipelines:9099
          - OPENAI_API_KEY=0p3n-w3bu!
    
      pipelines:
        image: ghcr.io/open-webui/pipelines:main
        volumes:
          - pipelines:/app/pipelines
        environment:
          - PIPELINES_API_KEY=0p3n-w3bu!
    
  2. En Configuración de Open WebUI → Conexiones:

    • Establece la URL de la API de OpenAI en tu instancia de Pipelines
    • Habilita el pipeline MCP de Searchcraft

Opción 4: Servidor HTTP (para pruebas/implementación remota)

Inicia el servidor HTTP para pruebas, depuración o implementación remota:

yarn start  # Starts HTTP server on port 3100

Para Claude Desktop con servidor HTTP, necesitarás mcp-remote:

claude_desktop_config.json

{
  "mcpServers": {
    "searchcraft": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "http://localhost:3100/mcp"
      ]
    }
  }
}

Opción 5: Docker

Ejecuta el servidor MCP de Searchcraft en un contenedor Docker para una implementación fácil y portabilidad.

Compilar la imagen Docker:

docker build --load -t searchcraft-mcp-server .

Ejecutar el contenedor:

docker run -it -p 8000:8000 \
  --name searchcraft-mcp-server \
  -e ENDPOINT_URL="https://your-cluster.searchcraft.io" \
  -e CORE_API_KEY="your_searchcraft_core_API_key" \
  searchcraft-mcp-server

Probar el servidor:

# Health check
curl http://localhost:8000/health

# Test MCP endpoint
curl -X POST http://localhost:8000/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}'

Inspección remota con MCP Inspector:

npx @modelcontextprotocol/inspector --transport http --server-url http://localhost:8000/mcp

Configuración de Docker:

  • Usa Node.js 22-slim como imagen base
  • Expone el puerto 3100 por defecto (configurable a través de la variable de entorno PORT)
  • Maneja automáticamente el apagado elegante en SIGINT/SIGTERM
  • Optimizado para producción con tamaño de imagen mínimo

Variables de entorno:

  • PORT - Puerto del servidor HTTP (predeterminado: 8000)
  • ENDPOINT_URL - La URL del endpoint de tu clúster de Searchcraft
  • CORE_API_KEY - Tu clave API de Searchcraft
  • DEBUG - Habilitar registro de depuración (opcional)

Scripts disponibles

# Development
yarn dev          # Watch HTTP server
yarn dev:stdio    # Watch stdio server

# Production
yarn start        # Start HTTP server
yarn start:stdio  # Start stdio server

# Testing
yarn inspect      # Launch MCP inspector
yarn claude-logs  # View Claude Desktop logs

Comparación de opciones de implementación

Característicastdio (Recomendado)HTTP (Local)Docker
Rendimiento✅ Mejor (IPC directo)⚠️ Sobrecarga HTTP✅ Bueno
Seguridad✅ Sin puertos expuestos⚠️ Puerto de red requerido✅ Entorno aislado
Complejidad de configuración✅ Simple⚠️ Gestión de puertos necesaria✅ Simple (un comando)
Claude Desktop✅ Soporte nativo⚠️ Requiere mcp-remote⚠️ Requiere mcp-remote
Claude Code✅ Soporte nativo✅ Compatible✅ Compatible
Open WebUI❌ No compatible✅ A través de Pipelines✅ A través de Pipelines
Implementación remota❌ Solo local✅ Posible pero manual✅ Contenerización fácil
Pruebas⚠️ Requiere herramientas MCP✅ Fácil con curl✅ Fácil con curl
Múltiples clientes❌ Uno a la vez✅ Acceso concurrente✅ Acceso concurrente
Portabilidad⚠️ Requiere Node.js⚠️ Requiere Node.js✅ Se ejecuta en cualquier lugar

Usa stdio cuando:

  • Uses Claude Desktop o Claude Code localmente
  • Quieras el mejor rendimiento absoluto
  • Prefieras comunicación directa entre procesos

Usa HTTP (local) cuando:

  • Necesites probar/depurar la interfaz HTTP
  • Estés desarrollando integraciones personalizadas
  • Necesites múltiples clientes locales concurrentes

Usa Docker cuando:

  • Necesites implementación remota
  • Quieras una configuración fácil y reproducible
  • Estés implementando en plataformas en la nube
  • Quieras aislamiento y seguridad
  • Necesites publicar tu servidor para inspección

Pruebas

El servidor MCP de Searchcraft incluye un conjunto completo de pruebas construido con Vitest.

Ejecutar pruebas

# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Run tests with coverage
npm run test:coverage

# Show test reports
npm run test:ui

Cobertura de pruebas

  • ✅ 89 pruebas que cubren la funcionalidad principal
  • ✅ Cobertura del 84%+ en helpers y utilidades
  • ✅ Cobertura del 93%+ en el analizador JSON
  • ✅ Cobertura del 100% en la creación del servidor
  • ✅ Pruebas de integración para endpoints HTTP
  • ✅ Pruebas unitarias para todos los componentes principales

Consulta test/README.md para documentación detallada de pruebas.

Depuración

Registros de Claude Desktop

Para ver los registros de Claude Desktop para depurar conexiones MCP:

yarn claude-logs

Pruebas con MCP Inspector

MCP Inspector te permite probar las herramientas de tu servidor de forma interactiva.

Para servidor stdio (recomendado):

yarn inspect
  • Elige Tipo de transporte: stdio
  • Comando: node dist/stdio-server.js

Para servidor HTTP:

yarn start  # Start HTTP server first
yarn inspect
  • Elige Tipo de transporte: HTTP transmisible
  • URL: http://localhost:3100/mcp

Pruebas manuales

Probar servidor HTTP:

# Health check
curl http://localhost:3100/health

# Test MCP endpoint
curl -X POST http://localhost:3100/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}'

Probar servidor stdio:

echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"test","version":"1.0.0"}}}' | node dist/stdio-server.js

Recursos

Problemas y solicitudes de funciones

Visita https://github.com/searchcraft-inc/searchcraft-issues

Licencia

Licenciado bajo la Licencia Apache 2.0.

Construido con 🛰️ por el equipo de Searchcraft