Skip to main content
Glama
unasuke
by unasuke

šŸ“‹ mcp-coderunner-app

An MCP server that takes a Dockerfile and a script, and runs the script in a resource-limited container. Built to try out Ractor behavior and run benchmarks without dirtying the machine I work on.

  • VPS (Rails) — authentication, authorization, the MCP endpoint, the review UI

  • Home VM (worker) — polls outbound-only and drives docker

Nothing listens on the home side. Job containers always run with --network none. Every Dockerfile is reviewed by a human before anything runs on it.

This is a personal setup, run by one person. The design lives in .claude/plans/ruby-exec-mcp-design.md, which is not in git.

app/                 Rails: models, controllers, MCP tools, /admin
lib/protocol/        DTOs and constants shared by Rails and the worker (stdlib only)
worker/              the side that drives docker (stdlib only; never loads Rails)
bin/worker           the long-running process on the VM
deploy/              systemd units and an example Caddyfile

Development

bin/setup            # install dependencies, db:prepare, start the dev server
bin/dev              # web + js + worker (the worker's token is issued on first run)
bin/ci               # lint, security, and the full test suite

# The worker does not load Rails. Run it with plain ruby.
ruby -Ilib -I. -e 'require "worker/runner"'
ruby -Ilib -I. worker/test/policy_test.rb

# The end-to-end test that actually drives docker (slow)
MCP_CODERUNNER_APP_E2E=1 ruby -Ilib -I. worker/test/e2e_test.rb

Point an MCP client at http://localhost:3000/mcp over Streamable HTTP. Issue the access token from /admin after signing in — in development, /login also offers a door that skips GitHub (dev lands as an admin).

Related MCP server: Node.js Sandbox MCP Server

Operating it

License

MIT License (LICENSE)

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables running arbitrary JavaScript code in isolated Docker containers with on-the-fly npm dependency installation, supporting both ephemeral one-shot executions and persistent sandbox environments.
    91
    157
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Execute scientific scripts (R, Python, GMT, LaTeX, Octave, Julia, etc.) in isolated, disposable containers with no host filesystem access.
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides Docker container creation and image pulling via the Docker Engine API, with safety guardrails against privileged operations and network exposure.
    MIT