cesm-runner-mcp
Provides tools for managing container sessions using the Podman runtime, enabling CESM to run interactively inside containers on a laptop.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cesm-runner-mcpcheck status of case ~/croc_cases/mycase"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
cesm-runner-mcp
MCP server for driving CESM case lifecycle: setup → build → submit → monitor.
Complements the CrocoDash MCP, which handles grid creation and forcing. This server picks up where that one leaves off — once a case directory exists, this server drives the CIME build/run pipeline.
Tools
Case inspection
Tool | Purpose |
| Find all CESM cases under a directory |
| Read CaseStatus log + key XML config |
| Verify all required input files are staged |
Case lifecycle
All three accept an optional container=<session_name> arg to run inside a crocontainer session instead of on the host.
Tool | Purpose |
| Run |
| Compile the model ( |
| Submit to PBS/slurm or run interactively |
XML config
Tool | Purpose |
| Query any CESM XML variable |
| Set a CESM XML variable |
| Show PE layout and batch script without submitting |
Monitoring
Tool | Purpose |
| Read recent run log output |
| Check PBS/slurm queue for this case's job |
| List available compsets in a CESM install |
Container management (crocontainer fast-iteration path)
Tool | Purpose |
| One-time: build Apptainer sandbox from registry image (~1hr on Derecho) |
| Start a persistent container session |
| Run any command inside a running session |
| Stop and clean up the session |
| Show running sessions |
Related MCP server: tibet-triage-mcp
Resources
URI | Content |
| All XML config variables |
| CaseStatus log |
| List of run log files |
Setup
pip install -e .
# or in the CrocoDash conda env:
conda run -n CrocoDash pip install -e .Running
cesm-runner-mcp
# or
python server.pyWire up to Claude Code by adding to .mcp.json:
{
"mcpServers": {
"cesm-runner": {
"command": "python",
"args": ["/path/to/MCP_cesm_runner/server.py"]
}
}
}Fast iteration with crocontainer
Instead of waiting in the PBS queue, run CESM interactively inside a container. On Derecho, the full GLADE filesystem is mounted transparently so all host paths work inside.
One-time setup (Derecho)
# Build the writable sandbox (~1 hr on a compute node)
# Or call build_sandbox() via the MCP
qcmd -l walltime=03:00:00 -- apptainer build --sandbox \
/glade/derecho/scratch/$USER/crocontainer_sandbox \
docker://ghcr.io/crocodile-cesm/crocontainer:latest-amd64Typical MCP session
start_container(scratch_dir="~/scratch/croc_scratch")
→ Apptainer instance starts; /glade mounted; inputdata at /glade/campaign/cesm/cesmdata/inputdata
case_setup("~/croc_cases/mycase", container="croc_session")
case_build("~/croc_cases/mycase", container="croc_session")
→ compiles interactively, no queue
xmlchange("~/croc_cases/mycase", "STOP_N", "3")
case_submit("~/croc_cases/mycase", no_batch=True, container="croc_session")
→ runs synchronously; returns output in seconds
# Debugger MCP finds an error → fix → resubmit in the same conversation:
xmlchange("~/croc_cases/mycase", "DT", "900")
case_submit("~/croc_cases/mycase", no_batch=True, container="croc_session")
stop_container("croc_session")Inputdata on Derecho
CESM inputdata is mounted directly from GLADE — no downloading required:
/glade/campaign/cesm/cesmdata/inputdata → /root/cesm/inputdata inside container
On a laptop (Podman)
start_container(
scratch_dir="./scratch",
sandbox_or_image="ghcr.io/crocodile-cesm/crocontainer:latest",
inputdata_dir="./cesm_nyf_inputdata", # pre-downloaded NYF data
runtime="podman"
)Design
Stateless: each tool reads from the filesystem; no in-memory state
Shells out to CIME scripts: uses
./xmlquery,./case.setup, etc. directly — version-safe and matches what users run manuallyWorks with any CESM install: not specific to CrocoDash or MOM6
Container-aware: lifecycle tools accept
container=to route viaapptainer exec instance://orpodman execinstead of running on the host
CESM install on Derecho
Default reference install: ~/work/installs/cesm3_maddd_new
Cases live in: ~/croc_cases/
CESM inputdata: /glade/campaign/cesm/cesmdata/inputdata
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/CROCODILE-CESM/MCP_cesm_runner'
If you have feedback or need assistance with the MCP directory API, please join our Discord server