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
-
Clona el repositorio:
git clone https://github.com/dadapera/mcp-sop-server.git cd mcp-sop-server -
Crea y activa el entorno virtual:
python -m venv venv # On Windows venv\Scripts\activate # On macOS/Linux source venv/bin/activate -
Instala las dependencias:
pip install -r requirements.txt -
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:
- Se inicia rápidamente y espera conexiones
- En la primera llamada a una herramienta: escanea todos los documentos SOP en el directorio
sop_documents/ - Procesa y extrae texto de archivos PDF y DOCX
- Genera incrustaciones usando el modelo multilingüe
- 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ésmax_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óncategory(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
- No se encuentran documentos: Asegúrate de que los documentos SOP estén en la estructura de directorios correcta
- Descarga del modelo de incrustación: La primera ejecución puede tardar en descargar el modelo multilingüe
- Uso de memoria: Las colecciones grandes de documentos pueden requerir más RAM para la generación de incrustaciones
- 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.