Python Session
БесплатноНе проверенEnables LLM clients to run Python code in a persistent, user-selected interpreter via MCP, with tools for data loading, summaries, regressions, diagnostics, and
Описание
Enables LLM clients to run Python code in a persistent, user-selected interpreter via MCP, with tools for data loading, summaries, regressions, diagnostics, and plotting, while keeping sessions alive between calls and isolating crashes.
README
Run Python in a session that stays alive, and expose it to LLM clients over the Model Context Protocol.
Author: Dr Merwan Roudane
What makes it different
The session persists. A DataFrame loaded in one call is still there in the next, so an analysis is built up in steps rather than resent whole each time.
Your interpreter, not the server's. The server may well be installed under
a bare Python with no pandas in it. The interpreter that runs your code is
chosen separately: a conda or Anaconda installation is preferred when one is
present, and PYTHON_MCP_INTERPRETER overrides that.
A crash costs one process. Code runs in a worker, not in the server. Exhaust
memory, call sys.exit, crash a C extension — the worker is replaced and the
server carries on. It also keeps user code away from the server's stdin, which
under MCP is the JSON-RPC stream itself.
Install
pip install python-session-mcp
Library use
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
A final expression is shown the way a REPL would, so df.head() on its own
displays the frame without print().
MCP server use
{
"mcpServers": {
"python": {
"command": "python-session-mcp",
"env": { "PYTHON_MCP_INTERPRETER": "C:\\Users\\you\\anaconda3\\python.exe" }
}
}
}
Tools
Session
| Tool | Purpose |
|---|---|
python_status |
Which interpreter, and which packages it actually has |
reset_namespace |
Forget everything, optionally restarting the interpreter |
Running code
| Tool | Purpose |
|---|---|
run_python |
Main tool. Run code in the persistent session |
list_names |
What is currently defined |
describe_object |
Type, shape, dtypes and a peek at one object |
get_value |
Bring a JSON-representable value back |
Data
| Tool | Purpose |
|---|---|
load_data |
Read .csv, .xlsx, .dta, .parquet, .sav or .json |
save_data |
Write a DataFrame out, creating missing folders |
preview_data |
Shape, dtypes, missing counts and the first rows |
summary_statistics |
Descriptives with skew and kurtosis |
correlation |
Pearson, Spearman or Kendall |
Estimation
| Tool | Purpose |
|---|---|
regression |
OLS, optionally with HC or HAC standard errors |
regression_diagnostics |
Breusch-Godfrey, White and Jarque-Bera in one call |
unit_root |
ADF or KPSS, differencing until stationary |
Charts
| Tool | Purpose |
|---|---|
plot |
line, scatter, hist, box or bar — optionally straight to a file |
save_figure |
Write the open matplotlib figure to a file |
Errors
Failures name the exception and the line of your code, and leave the session intact:
Python error: NameError on line 2: name 'undefined_name' is not defined
Anything printed before the failure is reported with it, since that output is often what explains the failure.
Figures
A plot cannot come back as text. Draw it, then save it:
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
Worth knowing
- The interpreter is separate from the server's. Check
python_statusbefore relying on a package being there. - State is a convenience and a hazard. Names persist, so a stale variable
from an earlier step can quietly feed a later one.
reset_namespacewhen starting something new. run_pythonexecutes whatever it is given, in your environment, with your file access. That is the point of it, and worth being deliberate about.- The final expression is echoed. A long DataFrame will print in full unless you slice it.
Tests
python tests/test_live.py # 41 tests
They cover persistence, error reporting with line numbers, JSON round trips, figure writing, recovery after user code kills the worker outright, and every data and estimation tool against generated data with known coefficients.
Checked against EViews on the same data, the regression agrees to every printed digit -- coefficients, R-squared, Durbin-Watson, and the Breusch-Godfrey and Jarque-Bera statistics alike.
Licence
MIT. Copyright (c) 2026 Merwan Roudane.
Установка Python Session
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/merwanroudane/mcp_pythonFAQ
Python Session MCP бесплатный?
Да, Python Session MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Python Session?
Нет, Python Session работает без API-ключей и переменных окружения.
Python Session — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Python Session в Claude Desktop, Claude Code или Cursor?
Открой Python Session на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
автор: duxiaohuiSupabase
Database, auth and storage
автор: SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare Python Session with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
