MCP server for controlling OpenSimulator via console commands
Three tools with minimal structure. All have descriptions (10-50 chars baseline), but lack critical schema detail. Input schemas present but parameters lack type constraints and validation guidance. No output schemas documented. No error handling guidance. Tool names are generic action verbs ('get', 'set', 'run') that do not clearly distinguish responsibilities, LLMs will struggle to pick the right tool. Parameters accept free-form strings with no enums, ranges, or format constraints, inviting hallucinated commands. No security controls visible (credentials in env vars is good, but no rate limiting, input sanitization, or permission gates). Composition is poor: three tools do overlapping things (all send commands), violating single-responsibility principle.
Run a read-only/info/show style command. Examples: - show version - show uptime - show regions - show users full - monitor report
Run any raw OpenSimulator console command. Use this for commands not covered by get/set categorization.
Run a mutating/management command (set/change/restart/save/etc.). Examples: - set log level debug - change region MyRegion - region restart notice "Restarting" 60 - save oar region.oar - terrain load myterrain.r32
Generic tool names ('get', 'set', 'run') do not convey action or distinguish responsibilities. LLMs cannot infer when to use 'get' vs 'set' vs 'run' without reading full descriptions. Violates verb_noun naming convention.
Parameters 'command' and 'args' accept free-form strings with no validation, enums, ranges, or format constraints. No guidance on valid command syntax, required arguments, or error recovery. Invites hallucinated or malformed commands.
No output schema documented. LLMs cannot predict response structure, making downstream tool chaining and data extraction error-prone. Responses are raw text from OpenSimulator console, unstructured and token-wasteful.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 34 | 2026-07-28+ | v2 |
No error handling guidance. Tool descriptions do not explain what errors are possible, how to recover, or what to do next. A failed command returns raw exception text with no actionable recovery path for the LLM.
Three tools overlap in responsibility (all send commands to OpenSimulator). 'get' and 'set' are semantic hints, but 'run' duplicates both. No clear composition strategy. Violates single-responsibility principle.