Skip to main content
Glama

eviews-mcp

Tests PyPI Python Licence Platform EViews

Steuern Sie EViews von Python aus und machen Sie es über das Model Context Protocol für LLM-Clients verfügbar.

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 in einer echten EViews-Sitzung Ökonometrie betreiben kann.

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

Noch nicht eingeweiht? Der EViews-Forscherleitfaden führt Sie von einem frischen Rechner bis zu einer vollständigen ARDL-Studie. Jeder Befehl und jede Ausgabe wurden gegen eine echte EViews-Sitzung geprüft. Python-Kenntnisse werden nicht vorausgesetzt.

Installation

pip install eviews-mcp

Mit pandas-Unterstützung:

pip install "eviews-mcp[pandas]"

Oder aus einem lokalen 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 angesteuert 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 übernimmt eine Ansicht, daher sind für Diagnosen keine zusätzlichen APIs erforderlich:

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 Graphen; die (t)-Varianten fordern von EViews die Tabellenform. Ansichten, die in einen Spool statt in eine Tabelle einfrieren – darunter die ARDL-Kointegrationsbeziehung –, können über COM überhaupt nicht gelesen werden. Für diese fällt show auf eine Textausgabe zurück.

Wenn die Zahlen zählen und nicht das Layout: table() liefert die rohen Zeilen in voller Doppelgenauigkeit, und value() liefert eine einzelne Zahl:

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 Text

show formatiert eine Tabelle zum Lesen. Diese Funktionen liefern stattdessen die Zahlen – 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, über Differenzen hinweg 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 zusätzlich für einen linearen Trend. KPSS dreht die Nullhypothese um, die angegebene Ordnung gilt daher nicht dafür.

Die übliche Testbatterie nach der Schätzung 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 Prüfgröße, p-Wert und dem Rejektionsergebnis für die Nullhypothese. Ein Test, der nicht ausgeführt werden kann, wird unter report["skipped"] mit dem von EViews gelieferten Grund eingetragen. Die Zusammenfassung überschätzt also nie den tatsächlichen Prüfumfang.

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

pandas in beide Richtungen

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

Beim Zurückschreiben bestimmen DatetimeIndex oder PeriodIndex die Seitenfrequenz und Seitenlänge/Zeitbereich, sodass die Daten synchron 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, statt das gesamte DataFrame zu verwerfen.

Grafiken

Grafiken lassen sich nicht als Text rendern, also 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 in einem Programm. Diese Meldungen werden unverändert durch gegeben:

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; nur dieser Teil variiert also.

MCP-Serververwendung

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. Debugging hier starten.

reset_eviews

Instanz verwerfen und sauber neu starten.

set_eviews_visible

EViews-Fenster anzeigen oder ausblenden.

recreate_workfile / create_workfile

Neue Seite nach Frequenz und Bereich.

open_workfile

.wf1 / .wf2 öffnen und speichern.

close_workfile

Eine oder alle offenen Workfiles schließen.

workfile_info

Name, Seite, Frequenz, Bereich, Sample.

list_objects

Inventar, nach Compute" / EViews-Typ filterbar.

set_sample

Schätzsample festlegen.

run_eviews_code

Haupt-Tool. Einen Block EViews-Programmcode ausführen.

run_program_file

Hern eines vorhandenen .prg mit Argumenten.

command

Eine einzelne Befehlszeile.

show

Objekt als Tabelle rendern.

evaluate

Einen Wert aus einem Ausdruck.

describe_object

Typ sowie Statistiken für eine Serie.

equation_coefficients

Koeffizienten als saubere Zahlentextabelle.

unit_root

Integrationsordnung, über Differenzen getestet.

diagnose_equation

Ergebnisse geben: Serielle Korrelation, Heteroskedastizität und Normalität.

read_data

Serien als ausgerichtete Tabelle oder CSV mit voller Präz.

write_series

Werte in eine Serie schreiben.

import_data

Liest .. .cs, .dta, .sav u.a.

export_data

Serien in eine Datei schreiben.

export_object

Ein Objekt speichern – der Weg, Grafiken abzurufen.

Ergebnisse werden nicht von run_eviews_code ausgegeben, da EViews Programmausgaben in das eigene Protokollfenster schickt, wo COM sie nicht erreichen kann. Schätzen Sie also in ein benanntes Objekt und rufen Sie show darauf auf.

Interessantes Verhalten

Diese Eigenschaften hand take EViews; the library treats them for you; documented because people writing directly COM code being surprised.

  • Writes respekt the active sample. Unter smpl 2000m3 2000m6 platziert das Schreiben von 12 Werten nur 4 und lässt den Rest stillschweigend NA. Schreibzugriffe nutzen standardmäßig die gesamte Seite; sample="" optiert stattdessen in das aktuelle Sample.

  • save ignoriert die Dateierweiterung. graph.save "out.png" schreibt EMF-Daten. Das Format wird explizit übergeben; ein Speichern ohne erzeugte Datei löst einen Fehler aus statt Erfolg zu meldden.

  • Relative Pfade lösen sich gegen EViews auf, nicht gegen den aufrufenden Prozess; Pfade werden deshalb absolut gesetzt, bevor sie übergeben werden.

  • Ein datiertes DataFrame bestimmt die Seite. Das Schreiben eines 12-zeiligen Quartal-Frames in eine offene 80-zeilige Seite würde die Werte auf den falschen Daten platzieren; daher wird eine zum Frame passende Seite erzeugt.

  • Keine Logumleitung. output benötigt einen eingefrorenen Objekt ab und schreibt sonst gar nichts; ein Log kann nicht eingefangen werden. Ergebnisse stammen durch Einfrieren eines Objekts in eine Tabelle und Lesen dieser Tabelle.

  • Keine GetScalar- / PutScalar- / GetString- Support. Diese gibt es an der EViews-COM-Schnittstelle überhaupt nicht. Get deckt sie ab und bestimmt den Typ automatisch.

  • Eine COM-Thread. MCP dispered synchroner Tools über einen Thread-Pool; ein COM-Zeiger ist über Apartments hinweg nicht gültig. Also wird jedes EViews-Aufrufution auf einen einzigen Apartment-initialsierten Thread gepumpt.

  • Import in ein offenes Workfile verkürzt die Datei stillschweigend auf die Seitenlänge. Import entwickelt deshalb standardmäßig einues Workfile; das Mischen in die aktuelle Seite ist opt-in.

  • EViews begrenzt die Anzahl offener Workfiles und verweigert danach weitere; close_workfile ist deshalb dazu da, lange Sitzungen debugbar 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    # 58 tests, drives the library API

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

Lizenz

MIT. Copyright (c) 2026 EViews-Roudane.

[Letters]

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