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: LLM Python Code Sandbox
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 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