Qué recibe un cliente
La interfaz MCP pública expone search_articles, list_articles y get_article. Permite descubrir y recuperar artículos publicados sin extraer la página visual. El catálogo no incluye publicación ni administración.
El cliente grabado inicializa el endpoint, descubre herramientas, enumera artículos, busca MCP, recupera un resultado y solicita un artículo inexistente. El intercambio guardado contiene peticiones y respuestas de transporte. Demuestra el protocolo y está separado de las respuestas de modelos basadas en recuperación que aparecen en el artículo.
Arquitectura y recuperación
Cliente MCP → endpoint JSON-RPC → argumentos validados
→ search_articles → BM25 + pgvector → fusión por rango recíproco
→ list_articles → consulta de artículos publicados
→ get_article → Markdown publicado + metadatos
El sitio reutiliza búsqueda y generación de Markdown. La búsqueda híbrida combina rankings léxicos y semánticos; sus resultados identifican candidatos para leer. get_article devuelve el cuerpo completo en texto y los metadatos aparte, evitando duplicar el artículo en el contenido estructurado.
El cliente puede buscar un tema, usar los slugs devueltos, leer artículos y respaldar su respuesta con ese contenido. Un transporte exitoso no demuestra que la respuesta final tenga respaldo. Hay que comparar citas y afirmaciones contra el texto recuperado.
Contratos y capas de error
| Herramienta | Entradas principales | Qué revisar |
|---|---|---|
| search_articles | query, limit, lang | Publicación y slugs utilizables |
| list_articles | tag opcional, limit | Filtro de publicación y orden |
| get_article | slug, lang | Markdown completo y slug inexistente |
El esquema guardado admite consultas de 1 a 500 caracteres y límites de búsqueda de 1 a 20. La lista admite hasta 50. Las herramientas con idioma aceptan inglés y español. Son contratos capturados; el cliente debe descubrir los esquemas del servidor al conectarse.
Los argumentos inválidos y artículos ausentes devuelven isError: true como resultado de herramienta. El modelo puede corregir la petición. Un método JSON-RPC desconocido pertenece a la capa de protocolo. Tratar ambos como respuestas vacías exitosas elimina información para recuperarse.
Una prueba negativa útil
La captura breve contiene inicialización, descubrimiento y una petición de get_article con portfolio-nonexistent-evidence-check. La respuesta dice que no existe un artículo publicado con ese slug y activa isError: true.
Esa captura no llama a modelos ni embeddings. La sesión narrada posterior sí incluye búsqueda y lectura. Mantén ambas separadas al describir cobertura. Solicitar una versión de protocolo no soportada comprueba negociación, no calidad de artículos. La implementación inspeccionada enumera 2024-11-05, 2025-03-26 y 2025-06-18; no promete versiones posteriores.
Reproducción y aislamiento de publicación
El ZIP del ejemplo público incluye artículos sintéticos, búsqueda local por palabras y pruebas de protocolo. Reproduce el patrón de integración, no los índices BM25 y pgvector de producción. El manifiesto registra ese ejemplo y los archivos inspeccionados del sitio.
Empieza por inicializar y descubrir herramientas. Llama cada una con argumentos válidos e inválidos, solicita un slug ausente y verifica que los borradores no aparezcan en búsquedas ni lecturas. Después conecta un asistente y evalúa selección de herramientas y respaldo de respuestas.
El artículo técnico documenta un fallo de aislamiento: artículos de prueba llegaron al directorio real y el despliegue y la carga inicial los publicaron. Las pruebas usan ahora un directorio desechable. Simular la base no aisló las escrituras en disco. Mantén fixtures fuera de cualquier ruta que publicación o restauración puedan ingerir.
El informe conserva un contrato capturado. No agrega mediciones de carga, compatibilidad con todos los clientes ni una prueba exhaustiva de exclusión de borradores basada en una sola demo.