Skip to main content
Glama
README.md
# MCP del BCRP

Proyecto independiente de la sesión 04: un servidor MCP con FastMCP para buscar, consultar y analizar series
oficiales del Banco Central de Reserva del Perú.

## Contenido

| Archivo | Propósito |
|---|---|
| `server.py` | Búsqueda de series, observaciones, resúmenes, comparación de series, recurso y prompt |
| `test_server.py` | Ocho pruebas de contrato con datos reales del BCRP; no modificar |
| `preguntas.csv` | Diez preguntas con respuestas y tolerancias oficiales |
| `evaluar.py` | Compara respuestas de Claude sin MCP y con el MCP |
| `.mcp.json` | Configura los servidores BCRP y Fetch para Claude Code |
| `pyproject.toml`, `uv.lock` | Dependencias y versiones reproducibles del entorno |

## Requisitos y pruebas

Se necesita Python 3.11 o superior, [`uv`](https://docs.astral.sh/uv/), Claude Code con sesión iniciada e internet.
El entorno local `.venv/` se crea automáticamente con `uv`; el catálogo descargado y el entorno se excluyen de Git.

Desde esta carpeta:

```bash
uv run pytest -q
```

La meta es `8 passed`. La primera ejecución descarga el catálogo oficial del BCRP. Para iniciar el servidor en
terminal, ejecuta `uv run server.py`.

La dependencia `cryptography<49` está acotada para permitir la instalación en macOS Intel sin compilar OpenSSL; el
proyecto no la usa directamente.

## Conectar con Claude Code

Abre Claude Code desde esta carpeta y aprueba los servidores configurados en `.mcp.json` cuando lo solicite. Usa
`/mcp` para comprobar la conexión. El servidor `bcrp` ofrece:

- Herramientas: `buscar_series`, `serie`, `resumen` y `comparar_series`.
- Recurso: `bcrp://serie/{codigo}`; por ejemplo `@bcrp:bcrp://serie/PN01273PM`.
- Prompt: `informe(tema)`, disponible como `/mcp__bcrp__informe`.

Las fechas de `serie` y `resumen` son `YYYY-MM` para series mensuales, `YYYY-T1` para trimestrales, `YYYY-MM-DD` para
diarias y `YYYY` para anuales. Las respuestas incluyen el código y el enlace oficial de la fuente.

## Evaluación

`preguntas.csv` contiene diez preguntas, con las dos cifras adicionales verificadas manualmente en el sitio oficial
del BCRP. Ejecuta `uv run evaluar.py` para comparar los modos `memoria` y `mcp`; Claude Code debe estar disponible
en `PATH`. El resultado se guarda en `resultados.csv`. Para incluir búsqueda web, ejecuta
`uv run evaluar.py --modos memoria web mcp`.

La ejecución documentada en `informe.md` obtuvo 0/10 aciertos en modo memoria (10 respuestas «no sabe») y 10/10
con el MCP. La figura correspondiente está en `grafico.png`. `datos/` no se incluye: el catálogo se descarga
automáticamente cuando se necesita.

Conserva `test_server.py` sin cambios. Los archivos de entrega son `server.py`, `.mcp.json`, `preguntas.csv`,
`resultados.csv`, `informe.md` y `grafico.png`.

La rúbrica del curso suma 20 puntos: pruebas (6), herramienta propia (3), recurso y prompt (2), `.mcp.json` (2),
evaluación (4) e informe (3).

TDQS

A3.7/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct role in the workflow: search series, fetch observations, compute summary statistics, and compare two series. The boundary between `serie` and `resumen` is clear because one returns raw observations while the other returns aggregate statistics.

Naming Consistency3/5

The names mix conventions: `buscar_series` and `comparar_series` use a verb_noun pattern, while `serie` and `resumen` are bare nouns. The names are still readable and understandable, but the set lacks a consistent naming pattern.

Tool Count5/5

Four tools is well-scoped for a central-bank statistics server: discovery, retrieval, summary, and comparison. Each tool earns its place and there are no redundant or trivial additions.

Completeness5/5

The tool set covers the full read-only lifecycle for BCRP series: search for a series, download its observations, compute descriptive statistics, and compare two series. No obvious dead ends are present for the stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues