Skip to main content
Glama
juanrave

Skemati.ca MCP SSE Server

by juanrave
README.md
# skemati.ca.mcp.sse

Servidor MCP (Model Context Protocol) con soporte para Server-Sent Events (SSE) y consulta de procesos judiciales en Colombia.

## Descripción

Este proyecto implementa un servidor MCP usando Starlette y FastAPI, permitiendo la consulta de procesos judiciales por número de radicación o por nombre/razón social, integrando la API pública de la Rama Judicial de Colombia. Además, soporta streaming de eventos en tiempo real mediante SSE y expone herramientas MCP para integración con clientes LLM y flujos de IA.

## Características

- Exposición de endpoints SSE para comunicación en tiempo real.
- Herramientas MCP para consulta de procesos judiciales:
  - Por número de radicación.
  - Por nombre de persona natural.
  - Por nombre de persona jurídica.
- Integración con la API oficial de la Rama Judicial de Colombia.
- Ejecución de comandos CLI para consulta judicial.
- Código compatible con Python 3.10+.

## Instalación

1. **Clona el repositorio:**
   ```sh
   git clone https://github.com/juanrave/skemati.ca.mcp.sse.git
   cd skemati.ca.mcp.sse
   ```

2. **Crea y activa un entorno virtual:**
   ```sh
   python3.10 -m venv .venv
   source .venv/bin/activate
   ```

3. **Instala las dependencias:**
   ```sh
   pip install -r requirements.txt
   ```
   O, si usas [uv](https://github.com/astral-sh/uv):
   ```sh
   pip install uv
   uv pip install fastapi uvicorn httpx "mcp[cli]"
   ```

   > **Nota:** El paquete `mcp` puede ser privado. Consulta a tu equipo si no está disponible en PyPI.

## Ejecución

1. **Inicia el servidor:**
   ```sh
   python server.py
   ```
   El servidor se ejecutará por defecto en el puerto 2055.

2. **Endpoints disponibles:**
   - `GET /sse` — Endpoint SSE para comunicación en tiempo real.
   - `POST /messages/` — Endpoint para mensajes MCP.

## Uso de las herramientas MCP

- **Consulta por número de radicación:**
  ```python
  await get_radicacion_por_numero("11001310302520230012300")
  ```

- **Consulta por nombre de persona natural:**
  ```python
  await get_radicacion_por_nombre_persona_natural("JUAN PEREZ")
  ```

- **Consulta por nombre de persona jurídica:**
  ```python
  await get_radicacion_por_nombre_persona_juridica("BANCOLOMBIA")
  ```

## Requisitos

- Python 3.10 o superior.
- Acceso a la API de la Rama Judicial de Colombia.
- Dependencias listadas en `pyproject.toml` o `requirements.txt`.

## Notas adicionales

- Si usas el cliente MCP remoto:
  ```sh
  npx -p mcp-remote@latest mcp-remote-client http://localhost:2055/sse
  ```
- Puedes cambiar el puerto modificando la variable `port` en `server.py`.

---