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: 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 |
| Какой интерпретатор и какие пакеты в нём реально есть |
| Забыть всё, при необходимости перезапустив интерпретатор |
Выполнение кода
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 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
- AlicenseNot gradedqualityDmaintenanceProvides 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.23Apache 2.0
- 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.121MIT
- 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
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.
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_python'
If you have feedback or need assistance with the MCP directory API, please join our Discord server