Skip to main content
Glama
merwanroudane

python-session-mcp

python-session-mcp

Licence Python

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-mcp

Uso 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 dict

Una 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

python_status

Qué intérprete y qué paquetes tiene realmente

reset_namespace

Olvidar todo, reiniciando opcionalmente el intérprete

Ejecución de código

Tool

Propósito

run_python

Herramienta principal. Ejecuta código en la sesión persistente

list_names

Lo que está definido actualmente

describe_object

Tipo, forma, dtypes y un vistazo a un objeto

get_value

Trae de vuelta un valor representable en JSON

Datos

Tool

Propósito

load_data

Lee .csv, .xlsx, .dta, .parquet, .sav o .json

save_data

Escribe un DataFrame, creando carpetas faltantes

preview_data

Forma, dtypes, recuentos de faltantes y las primeras filas

summary_statistics

Descriptivos con asimetría y curtosis

correlation

Pearson, Spearman o Kendall

Estimación

Tool

Propósito

regression

MCO, opcionalmente con errores estándar HC o HAC

regression_diagnostics

Breusch-Godfrey, White y Jarque-Bera en una sola llamada

unit_root

ADF o KPSS, diferenciando hasta que sea estacionario

Gráficos

Tool

Propósito

plot

línea, dispersión, histograma, caja o barras: opcionalmente directamente a un archivo

save_figure

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 defined

Cualquier 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 created

Vale la pena saber

  • El intérprete es independiente del del servidor. Comprueba python_status antes 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_namespace al empezar algo nuevo.

  • run_python ejecuta 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 tests

Cubren 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.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides 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.
    23
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    A 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.
    12
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for secure, session-based Python code execution in Docker containers, enabling LLM applications to run code, manage state, and access files.
    9
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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