MCP SOP Server

Un servidor MCP para acceder y buscar Procedimientos Operativos Estándar (SOP) con soporte para el idioma italiano.

Documentación

Servidor MCP SOP

Un servidor de Model Context Protocol (MCP) para acceder y buscar Procedimientos Operativos Estándar (SOP) con soporte para el idioma italiano.

Descripción general

Este servidor MCP proporciona a los agentes de IA la capacidad de:

  • Buscar en la documentación de SOP de tu empresa mediante búsqueda semántica
  • Recuperar procedimientos relevantes según situaciones específicas
  • Explorar SOP por categoría
  • Obtener orientación sobre qué hacer en escenarios concretos

El servidor utiliza:

  • ChromaDB para almacenamiento vectorial y búsqueda semántica
  • Sentence Transformers con modelos multilingües para soporte del idioma italiano
  • FastMCP para la implementación del servidor MCP
  • RAG (Generación Aumentada por Recuperación) para recuperación inteligente de documentos

Características

  • 🇮🇹 Soporte para italiano: Utiliza incrustaciones multilingües optimizadas para texto en italiano
  • 📄 Soporte multi-formato: Procesa documentos PDF y DOCX
  • 🔍 Búsqueda semántica: Encuentra SOP relevantes según el significado, no solo palabras clave
  • 📁 Filtrado por categoría: Busca dentro de categorías específicas de SOP
  • 🤖 Listo para IA: Proporciona respuestas estructuradas perfectas para el consumo de LLM
  • Recuperación rápida: Búsqueda vectorial eficiente con ChromaDB
  • 🚀 Inicialización diferida: El servidor se inicia rápidamente, los documentos se indexan en la primera solicitud

Instalación

  1. Clona el repositorio:

    git clone https://github.com/dadapera/mcp-sop-server.git
    cd mcp-sop-server
    
  2. Crea y activa el entorno virtual:

    python -m venv venv
    
    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
  3. Instala las dependencias:

    pip install -r requirements.txt
    
  4. Añade tus documentos SOP: Crea un directorio sop_documents/ y organiza tus archivos SOP en carpetas por categoría.

Configuración

Configuración del cliente MCP

Para usar este servidor con Claude Desktop u otros clientes MCP, añádelo a la configuración de tu cliente MCP:

Para Claude Desktop (mcp-client-config.json):

{
  "mcpServers": {
    "sop-server": {
      "command": "/path/to/your/venv/Scripts/python.exe",
      "args": ["/path/to/your/mcp-sop-server/main.py"],
      "cwd": "/path/to/your/mcp-sop-server"
    }
  }
}

Nota: Asegúrate de usar la ruta completa al ejecutable de Python de tu entorno virtual y ajusta las rutas según tu sistema.

Estructura de directorios

El servidor espera que los documentos SOP estén organizados de la siguiente manera:

sop_documents/
├── SOP01 Quality System Documentation Management/
│   ├── document1.pdf
│   └── document2.docx
├── SOP02 HR management/
│   └── hr_procedures.pdf
├── SOP03 Design/
│   └── design_process.docx
└── ...

Uso

Iniciar el servidor

El servidor normalmente se inicia automáticamente mediante tu cliente MCP (como Claude Desktop). Si se ejecuta manualmente:

python main.py

El servidor:

  1. Se inicia rápidamente y espera conexiones
  2. En la primera llamada a una herramienta: escanea todos los documentos SOP en el directorio sop_documents/
  3. Procesa y extrae texto de archivos PDF y DOCX
  4. Genera incrustaciones usando el modelo multilingüe
  5. Almacena todo en ChromaDB para recuperación rápida

Herramientas disponibles

El servidor proporciona las siguientes herramientas MCP:

1. search_sop_documents

Busca contenido SOP relevante usando consultas en lenguaje natural.

Parámetros:

  • query (cadena): Consulta de búsqueda en italiano o inglés
  • max_results (entero, opcional): Número máximo de resultados a devolver (predeterminado: 5)
  • category (cadena, opcional): Filtrar por categoría de SOP

Ejemplo:

{
  "query": "Come gestire una non conformità nel processo di produzione",
  "max_results": 3,
  "category": "SOP05 Non Conformity"
}

2. get_sop_guidance

Obtén orientación específica para una situación basada en documentos SOP.

Parámetros:

  • situation (cadena): Descripción de la situación
  • category (cadena, opcional): Enfocar la búsqueda en una categoría específica

Ejemplo:

{
  "situation": "Un cliente ha segnalato un difetto nel prodotto consegnato",
  "category": "SOP05 Non Conformity"
}

3. list_sop_categories

Obtén todas las categorías de SOP disponibles y estadísticas de la colección.

4. get_sop_by_category

Recupera todos los SOP dentro de una categoría específica.

Parámetros:

  • category (cadena): Nombre de la categoría de SOP

5. refresh_sop_database

Actualiza la base de datos de documentos (útil cuando se actualizan los SOP).

6. get_server_status

Obtén el estado actual del servidor y estadísticas.

Configuración técnica

Modelo de incrustación

El servidor usa sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2 por defecto para soporte del idioma italiano. Puedes cambiarlo en src/mcp_sop_server/document_searcher.py:

model_name = "sentence-transformers/your-preferred-model"

Tamaño de fragmento

La división en fragmentos de texto se puede ajustar en src/mcp_sop_server/document_processor.py:

def chunk_text(self, text: str, chunk_size: int = 1000, overlap: int = 200):

Ubicación de la base de datos

La ubicación de almacenamiento de ChromaDB se establece automáticamente en chroma_db/ en la raíz del proyecto.

Ejemplos de consultas

Aquí tienes algunos ejemplos de consultas que puedes usar:

Italiano:

  • "Come gestire una non conformità?"
  • "Procedura per la manutenzione dell'infrastruttura"
  • "Cosa fare in caso di audit interno?"
  • "Gestione del magazzino e inventario"

Inglés:

  • "How to handle quality issues?"
  • "Software development lifecycle procedures"
  • "Risk management protocols"
  • "Employee training requirements"

Solución de problemas

Problemas comunes

  1. No se encuentran documentos: Asegúrate de que los documentos SOP estén en la estructura de directorios correcta
  2. Descarga del modelo de incrustación: La primera ejecución puede tardar en descargar el modelo multilingüe
  3. Uso de memoria: Las colecciones grandes de documentos pueden requerir más RAM para la generación de incrustaciones
  4. Problemas de rutas: Asegúrate de usar rutas absolutas en la configuración de tu cliente MCP

Registros

El servidor proporciona registros detallados con emojis para una mejor legibilidad:

  • 🚀 Inicio e inicialización del servidor
  • 📄 Estado del procesamiento de documentos
  • 📊 Estadísticas de procesamiento
  • ✅ Mensajes de éxito
  • ❌ Mensajes de error

Consulta la salida de la consola o los registros de tu cliente MCP para obtener información detallada.

Desarrollo

Estructura del proyecto

mcp-sop-server/
├── src/mcp_sop_server/          # Main package
│   ├── __init__.py              # Package initialization
│   ├── mcp_server.py            # FastMCP server and tools
│   ├── document_processor.py    # Document text extraction
│   └── document_searcher.py     # Vector search with ChromaDB
├── main.py                      # Entry point
├── requirements.txt             # Dependencies
├── test_server.py              # Server testing
├── mcp-client-config.json      # Example client configuration
└── README.md                   # This file

Añadir nuevos tipos de documentos

Para admitir formatos de archivo adicionales, extiende la clase DocumentProcessor:

def extract_text_from_new_format(self, file_path: Path) -> str:
    # Implementation for new format
    pass

Lógica de búsqueda personalizada

Modifica la clase DocumentSearcher para implementar algoritmos o filtros de búsqueda personalizados.

Herramientas adicionales

Añade nuevas herramientas MCP definiéndolas con el decorador @mcp.tool() en mcp_server.py.

Licencia

Este proyecto está destinado al uso interno de la empresa para acceder a la documentación de SOP.

Soporte

Para problemas o preguntas sobre el servidor MCP SOP, crea un issue en el repositorio de GitHub.