python-session-mcp
python-session-mcp
Запускайте Python в сеансе, который остаётся активным, и открывайте его для LLM-клиентов через Model Context Protocol.
Автор: д-р Merwan Roudane
В чём отличие
Сеанс сохраняется. DataFrame, загруженный в одном вызове, остаётся на месте и в следующем, так что анализ строится по шагам, а не пересылается целиком каждый раз.
Ваш интерпретатор, а не серверный. Сервер вполне может быть установлен в голый Python без pandas. Интерпретатор, выполняющий ваш код, выбирается отдельно: при наличии предпочтение отдаётся установке conda или Anaconda, а PYTHON_MCP_INTERPRETER переопределяет это.
Сбой стоит одного процесса. Код выполняется в воркере, а не на сервере. Исчерпайте память, вызовите sys.exit, уроните C-расширение — воркер будет заменён, а сервер продолжит работу. Это также не подпускает пользовательский код к stdin сервера, который в MCP является самим потоком JSON-RPC.
Related MCP server: mcp-python-repl
Установка
pip install python-session-mcpИспользование в качестве библиотеки
from python_mcp import PythonRunner
with PythonRunner() as py:
py.run("import pandas as pd, statsmodels.api as sm")
py.run("df = pd.read_csv('macro.csv')")
print(py.run("df.describe()"))
py.run("m = sm.OLS(df['y'], sm.add_constant(df[['x','z']])).fit()")
print(py.run("m.summary()"))
print(py.value("m.params.to_dict()")) # a real Python dictФинальное выражение выводится так же, как в REPL, поэтому одного df.head() достаточно для отображения таблицы без print().
Использование MCP-сервера
{
"mcpServers": {
"python": {
"command": "python-session-mcp",
"env": { "PYTHON_MCP_INTERPRETER": "C:\\Users\\you\\anaconda3\\python.exe" }
}
}
}Инструменты
Сессия
Tool | Purpose |
| Какой интерпретатор и какие пакеты в нём реально есть |
| Забыть всё, при необходимости перезапустив интерпретатор |
Выполнение кода
Tool | Purpose |
| Основной инструмент. Выполняет код в постоянной сессии |
| Что сейчас определено |
| Тип, форма, dtypes и краткий обзор объекта |
| Возвращает значение, представимое в JSON |
Данные
Tool | Purpose |
| Читает |
| Записывает DataFrame, создавая недостающие папки |
| Форма, dtypes, количество пропусков и первые строки |
| Описательные статистики с асимметрией и эксцессом |
| Пирсон, Спирмен или Кендалл |
Оценивание
Tool | Purpose |
| МНК, опционально с устойчивыми стандартными ошибками HC или HAC |
| Бреуш-Годфри, Уайт и Харке-Бера одним вызовом |
| ADF или KPSS, взятие разностей до стационарности |
Графики
Tool | Purpose |
| line, scatter, hist, box или bar — опционально сразу в файл |
| Сохраняет открытую фигуру matplotlib в файл |
Ошибки
При сбое называются исключение и строка вашего кода, а сессия остаётся нетронутой:
Python error: NameError on line 2: name 'undefined_name' is not definedВсё, что было выведено до сбоя, сообщается вместе с ним, поскольку именно этот вывод часто объясняет причину.
Графики
График нельзя вернуть как текст. Нарисуйте его, а затем сохраните:
py.run("import matplotlib; matplotlib.use('Agg')")
py.run("import matplotlib.pyplot as plt; plt.plot(df['x'], df['y'], 'o')")
py.save_figure("figures/scatter.png") # missing folders are createdПолезно знать
Интерпретатор отделён от серверного. Проверяйте
python_status, прежде чем рассчитывать на наличие пакета.Состояние — это и удобство, и опасность. Имена сохраняются, поэтому устаревшая переменная с предыдущего шага может незаметно повлиять на следующий. Используйте
reset_namespaceперед началом нового.run_pythonвыполняет всё, что ему передано, в вашем окружении и с вашим доступом к файлам. В этом его суть, и к этому стоит относиться осознанно.Финальное выражение выводится на экран. Длинный DataFrame напечатается целиком, если его не обрезать.
Тесты
python tests/test_live.py # 41 testsОни охватывают сохранение состояния, сообщения об ошибках с номерами строк, JSON-сериализацию, сохранение графиков, восстановление после того, как пользовательский код полностью убивает воркер, а также каждый инструмент работы с данными и оценивания на сгенерированных данных с известными коэффициентами.
При проверке на тех же данных в EViews регрессия совпадает до каждой напечатанной цифры — коэффициенты, R-квадрат, Дарбин-Уотсон, а также статистики Бреуша-Годфри и Харке-Бера.
Лицензия
MIT. Авторское право (c) 2026 Merwan Roudane.
This server cannot be deployed
Maintenance
Related MCP Connectors
Multiple MCP tools, persistent graph memory, token-saving data pointers, and more.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to execute Python code in isolated sandboxes with file operations and MCP integration, supporting multi-round execution and plot capture.1-
- AlicenseAqualityDmaintenanceA production-grade MCP server providing a persistent Python REPL with multi-session support, sandboxing, and timeout protection, enabling LLM agents to execute Python code across multiple turns with variables that persist between calls.1246 PyPI1MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for secure, session-based Python code execution in Docker containers, enabling LLM applications to run code, manage state, and access files.9MIT
- AlicenseNot gradedqualityBmaintenanceEnables LLM agents to run persistent Python code in a workspace-scoped shared kernel, with tools for execution, background tasks, file operations, and external MCP integrations.AGPL 3.0