MCP server workspace for Dynatrace observability analytics, providing tools for extracting DQL queries from dashboards/notebooks, running Davis analyzers, and iOS SDK setup automation
Mixed quality across 5 tools. Three analytics tools (extract-timeseries-dashboard, extract-timeseries-notebook, run-analyzer) have detailed descriptions (150-300 chars) and comprehensive input schemas with type definitions and parameter descriptions. Two iOS setup tools (add_spm_dependency, verify-setup) have good descriptions but lack visible input schema definitions in the provided source. All tools have action-verb names. Critical gaps: no output schemas documented, no error handling guidance, no parameter enums for constrained inputs (e.g., analyzerName, scoreField), and no idempotency hints despite some tools being write operations.
Adds an SPM (Swift Package Manager) dependency to a target in an Xcode project. Uses xcodeproj gem to handle UUIDs, project.pbxproj structure, and target linkage correctly. Idempotent: re-running with same arguments is a no-op.
Extracts every DQL query from a Dynatrace dashboard and returns a compact TimeseriesDQLQuerySet[]. Pulls timeseries queries from dashboard tiles with optional title filtering and compact output modes.
Extracts DQL queries from Dynatrace notebooks. Handles both modern (sections[].content.input.value) and older (cells[].state.input.value) cell schemas, filtering for timeseries queries with optional title matching.
Generic Davis analyzer runner for a TimeseriesDQLQuerySet. Wraps execute → poll → concurrent pattern for Davis analyzer calls. Supports correlation mode, variable substitution, score filtering, and chaining analyzer results.
Verifies Dynatrace iOS SDK setup end-to-end. Runs checks serially: resolves build output, checks framework linked, verifies Dynatrace.plist bundled with correct values, boots simulator, installs/launches app, and polls logs for 'Dynatrace Core' startup message.
Two write-operation tools (add_spm_dependency, verify-setup) lack visible input schemas in source code. Cannot verify parameter types, required fields, or constraints.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., what fields does run-analyzer return? What structure for skipped[] array?).
run-analyzer accepts free-form analyzerName string with no enum constraint. LLMs will hallucinate invalid analyzer names (e.g., 'dt.statistics.InvalidAnalyzer'). Should enumerate valid analyzers or provide discovery tool.
No error handling guidance. Tools return errors but do not tell LLM what to do next (retry? ask user? call different tool?). E.g., if document lookup fails, should agent search by name?
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | 2026-07-28+ | v2 |
add_spm_dependency and verify-setup are write operations but lack idempotency hints or confirmation patterns. Agents may retry and cause duplicate side effects (e.g., add dependency twice).