casino-mcp
casino-mcp
Un plano de control MCP sobre el código Fortran CASINO de
Monte Carlo cuántico: iniciar ejecuciones, saber qué está en marcha, detenerlas y leer un
archivo out como datos estructurados en lugar de enviar 4000 líneas de texto al contexto
de un modelo.
Alfa (0.1.0). Las cuatro herramientas de control y el analizador de
outestán terminados y probados; la herramienta que devuelve la física al modelo aún no se ha publicado. Las interfaces pueden cambiar todavía.
Qué es y qué no es
CASINO ya tiene los primitivos — opt_plan, runqmc --auto-continue, multirun,
envmc, make_E_v_dt. Lo que no tiene es la capa intermedia: resultados legibles por
máquina, una memoria de lo que se ejecutó y los juicios que se sitúan entre los pasos
("¿ha alcanzado la varianza una meseta?", "¿sigue este paso de tiempo en el régimen
lineal?"). Esa capa es lo que este paquete es, y tres reglas lo mantienen honesto:
Ningún número lo produce el modelo. Cada valor que devuelve una herramienta se lee de un archivo y lleva la línea de la que proviene. Lo que CASINO no imprimió se devuelve como
nullcon un motivo, nunca una suposición.Cada resultado es reproducible a partir de su registro. Un registro de trabajo congela el comando, el número de procesos y la ruta, tamaño y mtime del binario
casinoque se ejecutó.Nada destructivo es implícito. Una ejecución se niega a comenzar en un directorio que ya contiene resultados, y se niega con más firmeza cuando ese
outes datos de referencia confirmados.
Deliberadamente no hay una herramienta execute_shell(command). Cada herramienta es una
operación CASINO con nombre y argumentos tipados.
Related MCP server: fdmnes-mcp
Instalación
pip install casino-mcp # needs Python 3.11+ and a working CASINO installationDesde un checkout:
pip install -e '.[dev]'El paquete no incluye, compila ni reemplaza CASINO. Controla runqmc, que sigue siendo el
entorno de ejecución: la detección de arquitectura, las variantes MPI, el envío a colas de
lotes y el archivo de bloqueo son su trabajo, no el nuestro.
Regístralo con Claude Code
.mcp.json, ámbito de proyecto:
{
"mcpServers": {
"casino": {
"command": "casino-mcp",
"args": ["serve"],
"env": {
"CASINO_HOME": "/home/you/bin/CASINO",
"CASINO_ARCH": "linuxpc-gcc-parallel.openblas"
}
}
}
}Herramientas
herramienta | devuelve |
| job_id, pid, workdir, command, binary stamp |
| running / finished / failed / stopped / unknown, pid, runtime, exit code |
| lo que se señalizó, estado final |
| todos los trabajos conocidos, los más recientes primero |
El tipo de ejecución (vmc, vmc_opt, vmc_dmc, …) proviene del archivo input en
workdir; no hay una herramienta por tipo de ejecución, porque eso multiplica la superficie
sin añadir una capacidad.
Línea de comandos
El mismo entorno de ejecución sin un modelo en el bucle — que también es como se depura el servidor:
casino-mcp config # the resolved configuration, and the files it came from
casino-mcp run ./calc -p 4 # start a calculation
casino-mcp status 20260823-164511-qobn
casino-mcp stop 20260823-164511-qobn
casino-mcp jobs # the registry, newest first
casino-mcp parse ./calc # the `out` file as JSON
casino-mcp serve # the MCP server on stdioCada subcomando imprime JSON y sale con código distinto de cero cuando ese JSON contiene un
error.
Configuración
No hay archivo de configuración. Un servidor MCP se configura donde se registra — el bloque
env del .mcp.json anterior — y las variables propias de CASINO conservan sus nombres, de
modo que configurarlas una vez configura ambas capas:
variable | |
| raíz de la instalación de CASINO (por defecto |
| objetivo de compilación, el directorio bajo |
| ruta explícita a |
| el registro de trabajos; de lo contrario, |
| directorios que ninguna ejecución puede tocar jamás, separados por |
Todo lo demás — un proceso MPI, el binario opt, veinte segundos entre SIGTERM y SIGKILL,
doscientos registros de trabajo conservados — es una constante en settings.py.
casino-mcp config imprime lo que el servidor usaría ahora mismo y qué variable lo dijo;
ejecútalo primero cuando una llamada a una herramienta se niegue.
CASINO_MCP_FORBID es la única protección sin anulación por llamada. overwrite=true y
unlock=true desbloquean las otras dos; un directorio listado aquí no se puede ejecutar en
absoluto, lo que lo convierte en el lugar adecuado para un árbol de cálculos de referencia
confirmados.
Cómo funciona
Claude Code ──stdio──> server.py ──spawn──> launcher.py ──> runqmc ──> mpirun ──> casino
│ │
│ └─ writes status.json (exit code, end time)
└─ reads/writes jobs.json + one directory per jobEl estado vive fuera del cálculo, bajo $XDG_STATE_HOME/casino-mcp/:
jobs.json index: job_id -> record
jobs/<job_id>/meta.json what was launched, frozen at spawn
jobs/<job_id>/status.json written by the launcher when the run ends
jobs/<job_id>/runqmc.log runqmc's own output (not CASINO's `out`)El directorio de cálculo solo recibe lo que CASINO pone allí.
Por qué un proceso lanzador. runqmc es un script bash que ejecuta mpirun -np N casino;
señalizar su pid huérfana el árbol. El lanzador se ejecuta en su propia sesión, de modo que
killpg alcanza todo, su código de salida sobrevive a un reinicio del servidor MCP, y la
salida de runqmc va a un registro en lugar de al flujo JSON-RPC. Un pid reciclado no puede
pasar por un trabajo vivo: se compara el tiempo de inicio de /proc/<pid>, y un zombi no
cuenta como en ejecución.
El analizador de out
parse_out es una función simple sin MCP y sin dependencias. Un archivo out es una
secuencia de fases, no un solo resultado — vmc_opt escribe una fase VMC y una de
OPTIMIZACIÓN por ciclo, vmc_dmc escribe VMC, equilibración DMC y acumulación de
estadísticas DMC — por lo que devuelve phases, y result apunta a la última fase que
lleva una energía.
from casino_mcp.parse_out import parse_out
parsed = parse_out('./calc')
parsed['result']['energy'] # {'value': -2.861829862553, 'error': 0.000659077167, 'line': 237}El único número derivado en él es el error de varianza muestral de una ejecución de un solo
bloque, que CASINO no imprime; se toma del único bloque exactamente como hace envmc, y se
etiqueta como derived. Nada invoca envmc o endmc en tiempo de ejecución — endmc
interpreta mal los números bajo una configuración regional no C.
Pruebas
pytest # 102 tests, ~2 s, no CASINO neededLa suite de pruebas unitarias se ejecuta en cualquier lugar: el analizador se comprueba
contra cinco archivos out reales confirmados en tests/data/, y el lanzador, el grupo de
procesos y las protecciones se ejercitan contra un script runqmc falso.
pytest -m integration --examples-dir ~/PycharmProjects/PyCasino/examplesLa suite de integración necesita un CASINO real. Comprueba parse_out contra el propio
envmc de CASINO sobre un árbol de ejemplos completo (526 archivos, ~50 s), y controla el
servidor a través de MCP stdio real, ejecutando y deteniendo cálculos VMC reales.
tools/protocol_dump.py habla JSON-RPC a mano sin SDK e imprime cada línea en ambas
direcciones. Léelo antes de añadir una herramienta.
Licencia
MIT.
This server cannot be installed
Maintenance
Related MCP Servers
- AlicenseAqualityBmaintenanceA unified CLI, web dashboard, and Python API for SLURM job management.1516Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables running FDMNES X-ray spectroscopy simulations via natural language, supporting input file creation, job execution, output analysis, and keyword lookup through MCP-aware clients.BSD 3-Clause
- AlicenseNot gradedqualityDmaintenanceProvides agentic MCP tools for the Flux Framework, enabling job submission, management, and resource scheduling for HPC workloads.1MIT
- AlicenseNot gradedqualityCmaintenanceManages AutoDL GPU cloud instances, including lifecycle management, SSH operations, file transfer, and GPU monitoring.1MIT
Related MCP Connectors
Run ANUGA flood simulations, track progress, and retrieve results on Hydrata Cloud.
Massed Compute MCP — GPU inventory, VM lifecycle, billing, SSH keys, and setup recipes.
Project management MCP for AI agents with safe task reads and writes.
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/Konjkov/casino-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server