mcp冷凝器
   ](https://github.com/teriyakichild/mcp-condenser/releases) ](https://hub.docker.com/r/teriyakichild/mcp-condenser)
MCP代理将详细的JSON、YAML、XML和CSV工具响应压缩为 紧凑的 香椿 文本,大幅减少 返回具有相同嵌套的许多记录的API输出的令牌使用情况 模式——pod列表、节点状态表、云资源清单和 类似。
运作原理
- 扁平化 将嵌套对象转换为点符号键(
spec.containers.0.image). - 制表 将相同形状的记录列表转换为紧凑的TOON表。
- 浓缩 重复相同信号的列:零值、空值、常数,
并且相同60秒窗口内的时间戳被汇总一次 每行重复一次。
- 群组 相关密钥(例如。
requests.cpu,requests.memory)进入
紧凑型组合柱。
结果是一个人类可读、LLM友好的文本表示,通常 在现实世界API响应中实现25-68%的令牌减少,同时 保持或提高LLM理解能力。
快速开始
docker run -p 9000:9000 \
-e UPSTREAM_MCP_URL=http://host.docker.internal:8080/mcp \
teriyakichild/mcp-condenser:latest将您的MCP客户端指向 http://localhost:9000/mcp.
host.docker.internal解析到Docker Desktop上的主机 (macOS/Windows)。在Linux上,添加--add-host=host.docker.internal:host-gateway或者使用上游的真实地址。
MCP代理使用
从源代码而不是Docker运行:
单上游(环境变量)
集 UPSTREAM_MCP_URL 并可选择根据环境调整行为 中列出的变量 配置参考 在......下面
UPSTREAM_MCP_URL=http://localhost:8080/mcp uv run mcp-condenser-proxy多上游(配置文件)
使用JSON配置文件在一个端点后聚合多个MCP服务器。 每个服务器块指定其URL,每个服务器公开哪些工具 压缩切换和身份验证标头(静态或从 客户)。
CONDENSER_CONFIG=config.json uv run mcp-condenser-proxy默认情况下,工具名称以服务器名称作为前缀(例如。 k8s_get_pods). 集 "prefix_tools": false 在 global 部分禁用前缀。
看 查看完整的多上游配置示例。
Docker Compose
适用于单上游和多上游模式的即用型Compose文件 .
舵
Helm图表包含在 helm/mcp-condenser/:
helm install mcp-condenser ./helm/mcp-condenser \
--set config.upstreamMcpUrl=http://upstream:8080/mcp看 examples/helm/ 对于值文件和Helmfile示例, 和 helm/mcp-condenser/values.yaml 对于所有 可配置的图表值。
配置参考
看 docs/CONFIGURATION.md 作为完整参考, 包括所有环境变量、配置文件模式、压缩启发式算法, 以及Helm图表值。
快速链接:
CLI使用情况
直接压缩JSON、YAML、XML或CSV文件:
uv run mcp-condenser input.json
uv run mcp-condenser input.yaml
uv run mcp-condenser deployments.xml
uv run mcp-condenser metrics.csv
cat pods.yaml | uv run mcp-condenser基准测试结果
代币减少
跨Kubernetes、AWS、数据库、监控、日志和CDN设备进行测量 使用 tiktoken/cl100k_base:
| Fixture | 域名 | 原始代币 | TOON代币 | 减少 |
|---|---|---|---|---|
| K8s 16 pod节点 | Kubernetes | 9876 | 3656 | 63.0% |
| K8s 6脚节点 | Kubernetes | 15285 | 5919 | 61.3% |
| K8s 30 pod节点 | Kubernetes | 69885 | 22229 | 68.2% |
| EC2实例 | AWS | 33498 | 14645 | 56.3% |
| SQL命令 | 数据库 | 26165 | 11298 | 56.8% |
| 部署库存 | DevOps(XML) | 1928 | 664 | 65.6% |
| 服务器指标 | 基础设施(CSV) | 959 | 994 | -3.6% |
| 应用程序性能 | APM(CSV) | 1760 | 1535 | 12.8% |
| 普罗米修斯查询 | 监控 | 3083 | 2292 | 25.7% |
| Elasticsearch日志 | 日志记录 | 6489 | 3468 | 46.6% |
| Istio虚拟服务 | Kubernetes | 4197 | 3141 | 25.2% |
| 访问日志 | CDN/LB(JSONL) | 7158 | 4582 | 36.0% |
压缩与域无关:Kubernetes pod列表、AWS EC2 描述实例响应、SQL结果集、Prometheus时间序列, Elasticsearch日志查询和XML/CSV/JSONL响应都受益匪浅 减少幅度在25%至68%之间。
CSV注释: CSV已经是一种表格格式,因此TOON压缩增加了 尽量减少开销,而不是节省代币。CSV支持的价值在于 *解析和类型推理* --冷凝器自动检测CSV/TSV输入, 将字符串转换为本机类型(int、float、null),并提供结果 通过相同的启发式管道。这意味着CSV响应仍然有益 从列省略(仅限零、仅限空、常量列) 模式存在。为了最大限度地节省开支,请选择format_hint: "json"或"xml"上游支持多种输出格式的工具。
LLM精度
对本地Ollama实例运行精度基准测试以验证TOON 保持答案质量:
# Single model
uv run python benchmarks/accuracy.py --model qwen3:4b --host http://localhost:11434
# Multi-model matrix (generates markdown tables)
uv run python benchmarks/matrix.py --host http://localhost:11434该基准套件在7个设备(Kubernetes、AWS EC2、AWS EC2和AWS EC2)上测试了120个问题, SQL、CSV、XML),涵盖直接查找、交叉引用查询、聚合、, 以及多跳推理。
本地模型:启用上下文窗口
本地模型常见的小型上下文窗口(8K-64K)无法适应大型API 原始形式的反应。TOON浓缩使它们触手可及。
| 夹具 | 生坯 | 托金 | 8K | 16K | 32K | 64K | 128K |
|---|---|---|---|---|---|---|---|
| K8s 16吊舱节点 | 9876 | 3656 | 两者都没有 | 仅限TOON 原始 + TOON 原始 + TOON 原始 + TOON | |||
| K8s 6脚节点 | 15285 | 5919 | 两者都不是 | 两者都没有 | 仅限TOON 原始 + TOON 原始 + TOON | ||
| EC2实例 | 33498 | 4386 | 两者都没有 | 仅限TOON | 仅限TOON | 仅限TOON 原始 + TOON | |
| SQL顺序 | 26165 | 11298 | 两者都不是 | 两者都是 | 两者都没有 | 仅限TOON 原始 + TOON | |
| K8s 30吊舱节点 | 69885 | 22229 | 均不 | 均不 | 仅限TOON |
运行令牌缩减测试(不需要Ollama):
uv run pytest tests/test_benchmark.py -v -s发展
uv sync
uv run pytest tests/ -v许可证
Apache-2.0--参见 许可证.
