mcp-bcr
by AnderMC66
README.md
# MCP BCR
Servidor MCP (Model Context Protocol) para la Base de Datos del Banco Central de Reserva del Perú (BCRP).
[](https://opensource.org/licenses/MIT)
## Descripción
Este servidor MCP permite consultar indicadores económicos oficiales del Perú en tiempo real a través de la API del BCRP. Incluye almacenamiento de contexto, memoria persistente con embeddings reales, knowledge graph, búsqueda híbrida (semántica + FTS5), caché histórico de series, análisis estadístico/econométrico, comparación internacional vía Banco Mundial, y RAG sobre documentos/PDFs para análisis económico avanzado.
## Características
- **API del BCRP**: Consulta en tiempo real de indicadores económicos, con caché histórico local en SQLite
- **Almacenamiento de Contexto**: Guardar y recuperar datos económicos
- **Memoria Persistente**: Búsqueda híbrida (FTS5 + embeddings reales con `@xenova/transformers`, modelo multilingüe con soporte de español, sin API key)
- **Knowledge Graph**: Relacionar indicadores y conceptos económicos
- **Búsqueda Vectorial**: Búsqueda semántica por similitud de coseno sobre embeddings reales
- **Análisis Estadístico**: Variación %, media móvil, correlación, regresión lineal/proyección, deflactación
- **Banco Mundial**: Comparación de indicadores de Perú frente a otros países
- **RAG de Documentos**: Ingesta de PDFs/URLs/texto y búsqueda semántica con cita de fuente
## Instalación
```bash
# Clonar el repositorio
git clone https://github.com/rodrigocapiz67-tech/mcp-bcr.git
cd mcp-bcr
# Instalar dependencias
npm install
# Compilar
npm run build
```
## Uso
### Como servidor MCP
El servidor se ejecuta en stdio y puede ser configurado en cualquier cliente MCP compatible.
### Configuración .mcp.json (Antigravity IDE u otros)
```json
{
"mcpServers": {
"mcp-bcr": {
"type": "stdio",
"command": "node",
"args": ["dist/index.js"],
"env": {}
}
}
}
```
### Configuración en Claude Desktop
Añade lo siguiente a tu archivo `claude_desktop_config.json`:
```json
{
"mcpServers": {
"mcp-bcr": {
"command": "node",
"args": ["C:/source/mcp-bcr/dist/index.js"]
}
}
}
```
### Herramientas BCRP
#### Consultas Directas
- `bcrp_get_series`: Consultar cualquier serie del BCRP
- `bcrp_tipo_cambio`: Tipo de cambio SOL/USD
- `bcrp_inflacion`: Inflación (IPC)
- `bcrp_pbi`: Producto Bruto Interno
- `bcrp_tasas_interes`: Tasas de interés
- `bcrp_reservas`: Reservas internacionales
- `bcrp_buscar_series`: Buscar series disponibles
- `bcrp_series_disponibles`: Listar series predefinidas
- `bcrp_historial`: Historial completo cacheado localmente de una serie (sin red)
#### Análisis Estadístico/Econométrico
- `bcrp_estadisticas`: Variación %, media móvil y desviación estándar de una serie
- `bcrp_correlacion`: Correlación de Pearson entre dos series
- `bcrp_proyeccion`: Regresión lineal simple y proyección a futuro
- `bcrp_deflactar`: Ajustar una serie nominal por un índice de precios (valores reales)
#### Banco Mundial
- `worldbank_indicador`: Consultar un indicador para uno o más países (ISO-2)
- `worldbank_comparar_paises`: Comparar Perú vs. otros países (último valor y tendencia a 10 años)
#### RAG de Documentos
- `docs_ingest`: Ingerir un PDF/URL/texto plano (se trocea y embebe)
- `docs_search`: Búsqueda semántica sobre documentos ingeridos, con fuente para citar
- `docs_list`: Listar documentos ingeridos
#### Contexto
- `context_get`: Obtener un valor de contexto por clave
- `context_set`: Establecer un valor de contexto
- `context_delete`: Eliminar una entrada de contexto
- `context_list`: Listar todas las entradas de contexto
#### Memoria
- `memory_store`: Almacenar una entrada de memoria
- `memory_recall`: Buscar y recuperar recuerdos
- `memory_get`: Obtener una memoria específica por ID
- `memory_delete`: Eliminar una entrada de memoria
- `memory_find_by_tag`: Encontrar memorias por etiqueta
- `memory_find_similar`: Encontrar memorias similares
#### Knowledge Graph
- `graph_add_node`: Agregar un nodo al grafo
- `graph_get_node`: Obtener un nodo del grafo
- `graph_add_edge`: Agregar una arista entre nodos
- `graph_get_edges`: Obtener aristas de un nodo
- `graph_find_path`: Encontrar un camino entre nodos
- `graph_get_neighbors`: Obtener nodos vecinos
- `graph_find_by_type`: Encontrar nodos por tipo
- `graph_get_subgraph`: Obtener un subgrafo
#### Búsqueda Vectorial
- `vector_search`: Buscar contenido similar
- `vector_add`: Agregar contenido al índice vectorial
- `vector_similarity`: Calcular similitud entre textos
- `embeddings_reindex`: Recalcular todos los embeddings con el modelo actual (usar tras cambiar de modelo)
> El modelo de embeddings (`Xenova/paraphrase-multilingual-MiniLM-L12-v2`) es multilingüe e incluye español. Si en el futuro se cambia de modelo, el servidor avisa por stderr al arrancar si detecta que lo indexado quedó desactualizado — en ese caso hay que correr `embeddings_reindex` una vez.
## Series Predefinidas
| Código | Nombre |
|--------|--------|
| PD04635PD | Tipo de Cambio Promedio |
| PD04645PD | Tipo de Cambio Venta |
| PN02537MA | IPC Mensual |
| PN02538MA | IPC Anual |
| PN02521PA | PIB Trimestral |
| PD05462PM | Tasa Corto Plazo |
| PD04662PM | Reservas Internacionales |
## API del BCRP
Documentación: https://estadisticas.bcrp.gob.pe/estadisticas/series/ayuda/api
Ejemplo de consulta:
```
https://estadisticas.bcrp.gob.pe/estadisticas/series/api/PN01270PM/json
```
## Arquitectura
```
mcp-bcr/
├── src/
│ ├── index.ts # Punto de entrada
│ ├── server.ts # Configuración del servidor MCP
│ ├── bcrp/
│ │ └── client.ts # Cliente API del BCRP (+ caché local)
│ ├── worldbank/
│ │ └── client.ts # Cliente API del Banco Mundial
│ ├── analysis/
│ │ └── stats.ts # Funciones estadísticas/econométricas puras
│ ├── embeddings/
│ │ └── embedder.ts # Embeddings locales (@xenova/transformers)
│ ├── rag/
│ │ └── ingest.ts # Descarga/extracción/chunking de documentos
│ ├── db/
│ │ └── manager.ts # Gestor de base de datos SQLite (+ FTS5)
│ ├── memory/
│ │ └── store.ts # Sistema de memoria persistente
│ ├── graph/
│ │ └── graph.ts # Knowledge Graph
│ └── tools/
│ ├── bcrp.ts # Herramientas BCRP
│ ├── context.ts # Herramientas de contexto
│ ├── memory.ts # Herramientas de memoria
│ ├── graph.ts # Herramientas de grafo
│ ├── vector.ts # Herramientas vectoriales
│ ├── analysis.ts # Herramientas de análisis estadístico
│ ├── worldbank.ts # Herramientas de comparación internacional
│ └── rag.ts # Herramientas de ingesta/búsqueda de documentos
├── package.json
├── tsconfig.json
└── .mcp.json
```
## Licencia
MIT
This server cannot be deployed
Maintenance
ActivityStale
ResponsivenessNo issues