Skip to main content
Glama

eviews-mcp

Tests PyPI Python Licence Platform EViews

Python から EViews を操作し、Model Context Protocol を介して LLM クライアントに公開します。

Documentation site  ·  Researcher guide  ·  PyPI

このパッケージには 2 つのものが含まれています:

  • ライブラリ。 スクリプトやノートブック用の EViews クラス — ワークファイルの作成、モデルの推定、結果をテキストや pandas DataFrame として読み戻すことができます。

  • MCP サーバー。 同じ機能をツールとして提供するため、アシスタントが実際の EViews セッションで計量経済学を行うことができます。

Windows 上の EViews 13 に対して構築・テストされています。EViews 10–14 は同じ COM インターフェースを通じて正しく解決されます。

初めてですか? EViews Researcher Guide は、クリーンなマシンから完成した ARDL 研究まで、すべてのコマンドと出力を実際の EViews セッションで検証しながら案内します。Python の知識は前提としていません。

インストール

pip install eviews-mcp

pandas サポート付き:

pip install "eviews-mcp[pandas]"

または開発用にクローンから:

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

Windows とローカルの EViews インストールが必要です。COM オートメーションを通じて EViews を操作するためです。

Related MCP server: econstats-mcp

ライブラリの使用

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

任意の EViews ビューをテキストとして

show はビューを受け取るため、診断に追加の 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 と impulse はデフォルトでグラフを描画します。(t) バリアントは EViews にテーブル形式を要求します。テーブルではなくスプールにフリーズするビュー(その中には ARDL 共和分関係も含まれます)は COM 経由ではまったく読み取れないため、show はそれらに対してテキストダンプにフォールバックします。

レイアウトではなく数値が必要な場合、table() は完全な倍精度で生の行を返し、value() は 1 つの数値を返します:

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

テキストだけでなくデータとしての結果

show は読み取り用にテーブルを整形します。これらは代わりに数値を返し、テスト、集計、または他の何かに渡すために使用します:

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

定常になるまで差分を取ってテストする次数の統合:

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

options を渡してテストを選択します: "pp" は Phillips-Perron、"kpss" は KPSS、"adf, trend" はトレンドを追加します。KPSS は帰無仮説を逆にするため、報告される次数は KPSS には適用されません。

標準的な推定後バッテリーを 1 回の呼び出しで:

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

Breusch-Godfrey、White、Jarque-Bera の各テストについて、統計量、p 値、帰無仮説が棄却されるかどうかを返します。実行できないテストは report["skipped"] の下に EViews が返した理由とともにリストされるため、要約は実際にチェックされた量を過大評価することはありません。

これらの判定は、選択した水準に対して p 値を読み取ります。仕様が健全であることを確立するものではありません。構造変化、季節性、短いサンプルはすべてこれらのテストを誤解させます。

pandas 双方向

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

書き戻す際、DatetimeIndex または PeriodIndex がページの頻度とスパンを決定するため、日付は整合したままになります:

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

非数値列はフレーム全体を失敗させるのではなくスキップされます。

グラフ

グラフはテキストとしてレンダリングできないため、ファイルに書き出します:

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

グラフ形式: png, jpg, pdf, emf, wmf, bmp, gif, eps, tex。テーブル形式: csv, rtf, txt, html。

エラー

EViews はプログラム内の行番号を含めて失敗を正確に報告し、それらのメッセージは変更されずに渡されます:

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.

生成されたプログラムは実行ごとにランダムな名前が付けられるため、その部分だけが変わります。

MCP サーバーの使用

MCP クライアントに eviews-mcp コマンドを登録します:

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

Claude Code の場合:

claude mcp add eviews -- eviews-mcp

ツール

ツール

目的

eviews_status

接続、バージョン、アクティブなワークファイル。デバッグ時はここから始めます。

reset_eviews

インスタンスを破棄してクリーンに再起動します。

set_eviews_visible

EViews ウィンドウを表示または非表示にします。

create_workfile

頻度と範囲で新しいページを作成します。

open_workfile / save_workfile

.wf1 / .wf2 を開いたり保存したりします。

close_workfile

1 つまたはすべての開いているワークファイルを閉じます。

workfile_info

名前、ページ、頻度、範囲、サンプル。

list_objects

EViews タイプでフィルタリング可能なインベントリ。

set_sample

推定サンプルを設定します。

run_eviews_code

メインツール。 EViews プログラムコードのブロックを実行します。

run_program_file

引数付きで既存の .prg を実行します。

command

単一のコマンドライン。

show

任意のオブジェクトをテキストテーブルとしてレンダリングします。

evaluate

式から 1 つの値を取得します。

describe_object

タイプ、および系列の統計量。

equation_coefficients

係数をクリーンな数値テーブルとして取得します。

unit_root

差分を取ってテストする次数の統合。

diagnose_equation

系列相関、不均一分散、正規性。

read_data

系列を整列されたテーブルまたは完全精度の CSV として読み取ります。

write_series

系列に値を書き込みます。

import_data

.xlsx, .csv, .dta, .sav などを読み取ります。

export_data

系列をファイルに書き出します。

export_object

オブジェクトを保存します — グラフを取得する方法です。

run_eviews_code は結果をエコーしません。EViews はプログラム出力を COM が到達できない独自のログウィンドウに送信するためです。名前付きオブジェクトに推定して、show を呼び出してください。

トラブルシューティング

サーバーが起動しない場合

1.3.3 より前のバージョンでは MCP SDK 2.x がインストールされる可能性があり、このサーバーが基づいているモジュールが削除されました。症状は毎回同じです:

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

1.3.3 は SDK を 2.0 未満に固定しています。アップグレードで修正されますが、pip がリリース前のキャッシュされたインデックスを提供する可能性があるため、キャッシュをバイパスしてください:

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

パッケージだけでなく、サーバー自体がインポートされることを確認してください。パッケージは遅延インポートされ、SDK が使用できない場合でも成功するため、チェックしても何も証明されません:

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

24 個のツールがあれば、インストールは正常です。

知っておくべき動作

これらはライブラリが代わりに処理する EViews の特性であり、COM コードを直接書く人を驚かせるため文書化されています。

  • 書き込みはアクティブなサンプルを尊重します。 smpl 2000m3 2000m6 の下で 12 個の値を書き込むと 4 個だけが配置され、残りは黙って NA になります。そのため、書き込みはデフォルトでページ全体に対して行われます。現在のサンプルを選択するには sample="" を渡します。

  • save はファイル拡張子を無視します。 graph.save "out.png" は EMF データを書き込みます。形式は明示的に渡され、ファイルを生成しない保存は成功を報告するのではなく例外を発生させます。

  • 相対パスは呼び出し元プロセスではなく EViews に対して解決されます。そのため、パスは渡される前に絶対パスに変換されます。

  • 日付付きフレームがページを支配します。 12 行の四半期フレームを開いている 80 行のページに書き込むと、値が誤った日付に配置されるため、代わりにフレームに一致するページが作成されます。

  • ログリダイレクトはありません。 output コマンドはフリーズされたオブジェクト名を必要とし、それ以外の場合は何も書き込まないため、ログをキャプチャできません。結果はオブジェクトをテーブルにフリーズして読み取ることで得られます。

  • GetScalar / PutScalar / GetString はありません。 これらは EViews COM インターフェースにはまったく存在しません。Get がそれらをカバーし、型を推測します。

  • COM スレッドは 1 つです。 MCP は同期ツールをスレッドプール全体にディスパッチしますが、COM ポインタはアパートメント間で有効ではないため、すべての EViews 呼び出しは単一のアパートメント初期化スレッドに集約されます。

  • 開いているワークファイルへのインポートはファイルをそのページの長さに切り詰めます、黙って。そのため、インポートはデフォルトで新しいワークファイルを作成します。現在のページへのマージはオプトインです。

  • EViews は開くことができるワークファイルの数を制限し、その後は別のワークファイルの作成を拒否するため、長時間のセッションを健全に保つために close_workfile が存在します。

テスト

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 はデフォルトでオフラインスイートを実行します。ライブスイートは EViews ライセンスが必要なためオプトインです。

ライセンス

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