@access-mcp/xdmod-charts
Version:
MCP server for XDMoD Charts and Visualizations
250 lines (165 loc) • 7.95 kB
Markdown
# XDMoD Charts MCP Server
MCP server providing charts and visualizations from XDMoD (XD Metrics on Demand) Usage Analytics API endpoints for ACCESS-CI infrastructure. Generate SVG, PNG, and PDF charts, portal links, and advanced research visualizations with NSF Awards integration for comprehensive funding context.
## Usage Examples
### **Explore Available Metrics**
```
"What dimensions are available in XDMoD?"
"Show me all statistics for the Jobs dimension"
"What metrics can I track for Cloud resources?"
```
### **Get Usage Data**
```
"Show me total CPU hours for January 2024"
"What was the job count last month?"
"Get me the average wait time data for Q1 2024"
```
### **Generate Charts**
```
"Create an SVG chart of CPU hours for the last 30 days"
"Generate a high-resolution PNG chart of job counts for March 2024"
"Show me a PDF chart of resource utilization trends"
```
### **Portal Integration**
```
"Give me a direct link to the CPU hours chart in XDMoD"
"Generate a link to view GPU usage by resource in the portal"
"How can I view this data interactively in the portal?"
```
### **NSF Integration & Research Analysis**
```
"Show me Dr. Smith's computational usage with their NSF funding context"
"Analyze how NSF award 2138259's funding correlates with actual usage"
"Generate a research profile for University of Illinois combining usage and NSF funding"
"Compare funding allocation versus computational resource consumption"
```
## Tools
### get_dimensions
Get all available dimensions from the XDMoD Usage Tab.
**Parameters:** None
**Returns:** List of all dimensions with their IDs, categories, and group-by fields.
### get_statistics
Get available statistics for a specific dimension.
**Parameters:**
- `dimension_id` (string): The dimension ID (e.g., "Jobs_none")
- `category` (string): The realm/category (e.g., "Jobs")
- `group_by` (string): The group by field (e.g., "none")
**Returns:** List of statistics available for the specified dimension.
### get_chart_data
Get chart data and metadata for a specific statistic.
**Parameters:**
- `realm` (string): The realm (e.g., "Jobs")
- `group_by` (string): The group by field (e.g., "none")
- `statistic` (string): The statistic name (e.g., "total_cpu_hours")
- `start_date` (string): Start date in YYYY-MM-DD format
- `end_date` (string): End date in YYYY-MM-DD format
- `dataset_type` (string, optional): Dataset type (default: "timeseries")
**Returns:** Raw chart data including descriptions and metadata.
### get_chart_image
Get chart image (SVG, PNG, or PDF) for a specific statistic.
**Parameters:**
- `realm` (string): The realm (e.g., "Jobs")
- `group_by` (string): The group by field (e.g., "none")
- `statistic` (string): The statistic name (e.g., "total_cpu_hours")
- `start_date` (string): Start date in YYYY-MM-DD format
- `end_date` (string): End date in YYYY-MM-DD format
- `format` (string, optional): Image format - "svg", "png", or "pdf" (default: "svg"). Note: PNG displays directly in Claude Desktop, SVG returns as data URL and code, PDF returns as downloadable data
- `width` (number, optional): Image width in pixels (default: 916)
- `height` (number, optional): Image height in pixels (default: 484)
- `dataset_type` (string, optional): Dataset type (default: "timeseries")
**Returns:** Chart image data in the requested format.
### get_chart_link
Generate a direct link to view the chart in the XDMoD portal.
**Parameters:**
- `realm` (string): The realm (e.g., "Jobs", "SUPREMM")
- `group_by` (string): The group by field (e.g., "none", "resource")
- `statistic` (string): The statistic name (e.g., "total_cpu_hours", "gpu_time")
**Returns:** Direct URL to view the interactive chart in XDMoD. Use the portal's filtering options to narrow down to specific resources, users, or other criteria.
### get_nsf_award
Get NSF award details for a specific award number.
**Parameters:**
- `award_number` (string): NSF award number (e.g., '2138259')
### find_nsf_awards_by_pi
Find NSF awards for a specific Principal Investigator.
**Parameters:**
- `pi_name` (string): Principal Investigator name to search for
- `limit` (number, optional): Maximum number of awards to return (default: 10)
### find_nsf_awards_by_personnel
Search NSF awards by Principal Investigator name.
**Note:** Co-PI and Program Officer searches are not reliable in the NSF API and have been removed.
**Parameters:**
- `person_name` (string): Principal Investigator name to search for
- `limit` (number, optional): Maximum number of awards to return (default: 10)
### get_usage_with_nsf_context
Get XDMoD usage data enriched with NSF funding context for a researcher or institution.
**Parameters:**
- `researcher_name` (string, optional): Name of researcher to analyze
- `institution_name` (string, optional): Institution to analyze
- `start_date` (string): Start date in YYYY-MM-DD format
- `end_date` (string): End date in YYYY-MM-DD format
- `limit` (number, optional): Maximum NSF awards to include (default: 10)
**Returns:** Combined analysis including XDMoD usage metrics and associated NSF funding portfolio
### analyze_funding_vs_usage
Compare NSF funding amounts with actual XDMoD computational usage patterns.
**Parameters:**
- `nsf_award_number` (string): Specific NSF award number to analyze
- `start_date` (string): Start date in YYYY-MM-DD format
- `end_date` (string): End date in YYYY-MM-DD format
**Returns:** Comparative analysis of funding allocation versus computational resource consumption
### institutional_research_profile
Generate a comprehensive research profile combining XDMoD usage patterns with NSF funding for an institution.
**Parameters:**
- `institution_name` (string): Institution name to profile
- `start_date` (string): Start date in YYYY-MM-DD format
- `end_date` (string): End date in YYYY-MM-DD format
- `limit` (number, optional): Maximum NSF awards to include (default: 20)
**Returns:** Comprehensive institutional profile with funding and usage correlation analysis
### debug_auth_status
Check authentication status and debug information.
**Parameters:** None
**Returns:** Comprehensive debugging information including:
- API token status and configuration
- Available tools and their authentication requirements
- Troubleshooting guidance for authentication issues
- Environment variable and command-line argument detection
## Understanding Realms
XDMoD organizes metrics into different **realms** that provide different types of data:
### **Jobs Realm**
Basic job accounting and resource usage metrics:
- `total_cpu_hours` - Total CPU Hours
- `job_count` - Number of Jobs Ended
- `avg_cpu_hours` - Average CPU Hours per Job
- `total_waitduration_hours` - Total Wait Duration Hours
- `avg_waitduration_hours` - Average Wait Duration Hours
- `max_processors` - Maximum Processor Count
- `total_ace` - ACCESS Credit Equivalents Charged: Total
- `utilization` - ACCESS CPU Utilization
### **SUPREMM Realm**
Detailed performance analytics and system metrics:
- `gpu_time` - **GPU Hours: Total** 🎯
- `avg_percent_gpu_usage` - **Avg GPU usage: weighted by GPU hour** 🎯
- `wall_time` - CPU Hours: Total
- `cpu_time_user` - CPU Hours: User: Total
- `avg_percent_cpu_user` - Avg CPU %: User: weighted by core-hour
- `avg_flops_per_core` - Avg: FLOPS: Per Core weighted by core-hour
- `avg_memory_per_core` - Avg: Memory: Per Core weighted by core-hour
- `avg_ib_rx_bytes` - Avg: InfiniBand rate: Per Node weighted by node-hour
**Note:** For GPU metrics, always use the SUPREMM realm.
## Authentication
No authentication required. The server accesses publicly available system-wide metrics data from XDMoD.
## License
MIT
## Installation
```bash
npm install -g @access-mcp/xdmod-charts
```
Add to your Claude Desktop configuration:
```json
{
"mcpServers": {
"xdmod-charts": {
"command": "npx",
"args": ["@access-mcp/xdmod-charts"]
}
}
}
```