Text Classification (Model2Vec)
Un servidor para clasificación de texto que utiliza embeddings estáticos de Model2Vec, compatible con múltiples transportes como stdio y HTTP/SSE.
Documentación
Servidor MCP de Clasificación de Texto (Model2Vec)
Un potente servidor de Protocolo de Contexto de Modelo (MCP) que proporciona herramientas integrales de clasificación de texto utilizando incrustaciones estáticas rápidas de Model2Vec (Minish Lab).
🛠️ Herramientas y Recursos MCP Completos
Este servidor proporciona 6 herramientas esenciales, 2 recursos y 1 plantilla de prompt para la clasificación de texto:
🏷️ Herramientas de Clasificación
classify_text- Clasificar texto individual con puntuaciones de confianzabatch_classify- Clasificar múltiples textos simultáneamente
📝 Herramientas de Gestión de Categorías
add_custom_category- Agregar categorías personalizadas individualesbatch_add_custom_categories- Agregar múltiples categorías a la vezlist_categories- Ver todas las categorías disponiblesremove_categories- Eliminar categorías no deseadas
📊 Recursos
categories://list- Acceder a la lista de categorías programáticamentemodel://info- Obtener información del modelo y del sistema
💬 Plantillas de Prompt
classification_prompt- Plantilla de prompt de clasificación lista para usar
🚀 Características Clave
- Sin instalación: Solo
uv run— las dependencias se declaran en línea (PEP 723) - Múltiples Transportes: Soporta stdio (local), HTTP/SSE y HTTP Streamable
- Clasificación Rápida: Utiliza incrustaciones estáticas eficientes de Model2Vec
- 10 Categorías Predeterminadas: Tecnología, negocios, salud, deportes, entretenimiento, política, ciencia, educación, viajes, comida
- Categorías Personalizadas: Agrega tus propias categorías con descripciones
- Procesamiento por Lotes: Clasifica múltiples textos a la vez
- Puntos de Acceso de Recursos: Accede a listas de categorías e información del modelo
- Plantillas de Prompt: Prompts integrados para tareas de clasificación
📋 Instalación
Requisitos Previos
- Python 3.10+
uvgestor de paquetes
Configuración Rápida
No se necesita un paso de instalación separado — las dependencias se declaran en línea en el script (PEP 723) y se resuelven automáticamente por uv.
🏃♂️ Ejecutando el Servidor
Transporte Stdio (Predeterminado)
uv run text_classifier_server.py
Transporte HTTP/SSE
# SSE on default port 8000
uv run text_classifier_server.py --http
# SSE on custom port
uv run text_classifier_server.py --http 9000
Transporte HTTP Streamable
uv run text_classifier_server.py --streamable-http
🔧 Configuración
Para Claude Desktop
Transporte Stdio (Local)
Agregar a ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"text-classifier": {
"command": "uv",
"args": ["run", "/path/to/text_classifier_server.py"]
}
}
}
Transporte HTTP (Remoto)
Inicia el servidor con uv run text_classifier_server.py --http, luego agrega:
{
"mcpServers": {
"text-classifier": {
"url": "http://localhost:8000/sse"
}
}
}
Para Claude Code
claude mcp add text-classifier -- uv run /Users/olivier/DEV/mcp-text-classifier/text_classifier_server.py
🛠️ Herramientas Disponibles
classify_text
Clasifica un texto individual en categorías predefinidas con puntuaciones de confianza.
Parámetros:
text(cadena): El texto a clasificartop_k(entero, opcional): Número de categorías principales a devolver (predeterminado: 3)
Devuelve: JSON con predicciones, puntuaciones de confianza y descripciones de categorías
Ejemplo:
classify_text("Apple announced new AI features", top_k=3)
batch_classify
Clasifica múltiples textos simultáneamente para un procesamiento eficiente.
Parámetros:
texts(lista): Lista de textos a clasificartop_k(entero, opcional): Número de categorías principales por texto (predeterminado: 1)
Devuelve: JSON con resultados de clasificación por lotes
Ejemplo:
batch_classify(["Tech news", "Sports update", "Business report"], top_k=2)
add_custom_category
Agrega una nueva categoría personalizada para clasificación.
Parámetros:
category_name(cadena): Nombre de la nueva categoríadescription(cadena): Descripción para generar la incrustación de la categoría
Devuelve: JSON con el resultado de la operación
Ejemplo:
add_custom_category("automotive", "Cars, vehicles, transportation, automotive industry")
batch_add_custom_categories
Agrega múltiples categorías personalizadas en una sola operación para mayor eficiencia.
Parámetros:
categories_data(lista): Lista de diccionarios con claves 'name' y 'description'
Devuelve: JSON con resultados de operación por lotes
Ejemplo:
batch_add_custom_categories([
{"name": "automotive", "description": "Cars, vehicles, transportation"},
{"name": "music", "description": "Music, songs, artists, albums, concerts"}
])
list_categories
Lista todas las categorías disponibles y sus descripciones.
Parámetros: Ninguno
Devuelve: JSON con todas las categorías y sus descripciones
remove_categories
Elimina una o múltiples categorías del sistema de clasificación.
Parámetros:
category_names(lista): Lista de nombres de categorías a eliminar
Devuelve: JSON con resultados de eliminación para cada categoría
Ejemplo:
remove_categories(["automotive", "custom_category"])
📚 Recursos Disponibles
categories://list: Obtener lista de categorías disponibles con metadatosmodel://info: Obtener información sobre el modelo Model2Vec cargado y el estado del sistema
💬 Prompts Disponibles
classification_prompt: Plantilla para tareas de clasificación de texto con contexto e instrucciones
Parámetros:
text(cadena): El texto a clasificar
Devuelve: Prompt formateado para clasificación con categorías disponibles listadas
🧪 Pruebas
Probar con MCP Inspector
npx @modelcontextprotocol/inspector uv run text_classifier_server.py
🔍 Solución de Problemas
La descarga del modelo falla
# Manual model download
uv run python -c "from model2vec import StaticModel; StaticModel.from_pretrained('minishlab/potion-base-8M')"
📖 Detalles Técnicos
- Modelo:
minishlab/potion-base-8Mde Model2Vec - Similitud: Similitud coseno entre incrustaciones de texto y categorías
- Rendimiento: Modelo de ~30MB, inferencia rápida con incrustaciones estáticas
- Protocolo: Especificación MCP 2024-11-05
- Transportes: stdio, HTTP+SSE, HTTP Streamable
🤝 Contribuciones
- Haz un fork del repositorio
- Crea una rama de características
- Agrega pruebas para la nueva funcionalidad
- Envía una solicitud de extracción
📄 Licencia
Licencia MIT - consulta el archivo LICENSE para más detalles.
🙏 Agradecimientos
- Model2Vec de Minish Lab por las incrustaciones estáticas rápidas
- Anthropic por la especificación del Protocolo de Contexto de Modelo
- FastMCP por el excelente framework MCP de Python
¿Necesitas ayuda? Consulta la sección de solución de problemas o abre un problema en el repositorio.