Skip to content

Releases: jgarcialaneitor/bome-navaja

bome-navaja v0.0.5 — ajustes del sitio desde Claude Desktop

Choose a tag to compare

@jgarcialaneitor jgarcialaneitor released this 25 Sep 16:57
1338067

bome-navaja v0.0.5

Esta versión pone la configuración del sitio en tus manos: los nueve valores que gobiernan cuánto golpea el servidor a bomemelilla.es y al portal antiguo ahora se editan desde la pantalla de ajustes de Claude Desktop. Además el bundle incluye uv.lock, para que la instalación use exactamente las versiones de dependencias con las que se probó.

Instalación de un solo clic (Claude Desktop)

  1. Descarga bome-navaja-0.0.5.mcpb (abajo).
  2. Haz doble clic en el archivo (o arrástralo a la ventana de Claude Desktop). Si ya tenías una versión anterior, se actualiza.
  3. Acepta el diálogo. El índice se migra solo y se conservan tus datos.

Para otros clientes (Claude Code, uvx, configuración manual) sigue el README.

Qué cambia

Los ajustes salen a la superficie. Al instalar el conector verás nueve campos nuevos, cada uno explicando qué hace, qué pasa si lo hacés más agresivo y cuál es el valor recomendado:

Ajuste Por defecto (recomendado) Se vuelve riesgoso si
Pausa entre peticiones al sincronizar 2 s menos de 2 s
Variación aleatoria sobre esa pausa 1 s menos de 1 s
Máximo de boletines por sincronización 250 más de 250
Pausa entre consultas sueltas 0,5 s menos de 0,5 s
Errores del sitio tolerados antes de parar 3 más de 3 (con 5 se observó el bloqueo)
Ventana en la que se cuentan esos errores 10 min menos de 10 min
Espera tras una señal de bloqueo 75 min menos de 75 min (el bloqueo dura ~1 h)
Pausa tras un error del sitio (mínimo) 30 s menos de 30 s
Tiempo máximo de espera por petición 30 s menos de 30 s

Sin límites duros, con avisos. Cualquier valor físicamente válido se acepta: si pedís algo más agresivo que lo recomendado, el servidor avisa pero no te lo impide. Un valor sin sentido (negativo, no numérico, o un tiempo mayor a un día) cae al valor por defecto con un aviso. El resumen de lo que está en uso aparece en estado_servidor.

Uso responsable. Los valores por defecto están elegidos para no despertar el cortafuegos del sitio. Bajarlos mucho tiempo seguido es la forma más rápida de que te bloquee la IP. Si no tenés una razón concreta, dejá los valores como vienen.

uv.lock dentro del bundle. La instalación resuelve las mismas versiones de dependencias que pasaron la batería de pruebas, en lugar de las últimas permitidas.

Corrección interna

  • El tope de «tiempo técnicamente válido» de los ajustes de tiempo bajó de un año a 24 horas: valores más grandes hacían fallar el servidor en Windows (OverflowError al fijar el tiempo de espera de un socket) aunque en Linux funcionaran. Es un límite de validez, no de seguridad, y sigue estando órdenes de magnitud por encima de cualquier valor real.

Verificación

  • 1.068 pruebas pasan, 18 omitidas (las que necesitan red).
  • CI en verde en Linux y Windows: test, test-windows, bundle, bundle-windows.
  • Bundle verificado: 19 herramientas, versión 0.0.5, uv.lock byte a byte idéntico al del repositorio, y mcpb validate conforme.

Sin verificar

  • Cómo se ve la pantalla de ajustes dentro de Claude Desktop (decimales, mínimos, la coma decimal). Se acepta tanto punto como coma (0,5).

bome-navaja v0.0.4 — índice del portal antiguo y artículos extraordinarios

Choose a tag to compare

@jgarcialaneitor jgarcialaneitor released this 24 Sep 20:44
9d44d37

bome-navaja v0.0.4

Dos novedades: el índice local puede incluir el portal antiguo de melilla.es (sumarios de 1991 a 2017), y se corrige leer_articulo con artículos de boletines extraordinarios.

Instalación de un solo clic (Claude Desktop)

  1. Descarga bome-navaja-0.0.4.mcpb (abajo).
  2. Haz doble clic en el archivo (o arrástralo a la ventana de Claude Desktop). Si ya tenías una versión anterior, se actualiza.
  3. Acepta el diálogo. El índice se migra solo y se conservan tus datos.

Para otros clientes (Claude Code, uvx, configuración manual) sigue el README.

Qué cambia

Índice del portal antiguo

  • sincronizar_indice con origen="melilla.es" guarda en el índice local los sumarios de artículos del portal antiguo. Por defecto indexa del 1 de enero de 1991 al 31 de diciembre de 2017: antes de 1991 las fichas no traen artículos, y desde 2018 los datos vienen de bomemelilla.es.
  • A partir de ahí, buscar_en_indice busca con Y, O y «no contiene» en los dos orígenes a la vez, y cada resultado indica su origen. La búsqueda del propio portal antiguo no permite nada de eso.
  • Va despacio a propósito: una petición por boletín (solo la ficha, nunca los PDF), unos 2–3 s entre peticiones y como mucho 250 boletines por ejecución. Tiene su propia guardia. Unos 2.000 boletines ocupan varias ejecuciones de 15–20 minutos, y se puede reanudar si se corta.
  • Si un boletín está en los dos sitios, gana el mejor resultado. Así los boletines de 2014–2016, que bomemelilla.es tiene sin sumarios, se rellenan con los del portal antiguo.
  • Solo corre una sincronización a la vez por índice, sea del origen que sea. estado_indice muestra los datos de cada origen.
  • Sobre el robots.txt: el portal antiguo no permite a los robots sus fichas ni sus PDF. Esta sincronización recorre las fichas porque el usuario lo decidió así, pero solo cuando se lanza a mano, despacio y con límite. Los PDF siguen pidiéndose solo bajo demanda.

Artículos de boletines extraordinarios

  • leer_articulo("BOME-AX-2019-103") devolvía el artículo ordinario número 103 del mismo año. El fallo es de bomemelilla.es: su resolutor de CVE quita la X a los artículos (BOME-AX) y a las páginas (BOME-PX) de los extraordinarios.
  • Ahora el boletín de un BOME-AX se busca sin usar ese resolutor: primero en el índice local y, si no está, entre los extraordinarios de ese año. Esa búsqueda cubre también los boletines cuya página no lista ningún artículo.
  • Además, cada artículo que se descarga debe llevar exactamente el CVE pedido. Si no coincide, se devuelve un error en vez de otro artículo.
  • resolver_cve da la URL correcta para BOME-AX y, para BOME-PX, la del PDF de la página.

Notas

  • sha256 del bundle: 80b2be8bcc696b6b49b9ced0a69187904a6f4822db666ee6d5e951e6ac03b822
  • Tests: 839 sin red (Linux y Windows en CI), más 18 opcionales contra los sitios reales.
  • Probado en vivo: leer_articulo("BOME-AX-2019-103") devuelve el Decreto nº 293 de 7 de agosto de 2019 (BOME-BX-2019-28).
  • Probado: el bundle desempaquetado y lanzado como lo hace Claude Desktop (19 herramientas, versión 0.0.4). No probado: la instalación dentro de la app, ni la sincronización del portal antiguo contra el sitio real.
  • Cambios: PR #4.
  • Licencia MIT. Los contenidos son del Boletín Oficial de la Ciudad Autónoma de Melilla.

bome-navaja v0.0.3 — guardia del sitio y portal antiguo de melilla.es

Choose a tag to compare

@jgarcialaneitor jgarcialaneitor released this 24 Sep 17:58
7fb4b34

bome-navaja v0.0.3

Versión centrada en no volver a provocar el bloqueo de bomemelilla.es y en llegar hasta 1985 con el portal antiguo de melilla.es.

Con los datos del índice se confirmó que el cortafuegos de bomemelilla.es bloquea la IP (en torno a una hora) justo después de la quinta respuesta HTTP 500, vayan las peticiones rápidas o lentas. Esos 500 salen siempre de las mismas páginas rotas del sitio, sobre todo de 2017 y principios de 2018. Además, la 0.0.2 volvía a pedir en cada sincronización las páginas que ya sabía rotas.

Instalación de un solo clic (Claude Desktop)

  1. Descarga bome-navaja-0.0.3.mcpb (abajo).
  2. Haz doble clic en el archivo (o arrástralo a la ventana de Claude Desktop). Si ya tenías una versión anterior, se actualiza.
  3. Acepta el diálogo. Tu índice y tus PDF se conservan; el índice se migra solo.

Para otros clientes (Claude Code, uvx, configuración manual) sigue el README.

Qué cambia

Cuidar el cortafuegos de bomemelilla.es

  • Como mucho 3 respuestas de error cada 10 minutos, sumando herramientas y sincronización. Con el cupo lleno, la sincronización espera en vez de pararse, y las herramientas responden pausa_preventiva con reintentar_tras_segundos.
  • Páginas rotas: un boletín cuya página respondió 500 dos veces queda como roto y las sincronizaciones normales lo saltan (reintentar_rotos para volver a intentarlo). Al migrar el índice, los boletines que ya tenían un 500 guardado pasan directamente a roto.
  • Pausa de 30–60 s tras cada página rota.
  • Si el sitio bloquea igualmente (403, 429 o 503, o dos peticiones seguidas sin respuesta), bome-navaja deja de tocarlo 75 minutos. Vale para todas las herramientas y para todos los procesos, y se conserva entre reinicios (estado_sitio.json; estado_servidor lo muestra en guardia_sitio).
  • La sincronización empieza en 2018-01-01 por defecto. Antes de 2018 bomemelilla.es está incompleto y es donde están las páginas rotas. Lo anterior aparece aparte en pendientes_anteriores_2018.

Portal antiguo de melilla.es (1985–2021)

  • bomemelilla.es no tiene 141 boletines de 2014–2017 ni nada anterior a 2014. El portal antiguo, congelado desde marzo de 2021, tiene 3.260 boletines del 3 de enero de 1985 al 12 de marzo de 2021, con sumarios de artículos desde ~1991 y el PDF de cada página.
  • listar_bomes junta los dos catálogos e indica el origen de cada boletín.
  • Nuevas: buscar_bome_antiguo (búsqueda de artículos con sumario y PDF de cada página) y ver_bome_antiguo (un boletín con todos sus artículos).
  • leer_pdf y descargar_pdf aceptan la url de un PDF del portal antiguo.
  • Su robots.txt no permite a los robots las fichas ni los PDF: bome-navaja solo los pide bajo demanda, uno cada vez, y la sincronización nunca toca el portal antiguo. Tiene su propia guardia (estado_sitio_melilla.json).

Otros

  • Se reconoce el tipo de CVE PX (páginas de boletines extraordinarios).

Después de actualizar

  1. estado_indice debería mostrar unos rotos (los boletines con 500 conocidos).
  2. Lanza sincronizar_indice sin desde: reintentará solo los boletines de 2018 en adelante que fallaron por el bloqueo.
  3. Para 2014–2017 y anteriores usa buscar_bome_antiguo y ver_bome_antiguo.

Notas

  • sha256 del bundle: 21f108b2fc5d6fa9bf4efe3491a70262250a2bf883770af364e66d10ec30f8ab
  • Tests: 723 sin red (Linux y Windows en CI), más 18 opcionales contra los sitios reales.
  • Probado: el bundle desempaquetado y lanzado como lo hace Claude Desktop (19 herramientas, versión 0.0.3). No probado: la instalación dentro de la app, ni ninguna herramienta contra los sitios reales.
  • 14 boletines tienen una fecha distinta en cada sitio, y antes de 2014 algunos identificadores se repiten (usa dboid). Detalles en el README.
  • Cambios: PR #3.
  • Licencia MIT. Los contenidos son del Boletín Oficial de la Ciudad Autónoma de Melilla.

bome-navaja v0.0.2 — sincronización cortés con el sitio

Choose a tag to compare

@jgarcialaneitor jgarcialaneitor released this 24 Sep 13:09
5721f7d

bome-navaja v0.0.2

Versión centrada en la cortesía con el sitio. Una sincronización completa del índice (unos 1.900 boletines seguidos, a una petición cada ~0,5 s) duraba lo suficiente como para que el cortafuegos de bomemelilla.es bloquease la IP. Además, la sincronización no se daba cuenta: seguía pidiendo boletines aunque el sitio ya la estuviese rechazando.

Instalación de un solo clic (Claude Desktop)

  1. Descarga bome-navaja-0.0.2.mcpb (abajo).
  2. Haz doble clic en el archivo (o arrástralo a la ventana de Claude Desktop). Si ya tenías la 0.0.1, se actualiza.
  3. Acepta el diálogo. Tu índice local y tus PDF se conservan.

Para otros clientes (Claude Code, uvx, configuración manual) sigue el README.

Qué cambia

  • Sincronización más lenta a propósito: 2 s entre peticiones más una variación aleatoria de hasta 1 s. Las herramientas interactivas mantienen su pausa de ~0,5 s.
  • Tope por ejecución: cada sincronizar_indice indexa como mucho 250 boletines (los más recientes), unos 15–20 minutos. El histórico completo necesita varias ejecuciones espaciadas: si el estado final trae pendientes_tras_limite mayor que 0, vuelve a sincronizar más tarde. Se puede cambiar con el parámetro max_boletines.
  • Se frena sola si el sitio la bloquea: ante un 403, 429 o 503, espera (respetando Retry-After, con esperas crecientes de hasta 15 minutos) y reintenta. Si el rechazo sigue, o tres boletines seguidos se quedan sin respuesta, termina en estado bloqueado. Los boletines rechazados ya no se marcan como error.
  • Las herramientas avisan del bloqueo con el código de error sitio_bloqueando (y reintentar_tras_segundos si el sitio lo indica). buscar_articulos se detiene en vez de seguir insistiendo.
  • Ajustable por variables de entorno: BOME_NAVAJA_SYNC_DELAY (segundos entre peticiones, mínimo 1) y BOME_NAVAJA_SYNC_MAX_BOLETINES. estado_servidor muestra los valores en uso en cortesia_sincronizacion.

Si el sitio ya te bloqueó

Espera unas horas antes de volver a sincronizar. Con esta versión, la próxima sincronización reintenta sola los boletines que quedaron marcados como error durante el bloqueo, al ritmo lento.

Notas

  • sha256 del bundle: b54130e9a20f2236a76f4fa6e80b67e097e14403f039bf89243b8a51dcfe61cc
  • Tests: 510 sin red (Linux y Windows en CI), más 16 opcionales contra el sitio real.
  • Probado: el bundle desempaquetado y lanzado como lo hace Claude Desktop (17 herramientas, versión 0.0.2). No probado: la instalación dentro de la app de Claude Desktop, ni la sincronización contra el sitio real (la IP de pruebas estaba bloqueada).
  • Cambios: PR #2.
  • Licencia MIT. Los contenidos son del Boletín Oficial de la Ciudad Autónoma de Melilla.

bome-navaja v0.0.1 — primer release con bundle de un clic

Choose a tag to compare

@jgarcialaneitor jgarcialaneitor released this 24 Sep 11:17
2926df9

bome-navaja v0.0.1

Servidor MCP para el Boletín Oficial de la Ciudad Autónoma de Melilla (BOME), bomemelilla.es. Permite listar boletines, leerlos completos artículo por artículo, descargar los PDF y buscar en todo el boletín. También mantiene un índice local de sumarios para hacer búsquedas al instante.

Instalación de un solo clic (Claude Desktop)

  1. Descarga bome-navaja-0.0.1.mcpb (abajo).
  2. Haz doble clic en el archivo (o arrástralo a la ventana de Claude Desktop).
  3. Acepta el diálogo. Si quieres, elige una carpeta de datos; si la dejas vacía se usa la carpeta de datos de tu usuario.

No necesitas Python ni nada preinstalado: Claude Desktop instala el runtime y las dependencias la primera vez que arranca el servidor. El paquete no está firmado, así que Claude Desktop puede pedirte confirmación.

Para otros clientes (Claude Code, uvx, configuración manual) sigue el README. El repositorio es privado por ahora, así que instalar con uvx --from git+… requiere acceso de git.

Herramientas (17)

  • Navegar: listar_bomes · ver_bome · ver_sumario · resolver_cve · listar_consejerias · listar_organismos
  • Leer y descargar: leer_articulo · leer_boletin · leer_pdf · descargar_pdf
  • Buscar en vivo: buscar_bomes · buscar_articulos
  • Índice local: buscar_en_indice · estado_indice · sincronizar_indice · cancelar_sincronizacion
  • Servidor: estado_servidor

Qué incluye esta versión

  • Cobertura: todos los boletines desde el 3 de enero de 2014 (ordinarios y extraordinarios). Los sumarios de artículos existen desde finales de 2016; los boletines de 2014 a 2016 no tienen texto ni PDF en el sitio.
  • Búsqueda de artículos: buscar_articulos entra en cada boletín que devuelve el sitio y se queda con los artículos cuyo sumario coincide. Admite Y, O y "no contiene". Recupera los artículos que la página del boletín omite: por ejemplo, un cese de personal eventual en el BOME 2025-6294.
  • Índice local de sumarios (SQLite FTS5 con trigramas):
    • busca fragmentos igual que el sitio, o solo al inicio de palabra con coincidencia="palabra";
    • se sincroniza solo cuando el modelo lo pide; la primera vez tarda unos 20–25 minutos, se puede reanudar si se corta y seguir con estado_indice.
  • Lectura sin cortes silenciosos: los boletines y artículos largos se leen por tramos con el cursor siguiente.
  • PDF en caché local: escritura atómica y tope de 100 MB; el nombre del archivo sale solo del CVE.
  • Cortesía con el sitio: una pausa de ~0,5 s entre peticiones, un solo cliente y nunca recorre el sitio por su cuenta.
  • Tests: 442 sin red (Linux y Windows en CI), más 16 opcionales contra el sitio real.

Notas

  • sha256 del bundle: f4e6d39593ab21837ca4c5b30efb7dca7cd2f2c7880ceb99f0da4ce918e59ab1
  • Probado: el bundle desempaquetado y lanzado como lo hace Claude Desktop, y uvx --from git+https://github.com/jgarcialaneitor/bome-navaja bome-navaja-mcp desde main (17 herramientas). No probado: la instalación dentro de la app de Claude Desktop.
  • Licencia MIT. Los contenidos son del Boletín Oficial de la Ciudad Autónoma de Melilla.