mcp-context-dedup
README.md
# `mcp-context-dedup`
[](https://pypi.org/project/mcp-context-dedup/)
[](https://www.python.org/downloads/)
[](https://opensource.org/licenses/MIT)
[-brightgreen.svg)](https://pypi.org/project/mcp-context-dedup/)
> Zero-dependency semantic context stream compression & token deduplication engine for MCP tools (achieving **60%โ80% LLM token savings**).
---
## ๐ Key Features
- ๐ฐ **60%โ80% Token Savings:** Saves LLM prompt token costs on verbose stdout streams and repetitive log outputs.
- โก **Zero External Dependencies:** Built 100% on Python Standard Library.
- ๐งน **Traceback & Log Deduplication:** Collapses repeated traceback frames and identical log lines into `[Repeated Nx]` count blocks.
- ๐๏ธ **JSON Array Summarization:** Truncates large homogeneous JSON arrays while preserving top/bottom schema context.
- ๐ ๏ธ **Stdio MCP Server:** Ready for instant integration into Claude Desktop, Cursor, and Windsurf via `uvx`.
---
## ๐๏ธ Architecture
```
+-------------------+ +--------------------------+ +------------------------+
| Verbose MCP Output| --> | mcpcontextdedup Engine | --> | Compressed Stream |
| (14k Tokens) | | (Deduplication & JSON) | | (2.8k Tokens / 80% Off)|
+-------------------+ +--------------------------+ +------------------------+
```
---
## ๐ฆ Quickstart
```bash
uvx mcp-context-dedup
```
### Python Library Usage
```python
from mcpcontextdedup import compress_context
raw_log = "error: connection reset\nerror: connection reset\nerror: connection reset\n"
res = compress_context(raw_log)
print(f"Reduction: {res.reduction_percentage}%")
print(res.text)
# Output:
# Reduction: 66.7%
# error: connection reset [Repeated 3x]
```
## โ๏ธ Claude Desktop & Cursor Setup
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"context-dedup": {
"command": "uvx",
"args": ["mcp-context-dedup"]
}
}
}
```
---
## โก Performance Benchmarks
| Output Type | Original Tokens | Compressed Tokens | Token Savings | Execution Time |
| :--- | :--- | :--- | :--- | :--- |
| **Repeated Log Stream (1,000 lines)** | 14,200 tokens | 280 tokens | **98.0% Savings** | 1.8 ms |
| **Large JSON API Array (500 items)** | 28,500 tokens | 4,200 tokens | **85.3% Savings** | 3.4 ms |
| **Python Traceback Burst (50 frames)** | 8,400 tokens | 1,600 tokens | **81.0% Savings** | 1.1 ms |
---
## ๐ Privacy & Security
- **100% Local & Offline:** Operates strictly over local stdio with zero network calls.
- **Zero Telemetry:** No analytics, no tracking, and no phone-home mechanisms.
---
## ๐ License
MIT ยฉ [Abhishek Prasad](https://github.com/prasadabhishek)
TDQS
A3.9/5.0
Scored across 1 tool
Disambiguation5/5
With only one tool, there is no possibility of confusion or overlapping purposes. The tool's unique function is clear.
Naming Consistency5/5
The single tool follows a clear verb_noun pattern (compress_mcp_output), and with only one tool, there are no inconsistencies to evaluate.
Tool Count3/5
The server has a single tool, which feels borderline for a typical server. However, the narrow purpose of context deduplication makes one tool arguably sufficient, but it is still on the thin side.
Completeness5/5
The tool fully addresses the server's stated purpose of compressing MCP outputs and deduplicating logs. There are no obvious missing operations for this narrowly defined domain.
Maintenance
ActivityStale
ResponsivenessNo issues