python-session-mcp
python-session-mcp
Python in einer Sitzung ausführen, die am Leben bleibt, und sie LLM-Clients über das Model Context Protocol zugänglich machen.
Autor: Dr. Merwan Roudane
Was es anders macht
Die Sitzung bleibt bestehen. Ein DataFrame, der in einem Aufruf geladen wurde, ist im nächsten noch da, sodass eine Analyse in Schritten aufgebaut wird, anstatt jedes Mal vollständig neu gesendet zu werden.
Ihr Interpreter, nicht der des Servers. Der Server kann durchaus unter einem nackten Python ohne pandas installiert sein. Der Interpreter, der Ihren Code ausführt, wird separat gewählt: Eine conda- oder Anaconda-Installation wird bevorzugt, wenn eine vorhanden ist, und PYTHON_MCP_INTERPRETER überschreibt das.
Ein Absturz kostet einen Prozess. Code läuft in einem Worker, nicht im Server. Speicher erschöpfen, sys.exit aufrufen, eine C-Erweiterung zum Absturz bringen – der Worker wird ersetzt und der Server läuft weiter. Es hält auch den Benutzercode vom stdin des Servers fern, das unter MCP der JSON-RPC-Stream selbst ist.
Related MCP server: mcp-python-repl
Installation
pip install python-session-mcpBibliotheksnutzung
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 dictEin abschließender Ausdruck wird so angezeigt, wie es eine REPL tun würde, sodass df.head() allein den Frame anzeigt, ohne print().
MCP-Server-Nutzung
{
"mcpServers": {
"python": {
"command": "python-session-mcp",
"env": { "PYTHON_MCP_INTERPRETER": "C:\\Users\\you\\anaconda3\\python.exe" }
}
}
}Werkzeuge
Sitzung
Werkzeug | Zweck |
| Welcher Interpreter und welche Pakete er tatsächlich hat |
| Alles vergessen, optional den Interpreter neu starten |
Code ausführen
Werkzeug | Zweck |
| Hauptwerkzeug. Code in der persistenten Sitzung ausführen |
| Was aktuell definiert ist |
| Typ, Form, dtypes und ein Blick auf ein Objekt |
| Einen JSON-darstellbaren Wert zurückbringen |
Daten
Werkzeug | Zweck |
|
|
| Ein DataFrame schreiben, fehlende Ordner erstellen |
| Form, dtypes, fehlende Zählungen und die ersten Zeilen |
| Deskriptive Statistiken mit Schiefe und Kurtosis |
| Pearson, Spearman oder Kendall |
Schätzung
Werkzeug | Zweck |
| OLS, optional mit HC- oder HAC-Standardfehlern |
| Breusch-Godfrey, White und Jarque-Bera in einem Aufruf |
| ADF oder KPSS, Differenzieren bis zur Stationarität |
Diagramme
Werkzeug | Zweck |
| Linie, Streuung, Histogramm, Box oder Balken – optional direkt in eine Datei |
| Die offene matplotlib-Figur in eine Datei schreiben |
Fehler
Fehler nennen die Ausnahme und die Zeile Ihres Codes und lassen die Sitzung intakt:
Python error: NameError on line 2: name 'undefined_name' is not definedAlles, was vor dem Fehler ausgegeben wurde, wird mit gemeldet, da diese Ausgabe oft erklärt, was den Fehler verursacht hat.
Abbildungen
Ein Plot kann nicht als Text zurückkommen. Zeichnen Sie ihn, dann speichern Sie ihn:
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 createdWissenswertes
Der Interpreter ist vom Server getrennt. Prüfen Sie
python_status, bevor Sie sich darauf verlassen, dass ein Paket vorhanden ist.Zustand ist ein Komfort und eine Gefahr. Namen bleiben bestehen, sodass eine veraltete Variable aus einem früheren Schritt eine spätere stillschweigend speisen kann.
reset_namespacebeim Start von etwas Neuem.run_pythonführt aus, was ihm gegeben wird, in Ihrer Umgebung, mit Ihrem Dateizugriff. Das ist der Sinn davon, und es lohnt sich, bewusst damit umzugehen.Der abschließende Ausdruck wird wiedergegeben. Ein langes DataFrame wird vollständig gedruckt, es sei denn, Sie schneiden es.
Tests
python tests/test_live.py # 41 testsSie decken Persistenz, Fehlerberichterstattung mit Zeilennummern, JSON-Roundtrips, Figurenschreiben, Wiederherstellung nachdem Benutzercode den Worker vollständig tötet, und jedes Daten- und Schätzungswerkzeug gegen generierte Daten mit bekannten Koeffizienten ab.
Gegen EViews auf denselben Daten geprüft, stimmt die Regression mit jeder gedruckten Ziffer überein – Koeffizienten, R-Quadrat, Durbin-Watson und die Breusch-Godfrey- und Jarque-Bera-Statistiken gleichermaßen.
Lizenz
MIT. Copyright (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.1235 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