Skip to main content
Glama

eviews-mcp

Tests PyPI Python Licence Platform EViews

Управляйте EViews из Python и предоставляйте его LLM-клиентам через Model Context Protocol.

Документация · Руководство исследователя · PyPI

Две вещи в одном пакете:

  • Библиотека. Класс EViews для скриптов и блокнотов — создавайте рабочие файлы, оценивайте модели, читайте результаты как текст или pandas DataFrames.

  • MCP-сервер. Те же возможности в виде инструментов, чтобы ассистент мог заниматься эконометрикой в реальном сеансе EViews.

Разработано и протестировано с EViews 13 на Windows; 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]

Требуется Windows и локальная установка EViews, так как он управляет EViews через COM-автоматизацию.

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 табличную форму. Представления, которые замораживаются в пул (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, чтобы выбрать тест: "pp" для Филлипса-Перрона, "kpss" для KPSS, "adf, trend" для добавления тренда. KPSS меняет нулевую гипотезу, поэтому порядок к нему не применяется.

Стандартный набор пост-оценочных тестов одним вызовом:

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

Бреуша-Годфри, Уайта и Жарка-Бера, каждый со своей статистикой, 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-сервера

Зарегистрируйте команду eviews-mcp в вашем 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.

Поведение, о котором стоит знать

Это особенности EViews, которые библиотека обрабатывает за вас; они задокументированы, потому что удивляют людей, пишущих COM-код напрямую.

  • Запись учитывает активную выборку. При smpl 2000m3 2000m6 запись 12 значений попадает в 4 и молча оставляет остальные NA. Поэтому запись по умолчанию выполняется на всю страницу; передайте sample="", чтобы выбрать текущую выборку.

  • save игнорирует расширение файла. graph.save "out.png" записывает данные EMF. Формат передаётся явно, и сохранение, которое не создаёт файл, вызывает ошибку, а не сообщает об успехе.

  • Относительные пути разрешаются относительно EViews, а не вызывающего процесса, поэтому пути преобразуются в абсолютные перед передачей.

  • Дата-фрейм управляет страницей. Запись 12-строчного квартального фрейма в открытую страницу из 80 строк привела бы к попаданию значений на неправильные даты, поэтому вместо этого создаётся страница, соответствующая фрейму.

  • Нет перенаправления журнала. Команда output требует имя замороженного объекта и в противном случае ничего не записывает, поэтому она не может захватить журнал. Результаты получаются замораживанием объекта в таблицу и её чтением.

  • Нет GetScalar / PutScalar / GetString. Этих методов вообще нет в COM-интерфейсе EViews. 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    # 58 tests, drives the library API

pytest по умолчанию запускает оффлайн-набор; живые тесты подключаются по желанию, так как им нужна лицензия EViews.

Лицензия

MIT. Авторское право (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