Servidor MCP de PureMacro
🇬🇧 English · 🇪🇸 Español
puremacro.mcp_server es un servidor Model Context Protocol (MCP) por stdio sin dependencias adicionales que expone flujos computacionales acotados y de solo lectura para econometría, validación DSGE/HANK, escenarios arancelarios multipaís, auditoría de frescura de conectores y verificación matemática.
Características
- Cero dependencias extra: Implementado sobre JSON-RPC 2.0 con biblioteca estándar de Python e importaciones perezosas (
lazy imports) depuremacro.*dentro de cada manejador (respetando el invariante de importación Pyodide). - Doble entramado
stdio: Detecta y preserva automáticamente JSON delimitado por saltos de línea y cabecerasContent-Lengthenstdin/stdout. - Métodos MCP:
initialize,notifications/initialized,ping,tools/listytools/call. - Aislamiento de solo lectura: Acepta tablas inline en JSON (
rows/columns) o archivos.csv/.json(y cachés.db/.sqlite/.sqlite3) estrictamente dentro de--allowed-root(oPUREMACRO_MCP_ALLOWED_ROOT). Bloquea recorridos../, enlaces simbólicos fuera de la raíz, archivos mayores a 16 MiB y cualquier uso deeval/exec. - Serialización JSON estricta: Convierte
NaN,Inf, arreglos NumPy, DataFrames de Pandas y dataclasses conallow_nan=False.
Inicio rápido
Verifica la instalación e imprime los esquemas de herramientas disponibles:
Inicia el servidor stdio restringiendo la lectura de archivos a un directorio de datos:
También puedes definir PUREMACRO_MCP_ALLOWED_ROOT=/path/to/workspace/data como variable de entorno. Si no se define ninguna raíz permitida, las herramientas aceptan únicamente datos inline en JSON y rechazan rutas locales.
Configuración en clientes MCP
Sustituye /path/to/puremacro/.venv/bin/python (o python) y /path/to/data por las rutas reales de tu entorno.
Claude Code
Regístralo desde la CLI o añade .mcp.json en la raíz de tu proyecto:
claude mcp add puremacro -- /path/to/puremacro/.venv/bin/python -m puremacro.mcp_server --allowed-root /path/to/data
{
"mcpServers": {
"puremacro": {
"command": "/path/to/puremacro/.venv/bin/python",
"args": ["-m", "puremacro.mcp_server", "--allowed-root", "/path/to/data"],
"env": {
"PYTHONPATH": "/path/to/puremacro"
}
}
}
}
Antigravity
Agrega la entrada bajo mcpServers en tu archivo de configuración MCP de Antigravity (mcp_config.json):
{
"mcpServers": {
"puremacro": {
"command": "/path/to/puremacro/.venv/bin/python",
"args": ["-m", "puremacro.mcp_server", "--allowed-root", "/path/to/data"],
"env": {
"PYTHONPATH": "/path/to/puremacro"
}
}
}
}
Cursor
Agrega .cursor/mcp.json en tu espacio de trabajo (o en la configuración global de MCP de Cursor):
{
"mcpServers": {
"puremacro": {
"command": "/path/to/puremacro/.venv/bin/python",
"args": ["-m", "puremacro.mcp_server", "--allowed-root", "/path/to/data"],
"env": {
"PYTHONPATH": "/path/to/puremacro"
}
}
}
}
Referencia de herramientas
| Herramienta | API de PureMacro | Propósito | Parámetros principales |
|---|---|---|---|
preflight_panel |
puremacro.data.preflight_panel |
Audita esquema de panel/series, duplicados, huecos, valores faltantes, estacionariedad y estacionalidad | rows / columns / data_path, unit_col, time_col, variables, freq, min_obs, include_markdown |
lp_hac |
puremacro.lp.lp_hac |
Proyecciones locales de Jordà (2005) con errores estándar HAC Newey–West Bartlett (h + 1 rezagos) |
rows / columns / data_path, y, x, controls, time_col, horizons / horizon, n_lags / lags, ci / alpha |
lp_sensitivity_grid |
puremacro.lp.sensitivity.lp_sensitivity_grid |
Rejilla acotada de sensibilidad LP entre rezagos, horizontes, niveles IC o estimadores permitidos (lp_hac, lp_iv, la_lp, smooth_lp, panel_lp, panel_lp_dk, lp_did) |
rows / columns / data_path, y, x, grid (máx. 64 especificaciones), estimator, baseline_spec, base_kwargs, unit_col, time_col, on_error |
compare_irfs |
puremacro.reports.compare_irfs |
Compara IRF entre especificaciones (estimaciones puntuales, bandas, picos, acumulados, RMSE y concordancia de signo) | results / data_path, baseline, horizon_align, ci, cumulative, include_markdown |
score_irf_against_targets |
puremacro.dsge.validation_scorecard.score_irf_against_targets |
Evalúa IRF del modelo frente a momentos empíricos con \(\chi^2\) de Wald (covariance/diagonal), RMSE, MAE, concordancia de signo y cobertura |
model_irf / model_irf_path, targets / targets_path, shock, variables, horizons, weight_mode, hank_unit_mode, include_markdown |
tariff_scenario_batch |
puremacro.trade.scenarios.CompositeTariffScenario y summarize_scenario_batch |
Compone aranceles simples o compuestos, audita solapamientos (on_conflict), resuelve equilibrio general y calcula EV/CV hicksiano |
scenarios (máx. 16), model_source (oecd_icio / synthetic / file), data_path, sigma, method, resolve_only, include_markdown |
connector_freshness_report |
puremacro.fetch.freshness.connector_freshness_report |
Audita procedencia, identidades de dominio, revisiones y frescura de conectores (openWorldHint: true en modo live) |
mode (cache / recorded / live), sources, as_of, db_path, max_requests (1–5), min_interval_seconds, timeout_seconds, lang, include_markdown |
validation_scorecard |
puremacro.validation.scorecard |
Lista o ejecuta casos matemáticos autocontenidos de la galería de validación por subsistema o identificador | subsystem, case_ids, list_only |
Límites operativos
Para garantizar respuestas rápidas y acotadas en sesiones interactivas:
- Tablas de entrada: máximo 50,000 filas × 200 columnas; lectura de archivos limitada a 16 MiB.
- Proyecciones locales: horizontes en
[0, 120], rezagos en[0, 40]y hasta 64 combinaciones por rejilla de sensibilidad. - Lotes arancelarios: hasta 16 escenarios por llamada (profundidad máxima de composición igual a 5).
- Sondeos
livede conectores: máximo 5 solicitudes por llamada (max_requestsen[1, 5]); usamode="recorded"omode="cache"para auditorías sin red.
API en Python
El registro y despachador también pueden usarse directamente desde Python: