Skip to main content

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"}}
}
}
}
}