Skip to main content
Glama
README.md
# Argentina BORA - MCP Server

[![NPM Version](https://img.shields.io/npm/v/bora-mcp?color=cb3837&logo=npm)](https://www.npmjs.com/package/bora-mcp)
[![TypeScript](https://img.shields.io/badge/TypeScript-5.4-blue.svg)](https://www.typescriptlang.org/)
[![MCP](https://img.shields.io/badge/Model_Context_Protocol-1.5.0-green.svg)](https://modelcontextprotocol.io/)

MCP Server para buscar y extraer avisos, decretos y resoluciones del **Boletín Oficial de la República Argentina** ([boletinoficial.gob.ar](https://www.boletinoficial.gob.ar)). Conecta cualquier LLM compatible (Claude, Cursor, Antigravity) con el portal oficial para realizar búsquedas en tiempo real y extraer el articulado completo con **fidelidad jurídica sin alucinaciones**.


---

## 🚀 Características Principales

*   **Buscador Avanzado Integrado (`buscar_avisos`)**: Búsquedas avanzadas multiplataforma en tiempo real por texto libre, secciones, número o año de norma, y rango de fechas en toda la base histórica de avisos.
*   **Fidelidad Verbatim Absoluta (`obtener_detalle_aviso`)**: Recupera el cuerpo oficial de cualquier ley o aviso, removiendo scripts y estilos dinámicos pero conservando de forma exacta la alineación de párrafos y saltos de línea con fidelidad jurídica total.
*   **Scraping Concurrente e Índices Diarios (`obtener_sumario_del_dia`)**: Agrega en paralelo, mediante concurrencia asíncrona optimizada, los sumarios diarios de las 4 secciones regulatorias oficiales para obtener una visión unificada agrupada por rubro y tema.
*   **Captura Dinámica de Portada (`obtener_portada`)**: Scrapea la página de inicio del Boletín Oficial, detecta la fecha activa en Argentina, extrae carruseles informativos gubernamentales y construye enlaces directos de descarga para los PDFs firmados digitalmente.
*   **Buscadores Temáticos Optimizados**:
    *   **Constitución de Sociedades Comerciales** (Sección Segunda).
    *   **Licitaciones Públicas y Compras del Estado** (Sección Tercera).
*   **Resiliencia Criptográfica**: Configurado con agentes HTTPS tolerantes a fallos criptográficos para saltear bloqueos por expiración de cadenas de confianza SSL en los portales gubernamentales.

---

## 🛠️ Instalación y Configuración Rápida

Para utilizar este servidor MCP de forma inmediata, necesitas tener instalado [Node.js](https://nodejs.org/) (versión 18 o superior).

### 1. Cursor IDE / Windsurf
Tanto Cursor como Windsurf admiten servidores MCP de forma nativa a través del protocolo standard I/O (`stdio`):
1.  Abre la configuración (Settings) de tu entorno de desarrollo y busca la sección **MCP**.
2.  Haz clic en **+ Add New MCP Server**.
3.  Completa los campos requeridos:
    *   **Name:** `bora-mcp`
    *   **Type:** `command`
    *   **Command:** `npx -y bora-mcp` (o la ruta al paquete local publicado).

### 2. Claude Desktop
1.  Abre tu archivo de configuración de Claude Desktop. En Windows, se localiza normalmente en:
    `C:\Users\<TuUsuario>\AppData\Roaming\Claude\claude_desktop_config.json`
2.  Agrega el servidor dentro de la clave `mcpServers`:
```json
{
  "mcpServers": {
    "bora-mcp": {
      "command": "npx",
      "args": ["-y", "bora-mcp"],
      "env": {
        "NODE_TLS_REJECT_UNAUTHORIZED": "0"
      }
    }
  }
}
```
> [!IMPORTANT]
> La variable de entorno `"NODE_TLS_REJECT_UNAUTHORIZED": "0"` es fundamental para saltear problemas periódicos con los certificados SSL vencidos o mal configurados del sitio del Boletín Oficial de la Nación.

### 3. Antigravity / Codex
Configura el servidor dentro del archivo de configuración global `mcp_config.json`:
```json
{
  "mcpServers": {
    "bora-mcp": {
      "command": "npx",
      "args": ["-y", "bora-mcp"],
      "env": {
        "NODE_TLS_REJECT_UNAUTHORIZED": "0"
      }
    }
  }
}
```

### 4. Claude Web (Claude.ai Custom Connectors)

> [!TIP]
> **¿Estás utilizando Claude Web (Claude.ai)?** ¡No necesitas instalar Node.js ni ejecutar nada localmente! Puedes conectar este servidor de forma 100% remota y serverless utilizando nuestro endpoint oficial.

Para conectarlo en segundos, solo necesitas ingresar estos dos datos:
1. Ve a la sección de configuración de conectores personalizados en [Claude.ai Connectors](https://claude.ai/customize/connectors).
2. Haz clic en **Add Connector** o **Connect Server**.
3. Completa los campos requeridos:
   * **Name:** `bora-mcp`
   * **URL:** `https://bora-mcp.vercel.app/api/mcp/sse`
4. Guarda la configuración. ¡Listo! Claude Web ahora se comunicará en tiempo real con el portal oficial del BORA de manera serverless.

---

💡 **¿Necesitas ejemplos de prompts para aprender a promptear a la IA y usar correctamente este MCP?**
Consulta nuestra biblioteca interactiva con prompts óptimos y flujos de trabajo combinados en: **[bora-mcp.vercel.app/prompts](https://bora-mcp.vercel.app/prompts)**

---

### 5. Antigravity / Codex (Integración SSE Remota)
Para configurar la versión serverless de alta disponibilidad directamente en Antigravity u otros clientes compatibles con MCP SSE:
Agrega la siguiente configuración en tu archivo `mcp_config.json`:

```json
{
  "mcpServers": {
    "bora-mcp-sse": {
      "type": "sse",
      "url": "https://bora-mcp.vercel.app/api/mcp/sse"
    }
  }
}
```
*💡 **Ventaja de la integración SSE Remota:** No requiere ejecutar comandos locales (`npx`), instalar Node.js ni consumir recursos en tu máquina, ya que se ejecuta de manera 100% serverless en Vercel Edge con caching de base de datos.*


---

## 💻 Instalación Manual (Para Desarrolladores)

Si deseas descargar el código fuente, auditar la lógica de scraping o contribuir al desarrollo local:

1.  Clona el repositorio oficial:
    ```bash
    git clone https://github.com/voftec/bora-mcp.git
    cd bora-mcp
    ```
2.  Instala las dependencias de desarrollo y producción:
    ```bash
    npm install
    ```
3.  Compila el código TypeScript a JavaScript de distribución ESM:
    ```bash
    npm run build
    ```
4.  Configura tu cliente MCP local apuntando directamente a la build construida:
    *   **Cursor Command:** `node D:/ruta-a-tu-carpeta/bora-mcp/build/index.js`
    *   **Claude Desktop Config:**
        ```json
        "bora-mcp": {
          "command": "node",
          "args": ["D:/ruta-a-tu-carpeta/bora-mcp/build/index.js"],
          "env": {
            "NODE_TLS_REJECT_UNAUTHORIZED": "0"
          }
        }
        ```

---

## ⚖️ Catálogo de Herramientas Disponibles (Tools)

El servidor expone **14 herramientas especializadas** diseñadas para emular con precisión metodológica a un investigador jurídico experto:

| Herramienta | Descripción Técnica | Parámetros Clave |
|---|---|---|
| `buscar_avisos` | Búsqueda avanzada multisección de edictos y leyes. | `criterio`, `seccion`, `fechaDesde`, `fechaHasta`, `nroNorma`, `pagina` |
| `obtener_detalle_aviso` | Extrae el cuerpo verbatim íntegro de un aviso o ley. | `seccion`, `idAviso`, `fecha` |
| `obtener_sumario_seccion` | Recupera el sumario completo de una sección del día agrupado por rubros (con parser NIC Argentina en Sección 4). | `seccion`, `fecha` |
| `obtener_enlace_pdf` | Genera la ruta directa oficial para descarga del PDF firmado. | `seccion`, `idAviso`, `fecha` |
| `buscar_nuevas_sociedades` | Buscador optimizado para constituciones de firmas comerciales (Sección 2). | `fechaDesde`, `fechaHasta`, `pagina` |
| `buscar_licitaciones_publicas` | Buscador especializado de contrataciones y pliegos públicos (Sección 3). | `criterio`, `fechaDesde`, `fechaHasta`, `pagina` |
| `alcance_fuente` | Información sobre la fuente legal, limitaciones técnicas y disclaimer de uso. | *(Ninguno)* |
| `obtener_portada` | Scrapea la portada de hoy, destaques y descargas de PDFs de edición completa. | *(Ninguno)* |
| `obtener_sumario_del_dia` | Agregador altamente concurrente de sumarios de las 4 secciones unificadas. | `fecha` |
| `buscar_sociedades_por_tipo` | Buscador en la Segunda Sección con filtros por tipo de acto y tipo societario. | `tipoActo`, `tipoSocietario`, `fechaDesde`, `fechaHasta`, `pagina` |
| `buscar_norma_primera_seccion` | Búsqueda directa de normas oficiales (decretos, resoluciones, leyes) por N° y/o año. | `nroNorma`, `anioNorma`, `criterio`, `fechaDesde`, `fechaHasta`, `pagina` |
| `buscar_avisos_judiciales` | Buscador especializado en edictos, sucesiones e inhibiciones (Sección Segunda). | `criterio`, `fechaDesde`, `fechaHasta`, `pagina` |
| `buscar_marcas_patentes` | Buscador en la Cuarta Sección con ventana móvil automática de 15 días. | `criterio`, `fechaDesde`, `fechaHasta`, `pagina` |
| `rastrear_vigencia_norma` | Rastreo cronológico de referencias de una norma para analizar su vigencia histórica. | `nroNorma`, `anioNorma`, `fechaDesde`, `fechaHasta` |

---

## 📝 Licencia

Este proyecto se distribuye de forma abierta y transparente bajo los términos de la **Licencia MIT**. Consulta el archivo `LICENSE` para más detalles.

TDQS

A3.8/5.0

Scored across 14 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: general search, specialized searches by section or topic, detail retrieval, summaries, and tracking. Even overlapping search functions are differentiated by their scope and filters, reducing ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., buscar_avisos, obtener_detalle_aviso). The naming is uniform and predictable across the entire set.

Tool Count5/5

With 14 tools, the server is well-scoped for the domain of the Argentine Official Bulletin. Each tool serves a specific function, and the count is neither overwhelming nor insufficient.

Completeness5/5

The tool set covers the full lifecycle: information about the connector, general and specialized searches, detail retrieval, PDF links, daily/section summaries, and norm tracking. There are no obvious gaps for typical use cases.