Skip to main content
Glama

eviews-mcp

Tests PyPI Python Licence Platform EViews

Controla EViews desde Python y expónlo a clientes LLM a través del Model Context Protocol.

Sitio de documentación  ·  Guía para investigadores  ·  PyPI

Dos cosas en un mismo paquete:

  • Una biblioteca. Una clase EViews para scripts y notebooks: crea archivos de trabajo, estima modelos y lee los resultados como texto o como DataFrames de pandas.

  • Un servidor MCP. Las mismas capacidades como herramientas, para que un asistente pueda hacer econometría en una sesión real de EViews.

Construido y probado con EViews 13 en Windows; EViews 10–14 se resuelven correctamente a través de la misma interfaz COM.

¿Eres nuevo en esto? La Guía del investigador sobre EViews te lleva desde una máquina limpia hasta un estudio ARDL completo, con cada comando y cada salida verificados contra una sesión real de EViews. No se asume ningún conocimiento de Python.

Instalación

pip install eviews-mcp

Con soporte para pandas:

pip install "eviews-mcp[pandas]"

O desde un clon, para desarrollo:

git clone https://github.com/merwanroudane/MCP_EVIEWS.git
cd MCP_EVIEWS
pip install -e .[dev]

Requiere Windows y una instalación local de EViews, ya que utiliza EViews a través de la automatización COM.

Related MCP server: econstats-mcp

Uso como librería

from eviews_mcp import EViews

with EViews() as ev:
    ev.create_workfile("q", "1990q1", "2020q4")
    ev.run("""
        series k   = 100 + @trend + 3*@nrnd
        series l   = 50 + 0.5*@trend + 2*@nrnd
        series gdp = 10 + 0.6*k + 0.3*l + 2*@nrnd
        equation eq1.ls gdp c k l
    """)

    print(ev.show("eq1"))
    print(ev.value("eq1.@r2"))
Dependent Variable: GDP
Method: Least Squares
Included observations: 124

Variable      Coefficient   Std. Error   t-Statistic   Prob.

C             9.58073       0.829252     11.5535       2.90e-21
K             0.591693      0.0333819    17.7250       1.99e-35
L             0.322394      0.0673315     4.78816      4.81e-06

R-squared     0.994702      Mean dependent var         131.080

Cualquier vista de EViews, como texto

show admite una vista, por lo que los diagnósticos no necesitan API adicional:

ev.show("eq1", "wald c(2)=c(3)")   # coefficient restriction test
ev.show("eq1", "resids(t)")        # residual table
ev.show("eq1", "coefcov")          # coefficient covariance
ev.show("eq1", "auto(2)")          # Breusch-Godfrey serial correlation
ev.show("eq1", "white")            # White heteroskedasticity test
ev.show("gdp", "uroot")            # unit root test
ev.show("gdp", "correl")           # correlogram
ev.show("ardl1", "cointrel")       # ARDL long-run relationship
ev.show("var1", "impulse(t)")      # impulse response table
ev.show("var1", "testexog")        # Granger causality

resids e impulse dibujan gráficos por defecto; las variantes (t) piden a EViews la forma de tabla. Las vistas que se congelan en un spool en lugar de una tabla — entre ellas la relación de cointegración ARDL — no se pueden leer a través de COM en absoluto, así que show recurre a un volcado de texto para esas.

Para los números en lugar del diseño, table() devuelve filas sin procesar con precisión doble completa, y value() devuelve un número:

rows = ev.table("eq1")             # tuple of row tuples
r2   = ev.value("eq1.@r2")         # 0.9947015...
beta = ev.value("eq1.@coefs(2)")

Resultados como datos, no solo texto

show formatea una tabla para leerla. Estas devuelven los números en su lugar, para pruebas, tabulación o para pasarlos a otra cosa:

ev.coefficients("eq1")
# [{'variable': 'LNK', 'coefficient': 0.549198724914677,
#   'std_error': 0.023936158605687322, 't_stat': 22.94431341143375,
#   'p_value': 5.677925593821611e-41}, ...]

ev.fit("eq1")["R-squared"]        # 0.9858630667863459

Orden de integración, probado hacia abajo a través de las diferencias hasta la estacionariedad:

ev.unit_root("lngdp")
# {'series': 'LNGDP', 'order_of_integration': 1, 'conclusion': 'I(1)',
#  'steps': [{'difference': 0, 'statistic': -0.5001, 'p_value': 0.8856, ...},
#            {'difference': 1, 'statistic': -12.1778, 'p_value': 0.0001, ...}]}

Pasa options para elegir el test: "pp" para Phillips-Perron, "kpss" para KPSS, "adf, trend" para añadir una tendencia. KPSS invierte la hipótesis nula, por lo que el orden reportado no se aplica a ella.

La batería estándar post-estimación en una sola llamada:

report = ev.diagnose("eq1")
report["summary"]
# 'All 3 diagnostics pass at the 0.05 level.'

Breusch-Godfrey, White y Jarque-Bera, cada uno con su estadístico, valor p y si se rechaza la hipótesis nula. Un test que no puede ejecutarse aparece listado en report["skipped"] con el motivo que dio EViews, de modo que el resumen no sobreestima cuánto se comprobó realmente.

Estos veredictos leen los valores p contra un nivel que tú eliges. No establecen que la especificación sea sólida: las rupturas estructurales, la estacionalidad y las muestras cortas engañan a estos tests.

pandas en ambas direcciones

frame = ev.to_dataframe(["gdp", "k", "l"])   # indexed 1990Q1, 1990Q2, ...
frame.corr()

Al escribir, un DatetimeIndex o PeriodIndex determina la frecuencia y el rango de la página, de modo que las fechas cuadran:

import numpy as np
import pandas as pd

rng = np.random.default_rng(7)
index = pd.period_range("2005Q1", periods=40, freq="Q")
unemployment = 7.0 - 0.05 * np.arange(40) + rng.normal(0, 0.4, 40)

df = pd.DataFrame(
    {"unemployment": unemployment,
     "inflation": 9.0 - 0.9 * unemployment + rng.normal(0, 0.5, 40)},
    index=index,
)

ev.from_dataframe(df)              # creates a quarterly 2005Q1-2014Q4 page
ev.run("equation phillips.ls inflation c unemployment")

Las columnas no numéricas se omiten en lugar de hacer fallar todo el DataFrame.

Gráficos

Los gráficos no se pueden renderizar como texto, así que se escriben en un archivo:

ev.export_object("phillips", "residuals.png", view="resids")

Formatos de gráfico: png, jpg, pdf, emf, wmf, bmp, gif. Formatos de tabla: csv, rtf, txt.

Errores

EViews informa de los fallos con precisión, incluyendo el número de línea dentro de un programa, y esos mensajes se transmiten tal cual:

ev.run("""series ok = 1
broken_command
""")
EViewsError: BROKEN_COMMAND is not defined or is an illegal command in "BROKEN_COMMAND"
in MCP_77B699157F3B.PRG on line 2.

El programa generado recibe un nombre aleatorio en cada ejecución, así que solo esa parte varía.

Uso del servidor MCP

Registra eviews-mcp en tu cliente MCP:

{
  "mcpServers": {
    "eviews": {
      "command": "eviews-mcp"
    }
  }
}

Para Claude Desktop:

claude mcp add eviews -- eviews-mcp

Herramientas

Herramienta

Propósito

eviews_status

Estado de EViews: versión, página activa y archivo de trabajo.

create_workfile

Nueva página por frecuencia y rango.

open_workfile / save_workfile

Abrir y guardar .wf1 / .wf2.

list_objects

Inventario de objetos, filtrable por tipo.

set_sample

Define la muestra de estimación.

run_eviews_code

Ejecuta un bloque de código de programa de EViews.

run_program_file

Ejecuta un .prg existente, con argumentos.

show

Renderiza cualquier objeto como tabla de texto.

evaluate

Un valor de una expresión.

describe

Tipo, más estadísticos para una serie.

fetch

Obtiene datos de EViews.

store

Guarda datos en EViews.

ev.export_object("phillips", "residuals.png", view="resids")
ev.run("""series ok = 1
broken_command
""")
EViewsError: BROKEN_COMMAND is not defined or is an illegal command in "BROKEN_COMMAND"
in MCP_77B699157F3B.PRG on line 2.
{
  "mcpServers": {
    "eviews": {
      "command": "eviews-mcp"
    }
  }
}
claude mcp add eviews -- eviews-mcp
python tests/test_offline.py        # 27 tests, no EViews needed
python tests/test_live.py           # 25 tests, drives the MCP tool layer
python tests/test_live_client.py    # 58 tests, drives the library API

Comportamiento

GXP19

GXP20

GXP21

GXP22

GXP23

GXP24

GXP25

GXP26

Tests

GXP27

pytest ejecuta la suite offline por defecto; las suites en vivo son opcionales porque requieren una licencia de EViews.

Licencia

MIT. Copyright (c) 2026 Merwan Roudane.

A
license - permissive license
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Economic data MCP server that connects FRED, BLS, BEA, IMF, World Bank, and ECB to any MCP-compatible client, with built-in methodology rules to guide LLMs in selecting appropriate economic indicators.
  • A
    license
    A
    quality
    B
    maintenance
    Deterministic time-series statistics for AI agents. This MCP server gives any LLM agent unit-tested statistical tools — anomaly detection, changepoint detection, seasonal decomposition, stationarity/trend tests, data-quality audits, baseline forecasts — with schema-validated structured output and no arbitrary code execution.
    17
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

  • A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…

  • MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/merwanroudane/MCP_EVIEWS'

If you have feedback or need assistance with the MCP directory API, please join our Discord server