Skip to main content
Glama

eviews-mcp

Tests PyPI Python Licence Platform EViews

EViews를 Python에서 구동하고, Model Context Protocol을 통해 LLM 클라이언트에 노출합니다.

문서 사이트  ·  연구자 가이드  ·  PyPI

하나의 패키지에 두 가지가 들어 있습니다:

  • 라이브러리. 스크립트와 노트북용 EViews 클래스 — 워크파일 생성, 모델 추정, 결과를 텍스트 또는 pandas DataFrame으로 읽어오기.

  • MCP 서버. 동일한 기능을 도구(tool)로 제공하므로, 어시스턴트가 실제 EViews 세션에서 계량경제학 작업을 수행할 수 있습니다.

Windows의 EViews 13을 대상으로 빌드 및 테스트되었으며, EViews 10–14는 동일한 COM 인터페이스를 통해 올바르게 인식됩니다.

처음이신가요? EViews 연구자 가이드는 깨끗한 머신에서 완성된 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]

COM 자동화를 통해 EViews를 구동하므로 Windows와 로컬 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는 뷰(view)를 받으므로 진단에 별도의 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에 테이블 형식을 요청합니다. 스풀(spool)로 고정되는 뷰(그중 ARDL 공적분 관계)는 COM으로 읽을 수 없으므로, show는 해당 뷰에 대해 텍스트 덤프로 대체합니다.

레이아웃이 아닌 숫자가 필요하다면 table()은 전체 배정밀도로 원시 행을 반환하고, value()는 숫자 하나를 반환합니다:

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를 전달하여 검정을 선택할 수 있습니다: Phillips-Perron은 "pp", KPSS는 "kpss", 추세 추가는 "adf, trend". KPSS는 귀무가설이 반대이므로 보고된 차수는 KPSS에 적용되지 않습니다.

표준 사후 추정 배터리를 한 번의 호출로:

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

Breusch-Godfrey, White, Jarque-Bera 각각의 통계량, p-값, 귀무가설 기각 여부. 실행할 수 없는 검정은 EViews가 제공한 이유와 함께 report["skipped"] 아래에 나열되므로, 요약이 실제로 확인된 내용을 과장하지 않습니다.

이러한 판정은 선택한 유의수준에 대해 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

열린 워크파일 하나 또는 전체를 닫습니다.

workfile_info

이름, 페이지, 빈도, 범위, 표본.

list_objects

EViews 유형별로 필터링 가능한 목록.

set_sample

추정 표본을 설정합니다.

run_eviews_code

주요 도구. EViews 프로그램 코드 블록을 실행합니다.

run_program_file

인수와 함께 기존 .prg를 실행합니다.

command

단일 명령줄.

show

모든 객체를 텍스트 테이블로 렌더링합니다.

evaluate

표현식에서 값 하나를 가져옵니다.

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 스레드. 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