Skip to main content
Glama
merwanroudane

python-session-mcp

python-session-mcp

Licence Python

Запускайте 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: LLM Python Code Sandbox

Установка

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

python_status

Какой интерпретатор и какие пакеты в нём реально есть

reset_namespace

Забыть всё, при необходимости перезапустив интерпретатор

Выполнение кода

Tool

Purpose

run_python

Основной инструмент. Выполняет код в постоянной сессии

list_names

Что сейчас определено

describe_object

Тип, форма, dtypes и краткий обзор объекта

get_value

Возвращает значение, представимое в JSON

Данные

Tool

Purpose

load_data

Читает .csv, .xlsx, .dta, .parquet, .sav или .json

save_data

Записывает DataFrame, создавая недостающие папки

preview_data

Форма, dtypes, количество пропусков и первые строки

summary_statistics

Описательные статистики с асимметрией и эксцессом

correlation

Пирсон, Спирмен или Кендалл

Оценивание

Tool

Purpose

regression

МНК, опционально с устойчивыми стандартными ошибками HC или HAC

regression_diagnostics

Бреуш-Годфри, Уайт и Харке-Бера одним вызовом

unit_root

ADF или KPSS, взятие разностей до стационарности

Графики

Tool

Purpose

plot

line, scatter, hist, box или bar — опционально сразу в файл

save_figure

Сохраняет открытую фигуру 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.

A
license - permissive license
Not graded
quality - not tested
C
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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides persistent IPython shell sessions per conversation with DataFrame-centric architecture, enabling stateful data analysis, CLI tool execution, and integration of external MCP servers within the same workspace context.
    23
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    A 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.
    12
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for secure, session-based Python code execution in Docker containers, enabling LLM applications to run code, manage state, and access files.
    9
    MIT

View all related MCP servers

Related MCP Connectors

  • Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).

  • MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

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_python'

If you have feedback or need assistance with the MCP directory API, please join our Discord server