eviews-mcp
eviews-mcp
Управляйте 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 causalityresids и 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. |
| Новая страница по частоте и диапазону. |
| Открыть и сохранить |
| Закрыть один или все открытые рабочие файлы. |
| Имя, страница, частота, диапазон, выборка. |
| Перечень, фильтруемый по типу EViews. |
| Установить выборку для оценки. |
| Основной инструмент. Выполнить блок программного кода EViews. |
| Запустить существующий |
| Одна командная строка. |
| Отобразить любой объект в виде текстовой таблицы. |
| Одно значение из выражения. |
| Тип, а также статистика для ряда. |
| Коэффициенты в виде чистой таблицы чисел. |
| Порядок интеграции, проверяемый по разностям. |
| Последовательная корреляция, гетероскедастичность и нормальность. |
| Ряд в виде согласованной таблицы или CSV с полной точностью. |
| Записать значения в ряд. |
| Читать |
| Записать ряд в файл. |
| Сохранить объект — способ получения графиков. |
Результаты не выводятся 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 APIpytest по умолчанию запускает оффлайн-набор; живые тесты подключаются по желанию, так как им нужна лицензия EViews.
Лицензия
MIT. Авторское право (c) 2026 Merwan Roudane.
This server cannot be installed
Maintenance
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
- AlicenseAqualityAmaintenanceAn MCP server that lets Large Language Models interact with Stata software to perform regression analysis and other statistical operations.4243AGPL 3.0
- FlicenseNot gradedqualityDmaintenanceEconomic 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.
- AlicenseNot gradedqualityDmaintenanceEconometrics MCP server for regression, causal inference, time series, panel data, machine learning, and broader statistical analysis workflows.10MIT
- AlicenseAqualityBmaintenanceDeterministic 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.17MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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