python-session-mcp
python-session-mcp
Ejecuta Python en una sesión que permanece viva y expónela a clientes LLM a través del Model Context Protocol.
Autor: Dr Merwan Roudane
Qué lo hace diferente
La sesión persiste. Un DataFrame cargado en una llamada sigue ahí en la siguiente, de modo que un análisis se construye por pasos en lugar de reenviarse completo cada vez.
Tu intérprete, no el del servidor. El servidor puede estar instalado bajo un
Python básico sin pandas. El intérprete que ejecuta tu código se elige por
separado: se prefiere una instalación de conda o Anaconda cuando está presente,
y PYTHON_MCP_INTERPRETER la anula.
Un fallo cuesta un proceso. El código se ejecuta en un worker, no en el
servidor. Agota la memoria, llama a sys.exit, provoca un fallo en una
extensión C: el worker se reemplaza y el servidor continúa. También mantiene el
código de usuario alejado del stdin del servidor, que bajo MCP es el propio
flujo JSON-RPC.
Related MCP server: mcp-python-repl
Instalación
pip install python-session-mcpUso como biblioteca
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 dictUna expresión final se muestra como lo haría un REPL, así que df.head() por sí
solo muestra el frame sin print().
Uso del servidor MCP
{
"mcpServers": {
"python": {
"command": "python-session-mcp",
"env": { "PYTHON_MCP_INTERPRETER": "C:\\Users\\you\\anaconda3\\python.exe" }
}
}
}Herramientas
Sesión
Tool | Propósito |
| Qué intérprete y qué paquetes tiene realmente |
| Olvidar todo, reiniciando opcionalmente el intérprete |
Ejecución de código
Tool | Propósito |
| Herramienta principal. Ejecuta código en la sesión persistente |
| Lo que está definido actualmente |
| Tipo, forma, dtypes y un vistazo a un objeto |
| Trae de vuelta un valor representable en JSON |
Datos
Tool | Propósito |
| Lee |
| Escribe un DataFrame, creando carpetas faltantes |
| Forma, dtypes, recuentos de faltantes y las primeras filas |
| Descriptivos con asimetría y curtosis |
| Pearson, Spearman o Kendall |
Estimación
Tool | Propósito |
| MCO, opcionalmente con errores estándar HC o HAC |
| Breusch-Godfrey, White y Jarque-Bera en una sola llamada |
| ADF o KPSS, diferenciando hasta que sea estacionario |
Gráficos
Tool | Propósito |
| línea, dispersión, histograma, caja o barras: opcionalmente directamente a un archivo |
| Escribe la figura de matplotlib abierta en un archivo |
Errores
Los fallos nombran la excepción y la línea de tu código, y dejan la sesión intacta:
Python error: NameError on line 2: name 'undefined_name' is not definedCualquier cosa impresa antes del fallo se informa junto con él, ya que esa salida suele ser lo que explica el fallo.
Figuras
Un gráfico no puede volver como texto. Dibújalo y luego guárdalo:
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 createdVale la pena saber
El intérprete es independiente del del servidor. Comprueba
python_statusantes de confiar en que un paquete esté ahí.El estado es una conveniencia y un peligro. Los nombres persisten, así que una variable obsoleta de un paso anterior puede alimentar silenciosamente a una posterior. Usa
reset_namespaceal empezar algo nuevo.run_pythonejecuta lo que se le dé, en tu entorno, con tu acceso a archivos. Ese es su propósito, y vale la pena ser deliberado al respecto.La expresión final se repite. Un DataFrame largo se imprimirá completo a menos que lo dividas.
Pruebas
python tests/test_live.py # 41 testsCubren la persistencia, el informe de errores con números de línea, los viajes de ida y vuelta JSON, la escritura de figuras, la recuperación después de que el código de usuario mate al worker por completo, y cada herramienta de datos y estimación contra datos generados con coeficientes conocidos.
Comprobado contra EViews con los mismos datos, la regresión coincide en cada dígito impreso: coeficientes, R-cuadrado, Durbin-Watson, y las estadísticas de Breusch-Godfrey y Jarque-Bera por igual.
Licencia
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