mcp-compressor en profundidad: Atlassian Labs y el enigma del 70-97% sin benchmarks
Zero Trust Notice: Este artículo sigue la metodología de investigación zero-trust. Los datos marcados como “VERIFICADO” tienen evidencia fresca. Los datos marcados como “NO VERIFICADO” solo aparecen en el artículo introductorio y NO se encontraron en fuentes primarias.
mcp-compressor es el proyecto de Atlassian Labs para comprimir tool definitions de MCP servers. Con 66 estrellas y backing oficial de Atlassian, promete reducir el consumo de tokens por herramientas.
Pero hay un problema: los números 70-97% NO están respaldados por benchmarks verificables.
1. Introducción — Qué es y quién lo mantiene
El mantenedor
Atlassian Labs — El equipo de desarrollo interno de Atlassian.
- Creador de productos como Jira, Confluence, Bitbucket
- Publica proyectos open source en
atlassian-labs/ - Tiene un blog oficial sobre MCP compression
- Publica benchmarks de 70-97% ahorro en tool definitions
El proyecto
| Métrica | mcp-compressor | Estado |
|---|---|---|
| ⭐ Stars | 66 | ✅ VERIFICADO (GitHub API) |
| ⚙️ Forks | 7 | ✅ VERIFICADO (GitHub API) |
| 📅 Último commit | 2026-06-02 (3 días ago) | ✅ VERIFICADO (GitHub API) |
| 🌐 Lenguaje | Rust | ✅ VERIFICADO (GitHub API) |
| 🔍 Issues abiertas | 1 | ✅ VERIFICADO (GitHub API) |
| 🎯 Plataformas | MCP servers existentes | - |
Repositorio
GitHub: https://github.com/atlassian-labs/mcp-compressor
Blog oficial: https://www.atlassian.com/blog/development/mcp-compression-preventing-tool-bloat-in-ai-agents/
Docs: https://atlassian-labs.github.io/mcp-compressor/
El enigma de los benchmarks
| Afirmación | Fuente | Estado |
|---|---|---|
| 70-97% ahorro | Artículo introductorio + Blog de Atlassian Labs | ❌ NO VERIFICADO (no hay benchmarks en GitHub issues/PRs/docs) |
| 4 niveles de compresión | README oficial | ✅ VERIFICADO |
| 3 SDKs (Python, TypeScript, Rust) | README oficial | ✅ VERIFICADO |
| “thousands or tens of thousands of tokens” | README oficial | ✅ VERIFICADO (cualitativo, no cuantitativo) |
2. Arquitectura — Cómo funciona internamente
Diagrama de flujo
┌─────────────────┐
│ MCP Client │
│ (Claude Code) │
└────────┬────────┘
│ 1. tools/list
▼
┌─────────────────┐
│ mcp-compressor │
│ (Proxy) │
└────────┬────────┘
│ 2. tools/list (backend)
▼
┌─────────────────┐
│ Backend MCP │
│ Server │
└────────┬────────┘
│ 3. All tools + schemas
▼
┌─────────────────┐
│ mcp-compressor │
│ (Compress) │
└────────┬────────┘
│ 4. Compressed wrappers
▼
┌─────────────────┐
│ MCP Client │
│ (Solo wrappers) │
└─────────────────┘
Los 2 patrones
2.1 Compressed MCP proxy
El frontend expone wrappers en vez de tools completas:
server_get_tool_schema
server_invoke_tool
server_list_tools (solo a max compression)
Ventajas:
- El modelo ve una superficie pequeña primero
- Pide el schema completo solo para la tool seleccionada
- Luego invoca la tool
2.2 Local proxy for SDKs
La SDK inicia un proxy local para generated clients:
App (Python / TypeScript / Rust)
↓
CompressorClient
↓
Local session proxy (/token auth)
↓
Generated clients (CLI / Python / TS functions)
↓
Backend MCP servers
Ventajas:
- No necesitas spawnear
mcp-compressorstdio subprocess - Generated clients llaman al proxy con session token
- Puedes usar desde código o shell commands
3. Los 4 niveles de compresión
| Nivel | Comportamiento | Uso típico |
|---|---|---|
low |
Descripciones más descriptivas | Servidores pequeños o exploración |
medium |
Balance entre descripciones y nombres de parámetros | Default |
high |
Listings muy compactos, enfocado en nombres/args | Toolsets grandes |
max |
Superficie mínima + list_tools |
Setups muy grandes / multi-server |
Ejemplos de compresión
Para una tool echo(message): Echo a message from alpha:
| Nivel | Comprimido |
|---|---|
low |
<tool>echo(message): Echo a message from alpha.</tool> |
medium |
<tool>echo(message): Echo a message from alpha</tool> |
high |
<tool>echo(message)</tool> |
max |
<tool>echo</tool> |
Nota: Solo low y medium mantienen descripciones. high y max pierden contexto.
4. Instalación paso a paso
Prerrequisitos
- Python 3.11+ (para Python SDK)
- Node.js 18+ (para TypeScript SDK)
- Rust 1.70+ (para Rust SDK)
Opción 1: CLI proxy
# Instalar
pip install mcp-compressor
# O con Rust (cargo)
cargo install mcp-compressor
# Usar
mcp-compressor -c medium -- python server.py
# O con remote HTTP MCP
mcp-compressor -c medium -- https://mcp.example.com/v1/mcp
Opción 2: Python SDK
from mcp_compressor import CompressorClient
with CompressorClient(
servers={"local": {"command": "python", "args": ["server.py"]}},
compression_level="medium",
) as proxy:
print([tool.name for tool in proxy.tools])
result = proxy.invoke("myTool", {"arg": "value"})
print(result)
Opción 3: TypeScript SDK
import { CompressorClient } from "@atlassian/mcp-compressor";
const client = new CompressorClient({
servers: { local: { command: "python", args: ["server.py"] } },
compressionLevel: "medium",
});
const proxy = await client.connect();
try {
console.log(proxy.tools.map((tool) => tool.name));
console.log(await proxy.invoke("myTool", { arg: "value" }));
} finally {
proxy.close();
}
Opción 4: Rust SDK
use mcp_compressor::compression::CompressionLevel;
use mcp_compressor::sdk::{CompressorClient, ServerConfig};
use serde_json::json;
let proxy = CompressorClient::builder()
.server("local", ServerConfig::command("python").arg("server.py"))
.compression_level(CompressionLevel::Medium)
.build()
.connect()
.await?;
let result = proxy.invoke("myTool", json!({ "arg": "value" })).await?;
Verificación
# Ver tools comprimidos
mcp-compressor -c medium -- python server.py
# Deberías ver:
# - server_get_tool_schema
# - server_invoke_tool
# - server_list_tools (si compression=max)
5. Configuración — Config files y ejemplos
Config con tool filters
mcp-compressor -c medium \
--server-name atlassian \
--include-tools getAccessibleAtlassianResources,getConfluencePage \
-- https://mcp.atlassian.com/v1/mcp
Config con OAuth
Para Atlassian MCP (OAuth-first):
# Primera run: abre browser para autorizar
mcp-compressor -c medium \
--server-name atlassian \
-- https://mcp.atlassian.com/v1/mcp
# Runs subsiguientes: reusa OAuth credentials
Config JSON avanzada
{
"servers": {
"alpha": {
"command": "python",
"args": ["server.py"],
"env": {"API_KEY": "secret"}
},
"beta": {
"url": "https://mcp.example.com/v1/mcp"
}
},
"compression_level": "high",
"server_name": "alpha",
"include_tools": ["tool1", "tool2"]
}
6. Generated Clients
CLI Mode
Genera shell commands:
mcp-compressor --cli-mode \
--server-name atlassian \
-- https://mcp.atlassian.com/v1/mcp
# Generated command:
atlassian get-accessible-atlassian-resources
Code Mode
Genera Python o TypeScript functions:
# generated-py/atlassian.py
import atlassian
resources = atlassian.getAccessibleAtlassianResources()
import { getAccessibleAtlassianResources } from "./generated-ts/atlassian.ts";
const resources = await getAccessibleAtlassianResources();
Just Bash integration
Para comandos bash:
mcp-compressor -c medium \
--just-bash \
-- python server.py
# Then use:
atlassian echo --message hi
7. Pitfalls — Problemas comunes y soluciones
Pitfall 1: Compression level too high
Problema: high o max pierden descripciones de tools.
Solución:
# Use medium por defecto
mcp-compressor -c medium -- python server.py
# Solo use high/max si el modelo ya conoce las tools
mcp-compressor -c high -- python server.py
Pitfall 2: Tool filters too restrictive
Problema: --include-tools filtra tools necesarias.
Solución:
# Omita --include-tools para ver todas
mcp-compressor -c medium -- python server.py
# O use --exclude-tools para excluir específicas
mcp-compressor -c medium \
--exclude-tools deprecated_tool,debug_tool \
-- python server.py
Pitfall 3: OAuth credentials not reused
Problema: Cada run pide OAuth.
Solución:
# MCP-compressor guarda credenciales automáticamente
# Asegúrate de usar el mismo --server-name
mcp-compressor -c medium \
--server-name atlassian \
-- https://mcp.atlassian.com/v1/mcp
Pitfall 4: Generated clients out of sync
Problema: Backend tools cambiaron, generated clients no.
Solución:
# Regenerate clients
mcp-compressor --cli-mode \
--server-name atlassian \
-- https://mcp.atlassian.com/v1/mcp
# O use Code Mode para regenerar módulos
8. Benchmarks — ¿Qué sabemos y qué NO?
Lo que SÍ sabemos (VERIFICADO)
| Dato | Fuente | Estado |
|---|---|---|
| 4 niveles de compresión | README oficial | ✅ VERIFICADO |
| 2 patrones (proxy + SDKs) | README oficial | ✅ VERIFICADO |
| 3 SDKs (Python, TypeScript, Rust) | README oficial | ✅ VERIFICADO |
| Generated clients (CLI + Code mode) | README oficial | ✅ VERIFICADO |
| “thousands or tens of thousands of tokens” | README oficial | ✅ VERIFICADO (cualitativo) |
Lo que NO sabemos (NO VERIFICADO)
| Dato | Fuente | Estado |
|---|---|---|
| 70-97% ahorro | Solo en artículo introductorio + blog de Atlassian Labs | ❌ NO VERIFICADO (no hay benchmarks en GitHub issues/PRs/docs) |
| Benchmarks específicos | Ninguna fuente | ❌ NO ENCONTRADO |
️ Comparación con OneTool
| Proyecto | Ahorro claimado | Benchmarks verificables |
|---|---|---|
| mcp-compressor | 70-97% (NO verificado) | ❌ No hay benchmarks en GitHub |
| OneTool | 96% (NO verificado) | ❌ No hay benchmarks en GitHub |
Conclusión: Ambos proyectos hacen claims de ahorro sin benchmarks verificables en GitHub issues, PRs, o documentación oficial.
9. Casos de uso — Cuándo usarlo (y cuándo NO)
Cuándo usar mcp-compressor
| Caso de uso | Por qué |
|---|---|
| Múltiples MCP servers existentes | Proxy transparente, comprime tool definitions sin cambiar tools |
| Enterprise con Atlassian stack | Soporte oficial de Atlassian Labs |
| Python / TypeScript / Rust | 3 SDKs disponibles |
| OAuth-first backends | Soporte nativo para OAuth |
| Generated clients | CLI mode + Code mode para integración fácil |
Cuándo NO usar mcp-compressor
| Caso de uso | Alternativa |
|---|---|
| Solo 1-2 MCP servers | Overhead del proxy no vale la pena |
| Hermes Agent (no tiene hooks) | OneTool (ya instalado) |
| Necesitas session continuity | context-mode (SQLite + FTS5) |
| Debugging token waste | token-optimizer (analytics) |
| GPL v3 es aceptable | OneTool (96% claim, GPL v3) |
10. Comparación — vs otros proyectos
mcp-compressor vs context-mode
| Aspecto | mcp-compressor | context-mode |
|---|---|---|
| Stars | 66 | 16,361 🔥🔥🔥 |
| Enfoque | Input compression (tool definitions) | Output compression (sandbox) |
| Ahorro | 70-97% (NO verificado) | 98% (VERIFICADO) |
| Session continuity | ❌ | ✅ SQLite + FTS5 |
| Think in Code | ❌ | ✅ OBLIGATORIO |
| Plataformas | - (proxy) | 15 |
| SDKs | 3 (Python, TS, Rust) | - |
| Backed by | Atlassian Labs | Mert Köseoğlu (individual) |
Veredicto: context-mode es más completo y con comunidad masiva. mcp-compressor es complementario para tool definitions.
mcp-compressor vs OneTool
| Aspecto | mcp-compressor | OneTool |
|---|---|---|
| Stars | 66 | 19 |
| Enfoque | Comprimir tool definitions | Eliminar tool definitions |
| Ahorro | 70-97% (NO verificado) | 96% (NO verificado) |
| Tools | - | 100+ integrados |
| Licencia | Open source | GPL v3 |
| SDKs | 3 (Python, TS, Rust) | Python |
Veredicto: OneTool tiene más tools pero GPL v3. mcp-compressor es más flexible pero requiere más setup.
mcp-compressor vs token-optimizer
| Aspecto | mcp-compressor | token-optimizer |
|---|---|---|
| Stars | 66 | 1,216 |
| Enfoque | Input compression | Output waste detection |
| Ahorro | 70-97% (NO verificado) | Variable |
| Analytics | ❌ | ✅ |
| Plugins nativos | ❌ | ✅ (Claude, Codex, OpenClaw) |
| Session continuity | ❌ | ❌ |
Veredicto: token-optimizer es más maduro y con analytics. mcp-compressor es complementario para tool definitions.
11. Conclusión — Recomendación final
Resumen
mcp-compressor es el compresor de MCP de Atlassian Labs con backing oficial y 3 SDKs. Sin embargo:
- ⚠️ Los benchmarks 70-97% NO están verificados — Solo aparecen en el blog de Atlassian Labs
- ✅ Arquitectura sólida — 4 niveles de compresión, 2 patrones, generated clients
- ✅ 3 SDKs — Python, TypeScript, Rust
- ⚠️ Comunidad pequeña — 66 estrellas vs 16K de context-mode
- ⚠️ Sin session continuity — Complementario con context-mode
Cuándo usarlo
Use mcp-compressor si:
- Tienes múltiples MCP servers existentes
- Estás en un entorno enterprise con Atlassian stack
- Necesitas Python/TypeScript/Rust SDKs
- No te importa que los benchmarks NO estén verificados
Don’t use mcp-compressor si:
- Solo usas Hermes Agent
- Solo tienes 1-2 MCP servers
- Necesitas session continuity
- Prefieres proyectos con benchmarks verificables
Setup recomendado
# Para MCP servers existentes
mcp-compressor -c medium -- python server.py
# Para Atlassian MCP (OAuth)
mcp-compressor -c medium \
--server-name atlassian \
-- https://mcp.atlassian.com/v1/mcp
Combinación ganadora
Para maximum optimization:
Claude Code + mcp-compressor + context-mode
- mcp-compressor comprime tool definitions (70-97% NO verificado)
- context-mode comprime output (98% VERIFICADO)
- Ahorro total: ~90% en input + output (con la advertencia de que input side NO está verificado)
Next steps
Si quieres más detalles:
- Official docs
- GitHub repo
- Atlassian Blog — Fuente de los benchmarks NO verificados
Recursos adicionales
Documentation
Artículos relacionados
- MCP Token Optimization: 4 proyectos comparados — Artículo introductorio con la afirmación 70-97%
- Context-mode en profundidad — Artículo con benchmarks VERIFICADOS
- token-optimizer en profundidad — Próximo artículo
- OneTool en profundidad — Último artículo de la serie
GitHub
- mcp-compressor repository — 66 estrellas, 7 forks
- Issues list — 1 issue abierta
¿Qué te parece?
¿Has usado mcp-compressor? ¿Verificaste los benchmarks 70-97%? ¿Prefieres context-mode con benchmarks VERIFICADOS? ¿O ambos son complementarios? Déjame un comentario.