Report Server
Overview
The Report Server provides general reporting capabilities for custom data exports and report generation.
Server Details
- Server Name:
report - Version: 0.0.1
- Endpoint:
/mcp/report - Authentication: Organization-level required
Purpose
Generate custom reports and data exports based on user-defined criteria. This server provides flexible reporting capabilities for various data analysis needs.
Available Tools
1. report-schema-tool
Purpose: Get field mappings for the Report index
When to use: Before constructing queries to understand available fields
Returns: Elasticsearch mapping with field names, types, and descriptions
2. report-compute-tool
Purpose: Execute Elasticsearch queries against the Report index
Input: Elasticsearch query JSON Returns: Query results with matching documents and aggregations
3. chart-format-tool
Purpose: Generate Chart.js configurations for visualizing report data
Supported chart types: line, pie, doughnut, bar, horizontalBar
Common Use Cases
1. Custom Data Export
{
"query": {
"bool": {
"filter": [
{"range": {"date": {"gte": "now-30d/d"}}}
]
}
},
"_source": ["field1", "field2", "field3"],
"size": 1000
}
2. Aggregated Report
{
"query": {
"range": {"date": {"gte": "now-90d/d"}}
},
"size": 0,
"aggs": {
"by_category": {
"terms": {"field": "category.keyword", "size": 20},
"aggs": {
"total_count": {
"value_count": {"field": "id.keyword"}
},
"sum_metric": {
"sum": {"field": "metric_value"}
}
}
}
}
}
3. Time-Series Report
{
"query": {
"range": {"date": {"gte": "now-90d/d"}}
},
"size": 0,
"aggs": {
"by_day": {
"date_histogram": {
"field": "date",
"calendar_interval": "day"
},
"aggs": {
"daily_total": {
"sum": {"field": "value"}
}
}
}
}
}
Best Practices
1. Check Schema First
Always call report-schema-tool before querying to understand available fields.
2. Apply Date Filters
Include date range filters for better performance:
{"range": {"date": {"gte": "now-30d/d"}}}
3. Limit Result Size
Use appropriate size parameter to avoid overwhelming results:
{"size": 100}
4. Use Aggregations for Summaries
For summary reports, use aggregations instead of retrieving all documents.
5. Specify Required Fields
Use _source parameter to include only needed fields:
{"_source": ["field1", "field2", "field3"]}
Query Patterns
Filtered Report
{
"query": {
"bool": {
"filter": [
{"term": {"status.keyword": "active"}},
{"range": {"date": {"gte": "now-30d/d"}}}
]
}
},
"size": 500
}
Summary Report
{
"size": 0,
"aggs": {
"summary": {
"stats": {"field": "metric_value"}
},
"by_category": {
"terms": {"field": "category.keyword"}
}
}
}
Comparison Report
{
"size": 0,
"aggs": {
"current_period": {
"filter": {"range": {"date": {"gte": "now-30d/d"}}},
"aggs": {
"total": {"sum": {"field": "value"}}
}
},
"previous_period": {
"filter": {"range": {"date": {"gte": "now-60d/d", "lt": "now-30d/d"}}},
"aggs": {
"total": {"sum": {"field": "value"}}
}
}
}
}