If you're running data pipelines and need to know when things break before your users do, this wraps AnomalyArmor's observability platform into 52 MCP tools. You get alerts, freshness checks, schema drift detection, and data quality metrics directly in Claude. The tools are grouped by domain: manage alert rules and destinations, set up freshness schedules, create validity rules and referential checks, explore lineage, and ask natural language questions about your data. It surfaces a daily briefing with unresolved alerts and coverage gaps. Requires an AnomalyArmor account and API key. Useful when you want AI assistance debugging stale tables, analyzing schema changes, or configuring monitoring without leaving your editor.
Public tool metadata for what this MCP can expose to an agent.
get_alerts_summaryGet alert overview with counts by status and severity. Quick snapshot of triggered, acknowledged, and resolved alerts. For individual alerts use list_alerts.Get alert overview with counts by status and severity. Quick snapshot of triggered, acknowledged, and resolved alerts. For individual alerts use list_alerts.
No parameter schema in public metadata yet.
list_alertsList recent alerts with severity, status, and asset info. Use update_alert to acknowledge, resolve, dismiss, or snooze alerts.6 paramsList recent alerts with severity, status, and asset info. Use update_alert to acknowledge, resolve, dismiss, or snooze alerts.
limitintegerstatusvalueto_datevalueasset_idvalueseverityvaluefrom_datevaluelist_inbox_alertsList unresolved alerts in inbox view (triggered + acknowledged only). Focused view for triaging active alerts. Use update_alert to take action.3 paramsList unresolved alerts in inbox view (triggered + acknowledged only). Focused view for triaging active alerts. Use update_alert to take action.
limitintegerasset_idvalueseverityvalueupdate_alertUpdate an alert's lifecycle status. Use list_alerts to find alert IDs.6 paramsUpdate an alert's lifecycle status. Use list_alerts to find alert IDs.
notesvaluestatusstringalert_idstringduration_hoursintegeraction_categoryvalueroot_cause_categoryvaluelist_alert_rulesList configured alert rules showing which events and severities each rule monitors. Use create_alert_rule to add new rules, list_destinations to find destination IDs for routing.2 paramsList configured alert rules showing which events and severities each rule monitors. Use create_alert_rule to add new rules, list_destinations to find destination IDs for routing.
asset_idvalueactive_onlybooleancreate_alert_ruleCreate an alert rule to notify when data issues are detected. Routes to specified destinations (or default email). Use list_destinations to find destination IDs, list_assets for asset IDs.6 paramsCreate an alert rule to notify when data issues are detected. Routes to specified destinations (or default email). Use list_destinations to find destination IDs, list_assets for asset IDs.
namestringasset_idsvalueseveritiesvaluedescriptionvalueevent_typesvaluedestination_idsvaluemanage_alert_ruleManage an existing alert rule: get details, update, or delete. Use list_alert_rules to find rule IDs.7 paramsManage an existing alert rule: get details, update, or delete. Use list_alert_rules to find rule IDs.
namevalueactionstringrule_idstringis_activevalueseveritiesvaluedescriptionvalueevent_typesvalueget_alert_trendsGet aggregate alert trend data across all assets. Shows alert volume and patterns over time for trend analysis.1 paramsGet aggregate alert trend data across all assets. Shows alert volume and patterns over time for trend analysis.
periodstringget_alert_historyGet status change history for a specific alert. Shows the full lifecycle: when it was triggered, acknowledged, resolved, etc., with notes and who made each change.1 paramsGet status change history for a specific alert. Shows the full lifecycle: when it was triggered, acknowledged, resolved, etc., with notes and who made each change.
alert_idstringget_api_key_infoView API key information (read-only). Cannot create or revoke keys.2 paramsView API key information (read-only). Cannot create or revoke keys.
viewstringkey_idvaluelist_assetsList all connected data assets (databases, warehouses). Returns asset IDs needed by most other tools. Start here to find asset UUIDs for use with check_freshness, list_metrics, explore, etc.2 paramsList all connected data assets (databases, warehouses). Returns asset IDs needed by most other tools. Start here to find asset UUIDs for use with check_freshness, list_metrics, explore, etc.
limitintegerasset_typevaluetrigger_asset_discoveryStart schema discovery for an asset. Discovers all schemas, tables, columns, and metadata. Runs as background job. Use job_status() to track progress, then explore() to browse results.1 paramsStart schema discovery for an asset. Discovers all schemas, tables, columns, and metadata. Runs as background job. Use job_status() to track progress, then explore() to browse results.
asset_idstringcreate_assetConnect a new data source to AnomalyArmor. After creating, use trigger_asset_discovery to discover tables and columns.4 paramsConnect a new data source to AnomalyArmor. After creating, use trigger_asset_discovery to discover tables and columns.
namestringdescriptionvaluesource_typestringconnection_configobjectmanage_assetGet asset details or test its connection.2 paramsGet asset details or test its connection.
actionstringasset_idstringget_lineageGet data lineage for an asset showing upstream sources and downstream consumers. Requires a dbt manifest to be uploaded via the UI or API.4 paramsGet data lineage for an asset showing upstream sources and downstream consumers. Requires a dbt manifest to be uploaded via the UI or API.
depthintegerasset_idstringlist_allbooleandirectionstringjob_statusCheck status of an async job (discovery, intelligence generation, etc.). Returns a user_status field with simplified status: "in_progress", "completed", "failed", or "cancelled". Internal states like "pending" and "claimed" are mapped to "in_progress" so consumers don't need t...1 paramsCheck status of an async job (discovery, intelligence generation, etc.). Returns a user_status field with simplified status: "in_progress", "completed", "failed", or "cancelled". Internal states like "pending" and "claimed" are mapped to "in_progress" so consumers don't need t...
job_idstringcancel_jobCancel a running or pending background job. Use this when a long-running operation (intelligence generation, asset discovery) needs to be stopped.1 paramsCancel a running or pending background job. Use this when a long-running operation (intelligence generation, asset discovery) needs to be stopped.
job_idstringcreate_tagCreate a new tag for labeling database objects. After creating, use apply_tags to attach it to tables or columns.3 paramsCreate a new tag for labeling database objects. After creating, use apply_tags to attach it to tables or columns.
namestringcolorvaluedescriptionvaluelist_tagsList tags applied to database objects within an asset. Use explore to find valid object paths.2 paramsList tags applied to database objects within an asset. Use explore to find valid object paths.
asset_idstringobject_pathvalueapply_tagsApply tags to database objects. Supports single or cross-asset bulk tagging. Use explore to find valid object paths before tagging.5 paramsApply tags to database objects. Supports single or cross-asset bulk tagging. Use explore to find valid object paths before tagging.
tagsvalueasset_idstringasset_idsvalueobject_pathvalueobject_typestringget_coverageGet monitoring coverage score and tier information. Shows how well your data assets are monitored with scores, tiers, and per-feature breakdowns.2 paramsGet monitoring coverage score and tier information. Shows how well your data assets are monitored with scores, tiers, and per-feature breakdowns.
scopestringasset_idvaluemanage_coverageAnalyze coverage gaps or apply monitoring recommendations in batch. Use get_coverage to see current scores first.5 paramsAnalyze coverage gaps or apply monitoring recommendations in batch. Use get_coverage to see current scores first.
limitintegertypesvalueactionstringasset_idstringtable_pathsvaluelist_destinationsList configured alert destinations (Slack, email, webhook). Returns ALL destinations by default, including disabled ones. Check the is_active field to see if a destination is enabled or disabled. Prefer re-enabling existing destinations over creating new ones. Returns destinat...2 paramsList configured alert destinations (Slack, email, webhook). Returns ALL destinations by default, including disabled ones. Check the is_active field to see if a destination is enabled or disabled. Prefer re-enabling existing destinations over creating new ones. Returns destinat...
active_onlybooleandestination_typevaluesetup_destinationCreate an alert destination with auto-discovery. For Slack: provide channel_name (auto-discovers OAuth connection). For webhook: provide webhook_url. For email: provide email address. After creating, use create_alert_rule to route alerts to the destination.5 paramsCreate an alert destination with auto-discovery. For Slack: provide channel_name (auto-discovers OAuth connection). For webhook: provide webhook_url. For email: provide email address. After creating, use create_alert_rule to route alerts to the destination.
namevalueemailvaluewebhook_urlvaluechannel_namevaluedestination_typestringmanage_destinationManage an existing alert destination: get details, update, delete, or test. Use list_destinations to find destination IDs.5 paramsManage an existing alert destination: get details, update, delete, or test. Use list_destinations to find destination IDs.
namevalueactionstringconfigvalueis_activevaluedestination_idstringmanage_rule_destinationsManage which destinations an alert rule routes to.4 paramsManage which destinations an alert rule routes to.
actionstringrule_idstringdestination_idvaluedestination_idsvalueget_freshness_summaryGet freshness monitoring summary with counts of fresh, stale, and unknown tables. For a quick overview use health_summary. For per-table details use check_freshness.Get freshness monitoring summary with counts of fresh, stale, and unknown tables. For a quick overview use health_summary. For per-table details use check_freshness.
No parameter schema in public metadata yet.
check_freshnessCheck freshness status for all monitored tables in an asset. Shows which tables are fresh, stale, or unknown. Use setup_freshness to add monitoring for new tables.2 paramsCheck freshness status for all monitored tables in an asset. Shows which tables are fresh, stale, or unknown. Use setup_freshness to add monitoring for new tables.
asset_idstringstale_onlybooleansetup_freshnessCreate freshness monitoring for one or more tables. Use explore to find table paths, recommend_freshness for suggested intervals.7 paramsCreate freshness monitoring for one or more tables. Use explore to find table paths, recommend_freshness for suggested intervals.
asset_idstringtable_pathvaluetable_pathsvaluecheck_intervalstringmonitoring_modestringfreshness_columnvalueexpected_interval_hoursvaluelist_freshness_schedulesList freshness monitoring schedules showing check intervals and status. Use setup_freshness to add new schedules.2 paramsList freshness monitoring schedules showing check intervals and status. Use setup_freshness to add new schedules.
limitintegerasset_idvaluemanage_freshness_scheduleUpdate or delete a freshness monitoring schedule. Use list_freshness_schedules to find schedule IDs.7 paramsUpdate or delete a freshness monitoring schedule. Use list_freshness_schedules to find schedule IDs.
actionstringis_activevalueschedule_idstringcheck_intervalvaluemonitoring_modevaluefreshness_columnvalueexpected_interval_hoursvaluehealth_summaryStart here for a quick overview of data health. Returns aggregated status across alerts, freshness, schema drift, metrics, and validity. For per-table details, use check_freshness or list_schema_changes.Start here for a quick overview of data health. Returns aggregated status across alerts, freshness, schema drift, metrics, and validity. For per-table details, use check_freshness or list_schema_changes.
No parameter schema in public metadata yet.
get_todays_briefingGet today's data health briefing with key events and recommendations. Provides a daily summary of alerts fired, freshness issues, schema changes, and suggested actions. Good starting point for a morning check-in.Get today's data health briefing with key events and recommendations. Provides a daily summary of alerts fired, freshness issues, schema changes, and suggested actions. Good starting point for a morning check-in.
No parameter schema in public metadata yet.
ask_questionAsk a natural language question about your data. Uses AI to analyze your schema, metadata, and monitoring data to answer.4 paramsAsk a natural language question about your data. Uses AI to analyze your schema, metadata, and monitoring data to answer.
asset_idvaluequestionstringinclude_schemabooleaninclude_lineagebooleangenerate_intelligenceGenerate AI analysis for an asset. Analyzes schema, data patterns, and metadata to generate insights. Results are cached. Runs as a background job with progress reporting.2 paramsGenerate AI analysis for an asset. Analyzes schema, data patterns, and metadata to generate insights. Results are cached. Runs as a background job with progress reporting.
asset_idstringforce_refreshbooleanget_metrics_summaryGet metrics monitoring summary for an asset. Shows total metrics, active count, anomaly count, and per-type breakdown.1 paramsGet metrics monitoring summary for an asset. Shows total metrics, active count, anomaly count, and per-type breakdown.
asset_idstringlist_metricsList data quality metrics configured for an asset. Shows metric type, table, column, and active status. Use create_metric to add new metrics.2 paramsList data quality metrics configured for an asset. Shows metric type, table, column, and active status. Use create_metric to add new metrics.
limitintegerasset_idstringcreate_metricCreate a data quality metric for a table. Use explore to find table paths and column names.4 paramsCreate a data quality metric for a table. Use explore to find table paths and column names.
asset_idstringtable_pathstringcolumn_namevaluemetric_typestringmanage_metricManage an existing metric: get details, update, delete, trigger capture, or view snapshots. Use list_metrics to find metric IDs.7 paramsManage an existing metric: get details, update, delete, trigger capture, or view snapshots. Use list_metrics to find metric IDs.
limitintegeractionstringasset_idstringis_activevaluemetric_idstringsensitivityvaluecapture_intervalvalueget_validity_summaryGet validity rules summary for an asset. Shows total rules, active count, failing count, and per-type breakdown.1 paramsGet validity rules summary for an asset. Shows total rules, active count, failing count, and per-type breakdown.
asset_idstringlist_validity_rulesList data validity rules configured for an asset. Shows rule type, table, column, and active status. Use create_validity_rule to add new rules.2 paramsList data validity rules configured for an asset. Shows rule type, table, column, and active status. Use create_validity_rule to add new rules.
limitintegerasset_idstringcreate_validity_ruleCreate a data validity rule for a specific column. Checks column values against defined constraints. Use explore to find table and column names.7 paramsCreate a data validity rule for a specific column. Checks column values against defined constraints. Use explore to find table and column names.
namevalueasset_idstringseveritystringrule_typestringtable_pathstringcolumn_namestringrule_configobjectmanage_validity_ruleManage an existing validity rule: get details, update, delete, check, or view results. Use list_validity_rules to find rule IDs.8 paramsManage an existing validity rule: get details, update, delete, check, or view results. Use list_validity_rules to find rule IDs.
namevaluelimitintegeractionstringrule_idstringasset_idstringseverityvalueis_activevaluerule_configvaluerecommendGet AI-driven monitoring recommendations for an asset. Analyzes historical patterns, schema, and alert data to suggest monitoring improvements.7 paramsGet AI-driven monitoring recommendations for an asset. Analyzes historical patterns, schema, and alert data to suggest monitoring improvements.
daysintegerlimitintegerasset_idstringtable_pathvaluemin_confidencenumberinclude_monitoredbooleanrecommendation_typestringcreate_referential_checkCreate a referential integrity check between two columns. Detects orphaned foreign key references. Use explore to find table and column names.7 paramsCreate a referential integrity check between two columns. Detects orphaned foreign key references. Use explore to find table and column names.
namevalueasset_idstringseveritystringsource_tablestringtarget_tablestringsource_columnstringtarget_columnstringmanage_referentialManage referential integrity checks: view, update, delete, execute, or get results. Use create_referential_check to create new checks.7 paramsManage referential integrity checks: view, update, delete, execute, or get results. Use create_referential_check to create new checks.
namevaluelimitintegeractionstringasset_idstringcheck_idvalueseverityvalueis_activevalueget_schema_summaryGet schema drift summary with total changes, unacknowledged count, and severity breakdown. For individual changes use list_schema_changes.Get schema drift summary with total changes, unacknowledged count, and severity breakdown. For individual changes use list_schema_changes.
No parameter schema in public metadata yet.
list_schema_changesList recent schema changes showing change type, severity, and acknowledgment status. For summary counts use get_schema_summary. To enable monitoring use enable_schema_monitoring.4 paramsList recent schema changes showing change type, severity, and acknowledgment status. For summary counts use get_schema_summary. To enable monitoring use enable_schema_monitoring.
limitintegerasset_idvalueseverityvalueunacknowledged_onlybooleancreate_schema_baselineCapture current schema as baseline for drift detection. Required before enable_schema_monitoring can detect changes.2 paramsCapture current schema as baseline for drift detection. Required before enable_schema_monitoring can detect changes.
asset_idstringdescriptionvalueenable_schema_monitoringEnable schema drift monitoring for an asset. Detects column additions, removals, type changes, and other schema modifications. Use list_schema_changes to view detected changes.3 paramsEnable schema drift monitoring for an asset. Detects column additions, removals, type changes, and other schema modifications. Use list_schema_changes to view detected changes.
asset_idstringschedule_typestringauto_create_baselinebooleandisable_schema_monitoringDisable schema drift monitoring for an asset. Keeps baseline for re-enabling.1 paramsDisable schema drift monitoring for an asset. Keeps baseline for re-enabling.
asset_idstringget_schema_monitoringGet schema monitoring configuration for an asset. Shows whether monitoring is enabled, schedule type, baseline info, and last check timestamp.1 paramsGet schema monitoring configuration for an asset. Shows whether monitoring is enabled, schedule type, baseline info, and last check timestamp.
asset_idstringdry_run_schemaPreview schema drift detection without persisting. Compares current schema against baseline to show what changes would be detected. Use this to test before enabling monitoring.2 paramsPreview schema drift detection without persisting. Compares current schema against baseline to show what changes would be detected. Use this to test before enabling monitoring.
asset_idstringschedule_typestringAI skills and MCP server for AnomalyArmor data observability. Monitor data quality, detect schema drift, and manage alerts directly from Claude Code, Cursor, or any MCP-compatible AI tool.
Version: 0.6.0 | Tools: 52 consolidated MCP tools | Skills: 14 slash commands
# Install the plugin
claude plugin marketplace add anomalyarmor/agents
claude plugin install armor@anomalyarmor
# Or via skills.sh
npx skills add anomalyarmor/agents
Then use skills like:
/armor:status - Check data health/armor:alerts - View and manage alerts/armor:recommend - Get AI monitoring recommendations/armor:ask - Ask questions about your dataAdd to your MCP configuration (Claude Code, Cursor, etc.):
{
"mcpServers": {
"armor": {
"command": "uvx",
"args": ["armor-mcp"]
}
}
}
ARMOR_API_KEY env var or create ~/.armor/config.yaml:api_key: aa_live_your_key_here
| Skill | Description | Example |
|---|---|---|
/armor:start | Guided onboarding for new users | "Help me get set up" |
/armor:status | Health summary across all assets | "Is my data healthy?" |
/armor:connect | Connect a new data source | "Connect my Snowflake warehouse" |
/armor:monitor | Set up freshness and schema monitoring | "Monitor freshness for orders table" |
/armor:alerts | Query and manage alerts | "What alerts fired yesterday?" |
/armor:ask | Natural language Q&A about your data | "What tables contain customer data?" |
/armor:analyze | Trigger AI analysis | "Analyze the finance schema" |
/armor:quality | Data quality metrics and validity rules | "Add null check for customer_id" |
/armor:coverage | Monitoring coverage analysis | "What tables have no monitoring?" |
/armor:recommend | AI-driven monitoring recommendations | "What should I monitor?" |
/armor:tags | Asset tagging and classification | "Tag this table as PII" |
/armor:investigate | Root cause analysis | "Why is this table stale?" |
/armor:lineage | Data lineage exploration | "What depends on this table?" |
/armor:profile | Table profiling and stats | "Profile the orders table" |
Tools follow a consolidated pattern: one tool per domain handles multiple operations via an action parameter, reducing context window usage while maintaining full functionality.
health_summary() - Overall data health across all assetsget_todays_briefing() - Daily AI briefing with alerts, freshness, and coverage gapsget_alerts_summary() - Alert counts by severity and statuslist_alerts(status, severity, asset_id, from_date, to_date) - Query alerts with filterslist_inbox_alerts(status, limit) - Unresolved alerts inboxupdate_alert(alert_id, action, ...) - Acknowledge, resolve, snooze, or comment on alertsget_alert_trends(period) - Alert trends over timeget_alert_history(alert_id) - Full history for a specific alertlist_alert_rules(asset_id, is_active) - List configured rulescreate_alert_rule(asset_id, rule_type, ...) - Create new alert rulemanage_alert_rule(rule_id, action, ...) - Update, delete, enable/disable, or duplicate ruleslist_assets(source, asset_type, search) - List monitored assetscreate_asset(name, source_type, connection_config) - Create data sourcemanage_asset(asset_id, action, ...) - Update, delete, test connection, or trigger discoverytrigger_asset_discovery(asset_id) - Start schema discoveryget_freshness_summary() - Freshness overview across all assetscheck_freshness(asset_id, table_path) - Check specific table freshnesssetup_freshness(asset_id, table_path, check_interval, ...) - Create freshness schedulelist_freshness_schedules(asset_id) - List configured schedulesmanage_freshness_schedule(schedule_id, action, ...) - Update, delete, pause/resume schedulesget_schema_summary() - Schema drift overviewlist_schema_changes(asset_id, severity, from_date, to_date) - List detected changescreate_schema_baseline(asset_id, description) - Create baselineenable_schema_monitoring(asset_id, schedule_type, notify_on) - Enable monitoringdisable_schema_monitoring(asset_id) - Disable monitoringget_schema_monitoring(asset_id) - View current monitoring configdry_run_schema(asset_id, schedule_type) - Test schema monitoring before enablingget_metrics_summary(asset_id) / list_metrics(asset_id) - View metricscreate_metric(asset_id, metric_type, table_path, ...) - Create row count, null rate, or custom metricmanage_metric(metric_id, action, ...) - Update, delete, capture, or view snapshotsget_validity_summary(asset_id) / list_validity_rules(asset_id) - View validity rulescreate_validity_rule(asset_id, rule_type, table_path, ...) - Create validity rulemanage_validity_rule(rule_id, action, ...) - Update, delete, check, or view resultscreate_referential_check(asset_id, ...) - Create cross-table referential checkmanage_referential(check_id, action, ...) - List, delete, run, or view resultslist_destinations(destination_type) - List alert destinations (Slack, email, webhook)setup_destination(destination_type, ...) - Create Slack channel, email, or webhook destinationmanage_destination(destination_id, action, ...) - Update, delete, test, enable/disablemanage_rule_destinations(rule_id, action, ...) - Link/unlink destinations to alert rulesget_coverage(asset_id) - Coverage tier and score for an assetmanage_coverage(asset_id, action) - Get next steps or apply recommended monitoringrecommend(asset_id, recommendation_type) - AI recommendations for freshness, metrics, coverage, or thresholdsask_question(asset, question) - Natural language Q&Agenerate_intelligence(asset) - Trigger AI knowledge base generationget_lineage(asset_id, depth, direction) - Data lineage graphjob_status(job_id) - Check async job statuscreate_tag(asset_id, name, object_path, ...) - Create and assign tagslist_tags(asset_id) / apply_tags(asset_id, ...) - List and apply tagsget_api_key_info() - View current API key details and permissionsUser: Is my data healthy?
Your data health status:
- Overall: WARNING
- 3 unresolved alerts (1 critical, 2 warning)
- 2 stale tables (orders, customers)
- 1 unacknowledged schema change
- Coverage: 65% (Tier 2: Protected)
User: What should I monitor on my Snowflake warehouse?
Based on your table patterns and update frequency:
1. orders (high traffic) - Add freshness check (hourly), row count metric
2. customers (PII) - Enable schema drift monitoring, add null checks
3. payments (financial) - Add freshness + row count + validity rules
Want me to set these up? I can configure all three in one go.
User: What happened overnight?
Your daily briefing:
- 2 new alerts: orders table stale (6h), schema change in users
- Coverage improved: finance schema now at Tier 3 (Verified)
- Recommendation: 4 tables still have no monitoring. Run /armor:recommend.
User: Why is the orders table stale?
Investigation results:
- Last update: 6 hours ago (expected: hourly)
- Upstream dependency: raw_orders was last updated 8 hours ago
- Likely cause: upstream ETL job failed or delayed
- Impact: 3 downstream dashboards affected
Error: No API key configured
Solution: Set ARMOR_API_KEY environment variable or create ~/.armor/config.yaml
Error: MCP server 'armor' not found
Solution:
uvx --versionSolution:
claude plugin listSee AGENTS.md for development guidelines.
MIT License - see LICENSE
ARMOR_API_KEY*secretAnomalyArmor API key (aa_live_*). Generate at https://app.anomalyarmor.ai/settings/api-keys.
io.github.mindstone/mcp-server-microsoft-teams
com.mintmcp/outlook-email
helbertparanhos/resend-email-mcp
marlinjai/email-mcp
io.github.mindstone/mcp-server-email-imap
io.github.osamahassouna/email-playbook-mcp