mirror of
https://github.com/samanhappy/mcphub.git
synced 2025-12-31 20:00:00 -05:00
docs: add output compression feature documentation
- Add output-compression.mdx with comprehensive feature documentation - Add feature to navigation in docs.json Co-authored-by: samanhappy <2755122+samanhappy@users.noreply.github.com>
This commit is contained in:
@@ -28,7 +28,8 @@
|
|||||||
"features/server-management",
|
"features/server-management",
|
||||||
"features/group-management",
|
"features/group-management",
|
||||||
"features/smart-routing",
|
"features/smart-routing",
|
||||||
"features/oauth"
|
"features/oauth",
|
||||||
|
"features/output-compression"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
109
docs/features/output-compression.mdx
Normal file
109
docs/features/output-compression.mdx
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
---
|
||||||
|
title: 'Output Compression'
|
||||||
|
description: 'Reduce token consumption by compressing MCP tool outputs'
|
||||||
|
---
|
||||||
|
|
||||||
|
# Output Compression
|
||||||
|
|
||||||
|
MCPHub provides an AI-powered compression mechanism to reduce token consumption from MCP tool outputs. This feature is particularly useful when dealing with large outputs that can significantly impact system efficiency and scalability.
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The compression feature uses a lightweight AI model (by default, `gpt-4o-mini`) to intelligently compress MCP tool outputs while preserving all essential information. This can help:
|
||||||
|
|
||||||
|
- **Reduce token overhead** by compressing verbose tool information
|
||||||
|
- **Lower operational costs** associated with token consumption
|
||||||
|
- **Improve performance** for downstream processing
|
||||||
|
- **Better resource utilization** in resource-constrained environments
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
Add the compression configuration to your `systemConfig` section in `mcp_settings.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"systemConfig": {
|
||||||
|
"compression": {
|
||||||
|
"enabled": true,
|
||||||
|
"model": "gpt-4o-mini",
|
||||||
|
"maxInputTokens": 100000,
|
||||||
|
"targetReductionRatio": 0.5
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Configuration Options
|
||||||
|
|
||||||
|
| Option | Type | Default | Description |
|
||||||
|
|--------|------|---------|-------------|
|
||||||
|
| `enabled` | boolean | `false` | Enable or disable output compression |
|
||||||
|
| `model` | string | `"gpt-4o-mini"` | AI model to use for compression |
|
||||||
|
| `maxInputTokens` | number | `100000` | Maximum input tokens for compression |
|
||||||
|
| `targetReductionRatio` | number | `0.5` | Target size reduction ratio (0.0-1.0) |
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
Output compression requires:
|
||||||
|
|
||||||
|
1. An OpenAI API key configured in the smart routing settings
|
||||||
|
2. The compression feature must be explicitly enabled
|
||||||
|
|
||||||
|
### Setting up OpenAI API Key
|
||||||
|
|
||||||
|
Configure your OpenAI API key using environment variables or system configuration:
|
||||||
|
|
||||||
|
**Environment Variable:**
|
||||||
|
```bash
|
||||||
|
export OPENAI_API_KEY=your-api-key
|
||||||
|
```
|
||||||
|
|
||||||
|
**Or in systemConfig:**
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"systemConfig": {
|
||||||
|
"smartRouting": {
|
||||||
|
"openaiApiKey": "your-api-key",
|
||||||
|
"openaiApiBaseUrl": "https://api.openai.com/v1"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
|
||||||
|
1. **Content Size Check**: When a tool call completes, the compression service checks if the output is large enough to benefit from compression (threshold is 10% of `maxInputTokens` or 1000 tokens, whichever is smaller)
|
||||||
|
|
||||||
|
2. **AI Compression**: If the content exceeds the threshold, it's sent to the configured AI model with instructions to compress while preserving essential information
|
||||||
|
|
||||||
|
3. **Size Validation**: The compressed result is compared with the original; if compression didn't reduce the size, the original content is used
|
||||||
|
|
||||||
|
4. **Error Handling**: If compression fails for any reason, the original content is returned unchanged
|
||||||
|
|
||||||
|
## Fallback Mechanism
|
||||||
|
|
||||||
|
The compression feature includes graceful degradation for several scenarios:
|
||||||
|
|
||||||
|
- **Compression disabled**: Original content is returned
|
||||||
|
- **No API key**: Original content is returned with a warning
|
||||||
|
- **Small content**: Content below threshold is not compressed
|
||||||
|
- **API errors**: Original content is returned on any API failure
|
||||||
|
- **Error responses**: Tool error responses are never compressed
|
||||||
|
- **Non-text content**: Images and other media types are preserved as-is
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
1. **Start with defaults**: The default configuration provides a good balance between compression and quality
|
||||||
|
|
||||||
|
2. **Monitor results**: Review compressed outputs to ensure important information isn't lost
|
||||||
|
|
||||||
|
3. **Adjust threshold**: If you have consistently large outputs, consider lowering `targetReductionRatio` for more aggressive compression
|
||||||
|
|
||||||
|
4. **Use efficient models**: The default `gpt-4o-mini` provides a good balance of cost and quality; switch to `gpt-4o` if you need higher quality compression
|
||||||
|
|
||||||
|
## Limitations
|
||||||
|
|
||||||
|
- Compression adds latency due to the AI API call
|
||||||
|
- API costs apply for each compression operation
|
||||||
|
- Very short outputs won't be compressed (below threshold)
|
||||||
|
- Binary/non-text content is not compressed
|
||||||
Reference in New Issue
Block a user