MCP server for MagicDraw model manipulation, providing tools for reading, searching, validating, and executing MSQL programs against SysML/UML models
AutoBot demonstrates strong naming conventions (verb_noun pattern: get_, model_, diagram_, project_) and comprehensive descriptions (avg 180+ chars, well above baseline 194). Tool schemas are present with proper JSON Schema structure. However, parameter descriptions are inconsistent, some tools like model_read and model_search have rich, LLM-optimized descriptions explaining WHEN to use them and dependencies, while others (get_current_project, project_save) lack parameter-level detail. Error handling guidance is minimal across all tools. Output schemas are documented in descriptions but not formally specified. No evidence of enum constraints for multi-valued parameters (e.g., diagram layout operations, model_read 'kind' parameter). Security posture is unclear, no visible permission gates or audit logging despite destructive operations (model_execute, project_save).
Arrange or edit existing diagram symbols. grid, magicdraw, align, distribute, and sequence operate on layout roots. magicdraw is rejected on matrix, table, and swimlane diagrams. edit targets exactly one presentation and supports Shape geometry, Port side/offset, Path bend points with locked endpoints, and showName. After layout, diagram_read Paths and confirm modelFromId/modelToId. Each call is one Undo. No model elements are created or changed.
List diagrams when diagramId is omitted; scopeElementId restricts diagram ownership to a model subtree. A specified diagram outside that scope is rejected for reading or rendering. Otherwise page through symbols with identity, bounds, nesting and path direction. semanticOnly removes non-model decoration and repeated nested presentations; modelBackedOnly, maxDepth, and presentationRoles filter before paging. includeAnalysis analyzes the filtered symbols. endpointIds is an unordered API pair; use modelFromId/modelToId and fromPresentationId/toPresentationId for ordered endpoints. Connector Paths include fromPartId/toPartId to distinguish reused Ports; endpointOrder=nativeConnectorEnds may differ from submitted from/to and is not physical flow direction and ambiguous self-connections may have null presentation IDs.
Render an existing diagram as a PNG image for visual inspection. Optionally include SVG text (UTF-8). SVG larger than 12 MB is omitted (svgOmitted) without failing the PNG. Do not treat PNG Chinese glyphs as the model name; inspect names from model_read or diagram_read. No layout or editing is performed.
Discovers factory/create capabilities (catalog=metaclasses), stereotype inheritance and tags (sysml), or field-level MSQL operations (features). Required: requestId, projectId, catalog. For features also supply metaclass; query optionally filters field names. Example: {"requestId":"f1","projectId":"<projectId>","catalog":"features","metaclass":"Property","query":"defaultValue"}. Field coverage is partial; consult supportedMetaclasses for structural, relationship and activity coverage. Missing fields do not prove lack of support. Results describe read/create/set/unset/add/remove operations, value kind, readback paths, examples, and limitations. Metaclasses/sysml also return diagramKinds; features omits that unrelated list.
Destructive operations (model_execute, project_save) lack confirmation/dry-run pattern. No evidence of permission gates or audit logging despite irreversible side effects.
Parameter descriptions missing or minimal for several tools. get_current_project has empty input schema with no parameter docs. diagram_layout operations (grid, magicdraw, align, distribute, sequence) lack enum constraints and per-operation parameter documentation.
Output schemas not formally documented. Descriptions mention return structure (e.g., 'returns compact results', 'returns symbols with identity, bounds, nesting') but no JSON Schema definitions visible for response validation or LLM planning.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 45 | 2025-06-18+ | v2 |
Returns the active MagicDraw project and its primary model IDs and names.
Revalidates and executes one MSQL 0.3 program in the active MagicDraw project. Aliases are request-local: save elementIdsByAlias after commit and use id('persistent-id') in later programs. Create aliases identify model elements; draw aliases identify presentations. The main command graph is one transaction and one Undo record; a failure before that commit rolls it back. MagicDraw commit-dependent work, currently explicit AutoNumber overrides and Message-created ExecutionSpecification reconciliation, adds a separately labeled finalization Undo record.
Reads the active MagicDraw model without modifying it. Use kind=outline only when containment hierarchy is needed. When IDs are unknown, prefer model_search; then use kind=inspect for precise fields, stereotypes, direct children, incident relationships, and requested documentation/tags/features for up to 1000 IDs paged at 50 per response.
Find existing MagicDraw model elements when IDs are unknown. Fields are text, scopeElementId, and resultFormat (not query, scope, or format). Filter by name, qualified name, UML metaclass (including Association), SysML stereotype qualified name, and owner scope. SysML short names such as Block or Requirement are not metaclasses. Page with offset/limit and nextOffset (max page 50, max 1000 matches). Zero hits for non-ASCII text is not proof the name is absent. Results are compact; use model_read kind=inspect only for selected IDs that need detailed facts.
Parses, resolves, checks, and plans an MSQL 0.3 program against the active MagicDraw project without modifying it. Use it to diagnose or preview an uncertain program; model_execute performs the same validation again, so a separate validation call is optional.
Explicitly saves the active local project to its existing file. No Save As or remote project support. Rejects active editing sessions. Inspect dirty after saving; this operation persists changes and is not an Undo action.
Error handling lacks recovery guidance. No evidence of categorized errors (retryable vs user-fixable vs fatal) or actionable error messages. LLMs cannot determine next steps on failure.
Pagination support unclear. model_search mentions 'offset/limit' and 'max page 50' but no formal pagination schema (nextOffset, hasMore, totalCount) documented. diagram_read pagination parameters not explicitly listed.