Agent skill
usage-report
Generate a usage report for MCP Gateway Registry by SSHing into the telemetry bastion host, exporting telemetry data from DocumentDB, and producing a formatted markdown report with deployment insights.
Install this agent skill to your Project
npx add-skill https://github.com/agentic-community/mcp-gateway-registry/tree/main/.claude/skills/usage-report
Metadata
Additional technical details for this skill
- author
- mcp-gateway-registry
- version
- 1.0
SKILL.md
Usage Report Skill
Export telemetry data from the MCP Gateway Registry's DocumentDB telemetry collector and generate a usage report showing deployment patterns, version adoption, and feature usage in the wild.
Prerequisites
- SSH key at
~/.ssh/id_ed25519with access to the bastion host - Terraform state available in
terraform/telemetry-collector/(to read bastion IP) - Bastion host enabled (
bastion_enabled = trueinterraform/telemetry-collector/terraform.tfvars) - AWS credentials configured on the bastion host (for Secrets Manager access)
Input
The skill accepts optional parameters:
/usage-report [OUTPUT_DIR]
- OUTPUT_DIR - Directory to save the report (default:
.scratchpad/usage-reports/)
If OUTPUT_DIR is not provided, save to .scratchpad/usage-reports/.
Workflow
Step 1: Get Bastion IP
cd terraform/telemetry-collector && terraform output -raw bastion_public_ip
If the output is "Bastion not enabled", tell the user to set bastion_enabled = true in terraform/telemetry-collector/terraform.tfvars and run terraform apply.
Step 2: Copy Export Script to Bastion
scp -o StrictHostKeyChecking=no -i ~/.ssh/id_ed25519 \
terraform/telemetry-collector/bastion-scripts/telemetry_db.py \
ec2-user@$BASTION_IP:~/telemetry_db.py
Step 3: Run Export on Bastion
ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_ed25519 \
ec2-user@$BASTION_IP \
'python3 telemetry_db.py export --output /tmp/registry_metrics.csv 2>&1'
Capture the full output -- it contains the summary statistics printed by telemetry_db.py.
Step 4: Download the CSV
scp -o StrictHostKeyChecking=no -i ~/.ssh/id_ed25519 \
ec2-user@$BASTION_IP:/tmp/registry_metrics.csv \
OUTPUT_DIR/registry_metrics.csv
Step 5: Install Python Dependencies and Generate Charts
First, ensure matplotlib and seaborn are available on the system Python:
/usr/bin/python3 -c "import matplotlib, seaborn" 2>/dev/null || pip install --break-system-packages matplotlib seaborn
Then generate the deployment distribution chart:
/usr/bin/python3 .claude/skills/usage-report/generate_charts.py \
--csv OUTPUT_DIR/registry_metrics.csv \
--output OUTPUT_DIR/deployment-distribution-YYYY-MM-DD.png
This produces a single faceted PNG with 6 subplots: Cloud Provider, Compute Platform, Storage Backend, Auth Provider, Version Type, and Deployment Mode. Each subplot shows counts and percentages.
Step 5b: Generate Timeseries Chart
Generate a timeseries chart showing unique registry installs per cloud provider over time. This reads ALL CSV files in the output directory to build a complete historical view:
/usr/bin/python3 .claude/skills/usage-report/generate_timeseries_chart.py \
--csv-dir OUTPUT_DIR \
--output OUTPUT_DIR/registry-installs-timeseries-YYYY-MM-DD.png
This produces a PNG with two subplots:
- Cumulative Unique Registry Installs -- running total of unique registry_ids per cloud provider
- Daily Active Registry Installs -- unique registry_ids seen each day per cloud provider
Step 5c: Generate Instance Lifetime Chart
Generate a density plot showing the distribution of instance lifetimes (age in days). This reads the metrics JSON produced by the analysis step, so it must run after Step 6. However, the SKILL.md lists it here for logical grouping with other charts:
/usr/bin/python3 .claude/skills/usage-report/generate_lifetime_chart.py \
--metrics OUTPUT_DIR/metrics-YYYY-MM-DD.json \
--output OUTPUT_DIR/instance-lifetime-YYYY-MM-DD.png
This produces a PNG with two panels:
- Age Distribution -- histogram with KDE density overlay showing instance ages in days, with stats annotation (mean, max, multi-day vs single-day counts)
- Age Buckets -- horizontal bar chart grouping instances into age ranges (0 days, 1-2 days, 3-5 days, etc.) with counts and percentages
Note: Run this after Step 6 (telemetry analysis) since it reads the metrics JSON.
Step 6: Run Telemetry Analysis
Run the analysis script to compute all distributions, instance timelines, and metrics. This produces two files:
tables-YYYY-MM-DD.md-- pre-formatted markdown tables ready to embed in the report (with executive summary comparison at the top)metrics-YYYY-MM-DD.json-- raw computed metrics as JSON (includesper_cloud_unique_installs)
The script automatically finds the most recent previous metrics-*.json file in the output directory and generates an executive summary with deltas at the top of the tables file. You can also specify a previous metrics file explicitly:
/usr/bin/python3 .claude/skills/usage-report/analyze_telemetry.py \
--csv OUTPUT_DIR/registry_metrics.csv \
--output-dir OUTPUT_DIR \
--date YYYY-MM-DD
Or with an explicit previous metrics file:
/usr/bin/python3 .claude/skills/usage-report/analyze_telemetry.py \
--csv OUTPUT_DIR/registry_metrics.csv \
--output-dir OUTPUT_DIR \
--date YYYY-MM-DD \
--previous-metrics OUTPUT_DIR/metrics-PREVIOUS-DATE.json
Step 7: Generate the Usage Report
Read the generated tables-YYYY-MM-DD.md and include its tables directly in the report. Add narrative sections (Executive Summary, Architecture Patterns, Recommendations) around the data tables. The tables file contains:
- Key Metrics table
- Registry Instance Lifetime table (age in days, sorted descending)
- Identified and Unidentified instance tables
- Cloud, Compute, Architecture, Storage, Auth distribution tables
- Version Adoption table
- Feature Adoption table
- Search Usage table
- Per-instance daily timelines (with servers, agents, skills, search queries)
Report Structure
# AI Registry -- Usage Report
*Report Date: YYYY-MM-DD*
*Data Source: Telemetry Collector (DocumentDB)*
*Collection Period: [earliest ts] to [latest ts]*
---
## Executive Summary
Lead with the number of new registry installs since the last report (if available), then total unique installs since tracking began, dominant cloud/compute/IdP, average daily install rate, and notable growth trends. Follow immediately with the timeseries chart.

### Comparison with Previous Report
- Deltas for total events, unique instances, heartbeat events, null registry_id count
- Per-cloud-provider unique registry installs comparison table
## Deployment Distribution

## Key Metrics
| Metric | Value |
|--------|-------|
| Total Events | N |
| Unique Registry Instances | N |
| ... | ... |
## Registry Instance Lifetime
Commentary on average/max lifetime, how many are multi-day vs single-day.
Density chart showing age distribution (histogram + KDE) and age buckets.
Table sorted by age (days) descending showing each instance with cloud, compute, auth, first seen, last seen, age in days, and event count.
## Deployment Landscape
### Registry Instances
Table of unique registry_id values with their cloud, compute, storage, auth, federation status.
### Cloud Provider Distribution
Count and percentage of each cloud value (aws, azure, gcp, unknown).
### Compute Platform Distribution
Count and percentage of each compute value (docker, ecs, kubernetes, etc).
### Storage Backend Distribution
Count and percentage of each storage value (mongodb-ce, documentdb, etc).
### Auth Provider Distribution
Count and percentage of each auth value (auth0, keycloak, entra, cognito, none).
## Version Adoption
### By Events
Table of version strings with event counts and percentages. Note which are release vs dev/branch versions.
### By Unique Registry Instances
Table of version strings with unique registry instance counts. Shows how many distinct deployments run each version (an instance is counted under the latest version it reported).
### Last Seen Version per Registry Instance
Table showing each registry_id with its cloud, compute, last reported version, and last seen date. Sorted by last seen date descending. Useful for tracking which instances are on old versions.
## Feature Adoption
- Federation enabled rate
- with-gateway vs registry-only mode
- Heartbeat opt-in rate
## Search Usage
- Total queries, average per instance, max from single instance
## Architecture Patterns Observed
Identify 3-5 distinct deployment patterns from the data (e.g., "Dev Setup", "AWS Production", "Azure Enterprise").
## Recommendations
3-5 actionable insights based on the data.
Save the report to OUTPUT_DIR/ai-registry-usage-report-YYYY-MM-DD.md.
Step 8: Generate Self-Contained HTML
Convert the markdown report to a single self-contained HTML file using pandoc. The chart PNG is base64-embedded so the HTML works standalone. Run from the OUTPUT_DIR so relative image paths resolve:
cd OUTPUT_DIR && pandoc ai-registry-usage-report-YYYY-MM-DD.md \
-o ai-registry-usage-report-YYYY-MM-DD.html \
--embed-resources --standalone \
--css=.claude/skills/usage-report/report-style.css \
--metadata title="AI Registry - Usage Report YYYY-MM-DD"
The report-style.css file in the skill directory provides a clean, professional layout. Pandoc must be installed:
which pandoc >/dev/null || sudo apt-get install -y pandoc
Step 9: Present Results
After generating the report:
- Display the Executive Summary (with comparison deltas) and Key Metrics directly in the conversation
- Tell the user the full report path, HTML path, CSV path, and chart paths
- Highlight the most interesting findings and notable changes from the previous report
Error Handling
- SSH connection fails: Check that the bastion IP is correct and security group allows your IP. The allowed CIDRs are in
terraform/telemetry-collector/terraform.tfvarsunderbastion_allowed_cidrs. - Export returns 0 documents: The telemetry collector may not have received any events yet. Check that
telemetry_enabledis true in registry settings and the collector endpoint is reachable. - Terraform output fails: Make sure you're in the right directory and have run
terraform init.
Example Usage
User: /usage-report
Output:
Executive Summary: 68 startup events from ~7 unique registry instances over 4 days...
Compared to previous report (2026-03-30): +12 events (+21%), +2 new instances (+40%)
Full report: .scratchpad/usage-reports/ai-registry-usage-report-2026-03-31.md
HTML report: .scratchpad/usage-reports/ai-registry-usage-report-2026-03-31.html
Charts:
- .scratchpad/usage-reports/deployment-distribution-2026-03-31.png
- .scratchpad/usage-reports/registry-installs-timeseries-2026-03-31.png
CSV data: .scratchpad/usage-reports/registry_metrics.csv
User: /usage-report /tmp/reports
Output saved to /tmp/reports/.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agentcore-register
Given an MCP server URL, probe the server via curl to discover its metadata and tools, then generate a markdown file with copy-pasteable content for each field in the Amazon Bedrock AgentCore "Create record" form.
macos-setup
Complete macOS setup and teardown for MCP Gateway & Registry (AI-registry). Clones the repository, installs all services, configures Keycloak auth, registers the Cloudflare docs server, and verifies the full stack. Also supports complete teardown. Can be run directly from its GitHub URL without the repository already cloned. Uses an interactive or default-values mode chosen at startup.
generate-server-card
Generate an MCP server card JSON (mcp-gateway-registry format) by analyzing server source code in a folder or GitHub URL. Studies code to detect server name, tools, transport, auth, and generates a registry-compatible config.
generate-agent-card
Generate an A2A agent card JSON by analyzing agent source code in a folder or GitHub URL. Studies the code to detect agent name, skills, tools, auth, protocol, and generates a spec-compliant agent card.
pr-review
Review a GitHub pull request using multiple expert personas. Takes a PR URL as input, analyzes the changes, and generates comprehensive review feedback from different perspectives (Merge Specialist, Frontend, Backend, Security, DevOps, AI/Agent, SRE, Chief Architect).
create-milestone
Create a GitHub milestone for an upcoming release. Suggests the next version based on the latest release, gathers all merged PRs and closed issues since that release, presents a draft with two tables (Issues and PRs) for user approval, then creates the milestone and assigns all approved items.
Didn't find tool you were looking for?