Moo Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Moo Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCP server for LambdaMOO administration. Connects to a MOO's admin/wizard port over TCP, keeps the connection warm, and exposes structured tools for the operations you actually do when hacking on a MOO: eval expressions, list/program verbs (with auto read-back verification), add/remove properties, walk the inheritance chain.
Use with Claude Code or any other MCP-compatible client.
The usual MOO admin loop is "telnet in, run a command, read the response, repeat" - slow and lossy when scripted, and @program famously prints "0 errors" even when the verb body didn't actually get stored as you expected. moo-mcp wraps that loop in a persistent process with proper request/response semantics and adds an automatic read-back verify on every verb program so silent corruption is impossible.
Alpha. Tested against LambdaMOO 1.8.3-Mongoose. Should work against any MOO whose admin port speaks the standard ;eval, @list, @program ... . protocol.
pip install moo-mcpOr from source:
git clone https://github.com/<org>/moo-mcp
cd moo-mcp
pip install -e .moo-mcp is config-free out of the box - you must provide connection details via environment variables. There are no defaults pointing at any particular MOO.
| Env var | Required | Description |
|---|---|---|
MOO_HOST | yes | Hostname or IP of the MOO admin port |
MOO_PORT | yes | TCP port (e.g. 7777, 3500) |
MOO_USER | yes | Wizard character name |
MOO_PASS | yes | Wizard password |
MOO_TIMEOUT | no | Seconds to wait for a response (default 15) |
MOO_RECONNECT | no | true/false, auto-reconnect on drop (default true) |
MOO_TLS | no | true/false, wrap the connection in TLS (default false). Use this when the MOO is fronted by stunnel or otherwise serves the admin port over TLS. |
MOO_TLS_INSECURE | no | true/false, skip TLS certificate validation (default false). Only enable for self-signed certs on a MOO you control. |
Add to ~/.claude.json:
{
"mcpServers": {
"moo": {
"command": "python",
"args": ["-m", "moo_mcp"],
"env": {
"MOO_HOST": "your.moo.example.com",
"MOO_PORT": "7777",
"MOO_USER": "Wizard",
"MOO_PASS": "supersecret"
}
}
}
}Or run directly:
MOO_HOST=... MOO_PORT=... MOO_USER=... MOO_PASS=... python -m moo_mcp| Tool | Description |
|---|---|
eval | Evaluate a MOO expression; returns parsed value or structured error |
list_verb | Read a verb body; returns header + numbered lines |
program_verb | Replace a verb body; auto-verifies by re-listing and diffing |
add_verb / remove_verb / chmod_verb | Verb lifecycle |
add_property / remove_property / set_property | Property lifecycle |
has_verb / has_property | Check existence (returns the defining-object list) |
verbs / properties | List local verbs/properties on an object |
parent / chparent | Read or change an object's parent |
All tools return JSON results. MOO errors (E_PROPNF, traceback) become structured {error: {message, traceback}} objects rather than raw text.
moo-mcp is a wizard-privileged admin tool, equivalent in capability to a logged-in human wizard at the MOO admin port. Anyone who can call its tools can do anything a wizard can. Run it in a trust boundary that matches.
Specific notes:
telnet session would. If your MOO is not on the same host as the MCP and not already TLS-wrapped, either: (a) set MOO_TLS=true if your MOO is fronted by stunnel or otherwise serves the admin port over TLS, or (b) run the MCP through an SSH tunnel to the MOO host.@program block and let the rest land in the command parser). If you need a literal . line in MOO code, indent it.dobj / iobj must be this/any/none, prep is allowlist-character-checked) to prevent breaking out of the MOO double-quoted literal during eval splice.re has no built-in timeout. Trust the caller, or pre-validate patterns if you're exposing this to untrusted input.MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.