batch-runner
Provides read-only SQL query capabilities against any SQLite database file through the omega_sqlite tool, enabling inspection and retrieval of data from SQLite databases.
Click on "Deploy 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., "@batch-runnerrun npm run build then node dist/cli.js --version, expect 'compiled successfully' and version"
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.
batch-runner-mcp
Run several bash steps in one MCP call, and know whether each one actually did what you wanted.
A zero exit code only proves a command ran. With omega_batch, every step can carry an expect assertion (contains / notContains / regex). Each step is reported as ok, FAIL (process) or FAIL (expectation), with exit code, signal, timeout and stderr kept separate. Steps skipped after a failure are listed as (halted) instead of silently disappearing.
Zero npm dependencies. Node >= 20. Works with any MCP host that speaks stdio (Claude Code, opencode, Claude Desktop, ...).
Install
Claude Code:
claude mcp add batch-runner -- npx -y github:Birdywen/batch-runner-mcpGeneric JSON config (mcpServers):
{ "batch-runner": { "command": "npx", "args": ["-y", "github:Birdywen/batch-runner-mcp"] } }opencode (opencode.json, mcp section):
{ "batch-runner": { "type": "local", "command": ["npx", "-y", "github:Birdywen/batch-runner-mcp"] } }Then call omega_health once. The first line is the verdict (HEALTHY / DEGRADED); optional parts that are missing show as [--].
Related MCP server: Bash MCP Server
Example
{ "steps": [
{ "label": "build", "command_line": "npm run build", "expect": { "contains": ["compiled successfully"] } },
{ "label": "smoke", "command_line": "node dist/cli.js --version", "env": { "NO_COLOR": "1" }, "expect": { "regex": "^\\d+\\.\\d+" } }
], "stopOnError": true }omega_batch waits for the verdict (up to waitMs, default 45s) and answers in the same call. Success is one line:
batch job-xxxx: success 2/2 (3.1s): build | smokeA failure shows the exit code and the tail of the output, where errors are:
batch job-xxxx: failed 1/2 (0.4s)
[FAIL] 1. build (process)
exit=2
src/a.ts(3,7): error TS2322: Type 'string' is not assignable to type 'number'.
[--] 2. (halted) -- stopOnErrorexpectis checked against the full output. Output over 4000 chars goes to anartifact://ref.Still running after
waitMs: the reply has the job id;omega_batch_status {id, waitMs}picks it up.cancel: truekills the running step's process group.Job state is on disk after every step; after a restart an unfinished job reads as
interrupted.format: "json"gives structured per-step fields;verbose: trueadds output.
Tools
Nine tools, about 1.8k tokens of schema in total.
Tool | What it does |
| Bash steps with expect checks; verdict in one call |
| Wait for / cancel a batch that outlived |
| Many files in one call: slices, regex-filtered lines, outlines |
| path:line search (rg, |
| Multi-file exact-string edits, all-or-nothing; short summary + undo id; |
| Atomic file write without shell quoting |
| Read-only SQL on any sqlite file |
| Long output: regex lines with context, a slice, or the last 80 lines |
| Self-check |
omega_flow (multi-step tool composition, see OMEGA-FLOW.md) is off by default; set OMEGA_FLOW=1 to advertise it.
Configuration
Everything works with defaults. Common overrides:
Variable | Default / meaning |
|
|
|
|
|
|
|
|
| 20000 — output kept inline before spilling to an artifact |
| 120000 ms per step |
| default working directory (home if unset) |
| advertise omega_flow (limits: see |
|
|
Batch shells get /opt/homebrew/bin and /usr/local/bin prepended to PATH; a per-step env.PATH still wins.
Development
npm testThe MCP server loads code once at startup: restart the host after changing it.
omega_grep keeps rg and the grep fallback in step: the fallback uses ERE (so a|b works) and passes exactly one matcher flag (GNU grep rejects -E -F). OMEGA_GREP_TRACE=1 dumps the argv so the suite can assert on it.
This server cannot be deployed
Maintenance
Related MCP Connectors
Remote MCP for Gemini upgrade evals, prompt regressions, output diffs, and eval receipts.
Remote MCP for Android CLI agent build gate, structured receipts, audit logs, and reviewer-ready evi
Read and write Mission Control state via MCP — projects, tasks, subtasks, templates, status updates.
Authenticated async Opus 5.5 agent with status polling and artifact results.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables execution of bash commands with support for timeouts and background jobs, allowing file operations, build commands, system inspection, and long-running tasks.232 npm9MIT
- AlicenseAqualityCmaintenanceAn MCP server that enables the execution of arbitrary bash commands and returns detailed output including stdout, stderr, and exit codes. It supports customizable working directories, execution timeouts, and environment variable configurations.1MIT
- AlicenseAqualityCmaintenanceEnables execution of bash commands via MCP, allowing clients to run shell commands and set a working directory.237MIT
- AlicenseNot gradedqualityDmaintenanceEnables running shell commands on the local machine via MCP, using bash.MIT