Skip to main content
Glama

eviews-mcp

Tests PyPI Python Licence Platform EViews

Steuern Sie EViews aus Python und stellen Sie es LLM-Clients über das Model Context Protocol zur Verfügung.

Dokumentationsseite  · Forscherleitfaden  · PyPI

Zwei Dinge in einem Paket:

  • Eine Bibliothek. Eine EViews-Klasse für Skripte und Notebooks – Workfiles erstellen, Modelle schätzen, Ergebnisse als Text oder pandas-DataFrames zurücklesen.

  • Ein MCP-Server. Dieselben Fähigkeiten als Tools, sodass ein Assistent Ökonometrie in einer echten EViews-Sitzung durchführen kann.

Entwickelt und getestet gegen EViews 13 unter Windows; EViews 10–14 werden über dieselbe COM-Schnittstelle korrekt aufgelöst.

Neu hier? Der EViews-Forscherleitfaden führt Sie von einem sauberen Rechner zu einer fertigen ARDL-Studie, wobei jeder Befehl und jede Ausgabe gegen eine echte EViews-Sitzung verifiziert wurde. Keine Python-Kenntnisse erforderlich.

Installation

pip install eviews-mcp

Mit pandas-Unterstützung:

pip install "eviews-mcp[pandas]"

Oder aus einem Klon, für die Entwicklung:

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

Erfordert Windows und eine lokale EViews-Installation, da EViews über COM-Automation gesteuert wird.

Related MCP server: econstats-mcp

Bibliotheksnutzung

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

Jede EViews-Ansicht als Text

show akzeptiert eine Ansicht, daher benötigen Diagnosen keine zusätzliche API:

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 und impulse zeichnen standardmäßig Grafiken; die (t)-Varianten fordern EViews zur Tabellenform auf. Ansichten, die in einen Spool statt in eine Tabelle eingefroren werden – darunter die ARDL-Kointegrationsbeziehung – können über COM überhaupt nicht gelesen werden, daher fällt show für diese auf einen Text-Dump zurück.

Für die Zahlen statt des Layouts gibt table() rohe Zeilen mit voller doppelter Genauigkeit zurück, und value() gibt eine einzelne Zahl zurück:

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

Ergebnisse als Daten, nicht nur als Text

show formatiert eine Tabelle zum Lesen. Diese geben stattdessen die Zahlen zurück, zum Testen, Tabellieren oder zur Weitergabe an etwas anderes:

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

Integrationsordnung, getestet durch Differenzen bis zur Stationarität:

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, ...}]}

Übergeben Sie options, um den Test zu wählen: "pp" für Phillips-Perron, "kpss" für KPSS, "adf, trend" für einen Trend. KPSS kehrt die Nullhypothese um, daher gilt die gemeldete Ordnung nicht dafür.

Die standardmäßige Post-Schätzungs-Batterie in einem Aufruf:

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

Breusch-Godfrey, White und Jarque-Bera, jeweils mit Statistik, p-Wert und ob die Nullhypothese abgelehnt wird. Ein Test, der nicht ausgeführt werden kann, wird unter report["skipped"] mit dem von EViews angegebenen Grund aufgeführt, sodass die Zusammenfassung nie überbewertet, wie viel tatsächlich geprüft wurde.

Diese Urteile lesen p-Werte gegen ein von Ihnen gewähltes Niveau. Sie belegen nicht, dass eine Spezifikation solide ist – Strukturbrüche, Saisonalität und kurze Stichproben führen diese Tests alle in die Irre.

pandas in beide Richtungen

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

Beim Zurückschreiben bestimmt ein DatetimeIndex oder PeriodIndex die Seitenfrequenz und -spanne, sodass Daten ausgerichtet bleiben:

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")

Nicht-numerische Spalten werden übersprungen, anstatt den gesamten Frame fehlschlagen zu lassen.

Grafiken

Grafiken können nicht als Text gerendert werden, daher schreiben Sie sie in eine Datei:

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

Grafikformate: png, jpg, pdf, emf, wmf, bmp, gif, eps, tex. Tabellenformate: csv, rtf, txt, html.

Fehler

EViews meldet Fehler präzise, einschließlich der Zeilennummer innerhalb eines Programms, und diese Meldungen werden unverändert durchgereicht:

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.

Das generierte Programm erhält bei jedem Lauf einen zufälligen Namen, sodass nur dieser Teil variiert.

MCP-Server-Nutzung

Registrieren Sie den Befehl eviews-mcp bei Ihrem MCP-Client:

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

Für Claude Code:

claude mcp add eviews -- eviews-mcp

Tools

Tool

Zweck

eviews_status

Verbindung, Version, aktives Workfile. Beginnen Sie hier beim Debuggen.

reset_eviews

Instanz verwerfen und sauber neu starten.

set_eviews_visible

EViews-Fenster anzeigen oder ausblenden.

create_workfile

Neue Seite nach Frequenz und Bereich.

open_workfile / save_workfile

.wf1 / .wf2 öffnen und speichern.

close_workfile

Ein oder alle offenen Workfiles schließen.

workfile_info

Name, Seite, Frequenz, Bereich, Stichprobe.

list_objects

Inventar, filterbar nach EViews-Typ.

set_sample

Schätzstichprobe festlegen.

run_eviews_code

Hauptwerkzeug. Einen Block EViews-Programmcode ausführen.

run_program_file

Eine vorhandene .prg mit Argumenten ausführen.

command

Eine einzelne Befehlszeile.

show

Beliebiges Objekt als Texttabelle rendern.

evaluate

Ein Wert aus einem Ausdruck.

describe_object

Typ, plus Statistiken für eine Serie.

equation_coefficients

Koeffizienten als saubere Zahlentabelle.

unit_root

Integrationsordnung, getestet durch Differenzen.

diagnose_equation

Serielle Korrelation, Heteroskedastizität und Normalität.

read_data

Serie als ausgerichtete Tabelle oder CSV mit voller Genauigkeit.

write_series

Werte in eine Serie schreiben.

import_data

.xlsx, .csv, .dta, .sav und mehr lesen.

export_data

Serie in eine Datei schreiben.

export_object

Ein Objekt speichern – der Weg, Grafiken abzurufen.

Ergebnisse werden von run_eviews_code nicht zurückgegeben, da EViews Programmausgaben an sein eigenes Protokollfenster sendet, das COM nicht erreichen kann. Schätzen Sie in ein benanntes Objekt und rufen Sie show darauf auf.

Fehlerbehebung

Wenn der Server nicht startet

Eine Version vor 1.3.3 konnte das MCP SDK 2.x installieren, das das Modul entfernt hat, auf dem dieser Server basiert. Das Symptom ist jedes Mal dasselbe:

ModuleNotFoundError: No module named 'mcp.server.fastmcp'

1.3.3 pinnt das SDK unter 2.0. Ein Upgrade behebt es – aber pip könnte einen zwischengespeicherten Index ausliefern, der vor der Veröffentlichung liegt, also den Cache umgehen:

pip install --upgrade --no-cache-dir "eviews-mcp[pandas]"

Bestätigen Sie, dass der Server selbst importiert, nicht nur das Paket. Das Paket importiert träge und funktioniert auch dann, wenn das SDK unbrauchbar ist, daher beweist die Überprüfung nichts:

python -c "import eviews_mcp.server as s; print(len(s.mcp._tool_manager.list_tools()), 'tools')"

Vierundzwanzig Tools bedeuten, dass die Installation gesund ist.

Wissenswertes Verhalten

Dies sind EViews-Eigenschaften, die die Bibliothek für Sie übernimmt, dokumentiert, weil sie Leute überraschen, die direkt COM-Code schreiben.

  • Schreibvorgänge respektieren die aktive Stichprobe. Unter smpl 2000m3 2000m6 landen 12 geschriebene Werte bei 4 und lassen den Rest stillschweigend als NA. Schreibvorgänge standardmäßig auf die gesamte Seite; übergeben Sie sample="", um stattdessen in die aktuelle Stichprobe zu schreiben.

  • save ignoriert die Dateierweiterung. graph.save "out.png" schreibt EMF-Daten. Das Format wird explizit übergeben, und ein Speichern, das keine Datei erzeugt, löst einen Fehler aus, anstatt Erfolg zu melden.

  • Relative Pfade werden gegen EViews aufgelöst, nicht gegen den aufrufenden Prozess, daher werden Pfade absolut gemacht, bevor sie übergeben werden.

  • Ein datierter Frame bestimmt die Seite. Das Schreiben eines 12-zeiligen Quartals-Frames in eine offene 80-zeilige Seite würde die Werte auf die falschen Daten setzen, daher wird stattdessen eine Seite erstellt, die dem Frame entspricht.

  • Keine Protokollumleitung. Der Befehl output erfordert einen eingefrorenen Objektnamen und schreibt sonst überhaupt nichts, daher kann er kein Protokoll erfassen. Ergebnisse stammen aus dem Einfrieren eines Objekts in eine Tabelle und dem Lesen dieser.

  • Kein GetScalar / PutScalar / GetString. Diese sind überhaupt nicht auf der EViews-COM-Schnittstelle. Get deckt sie ab und leitet den Typ ab.

  • Ein COM-Thread. MCP verteilt synchrone Tools über einen Thread-Pool, und ein COM-Zeiger ist nicht über Apartments hinweg gültig, daher wird jeder EViews-Aufruf auf einen einzelnen, mit Apartment initialisierten Thread kanalisiert.

  • Das Importieren in ein offenes Workfile kürzt die Datei stillschweigend auf die Länge dieser Seite. Importe erstellen daher standardmäßig ein neues Workfile; das Zusammenführen in die aktuelle Seite ist optional.

  • EViews begrenzt, wie viele Workfiles geöffnet sein dürfen und weigert sich dann, ein weiteres zu erstellen, daher existiert close_workfile, um lange Sitzungen gesund zu halten.

Tests

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    # 62 tests, drives the library API

pytest führt standardmäßig die Offline-Suite aus; die Live-Suiten sind optional, da sie eine EViews-Lizenz benötigen.

Lizenz

MIT. Copyright (c) 2026 Merwan Roudane.

Related MCP Connectors

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
    D
    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