mcpField
T
token-compressor

token-compressor

ローカル
github.com/base76-research-labAI・エージェント1233 週間前に更新

token-compressor について

token-compressorは、LLMワークフロー向けに入力を短くするプロンプト圧縮パイプラインです。ローカルモデルによる書き換えと埋め込み類似度の検証を組み合わせ、基準を下回る場合は原文を返します。

主な機能

  1. 01ローカルモデルによるプロンプト圧縮
  2. 02埋め込み類似度による意味の検証
  3. 03検証失敗時の原文保持
  4. 04トークン数が閾値未満の場合にスキップ
  5. 05CLIとMCPで圧縮を提供

活用シーン

  1. 01LLMに送る前のプロンプト短縮
  2. 02圧縮後も条件と否定を保持
  3. 03トークン削減量と類似度カバレッジの確認

MCP 対応

MCPサーバーは`compress_prompt`ツールを公開し、テキストを受け取って圧縮結果と統計情報を返します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"base76-research-lab-token-compressor": {
"command": "uvx",
"args": [
"token-compressor-mcp"
]
}
}
}
起動コマンドuvx token-compressor-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypitoken-compressor-mcp0.1.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

token-compressor

意味を保ちながら、LLM のプロンプトトークンを 30~70% 削減します。

mcp-name: io.github.base76-research-lab/token-compressor

LLM ワークフロー向けの意味的なプロンプト圧縮です。意味を損なわずにトークン使用量を 40~60% 削減します。

ライセンス: MIT 必要: Ollama MCP 対応

Base76 Research Lab が開発 — 認識論的 AI アーキテクチャの研究。


ライブデモ

Intent Compiler MVP が公開されました。アイデア -> 仕様 -> 圧縮出力のフローの一部として、このプロジェクトを使用しています。


機能

token-compressor は、LLM に送信する前にプロンプトを圧縮する 2 段階のパイプラインです。

  1. LLM による圧縮 — ローカルモデル(Ollama 経由の llama3.2:1b)が、すべての条件節と否定を保ちながら、プロンプトを意味的に最小限の形に書き換えます
  2. 埋め込み検証 — 元のテキストと圧縮後のテキストの埋め込み間のコサイン類似度がしきい値(デフォルト: 0.85)を超える必要があります。超えない場合は、元のテキストを変更せずに送信します

その結果、プロンプトが短くなり、コストが下がり、意図は保たれます。

Input prompt (300 tokens)
        ↓
  LLM compresses
        ↓
  Embedding validates (cosine ≥ 0.85?)
        ↓
  Pass → compressed (120 tokens)   Fail → original (300 tokens)

設計上の重要な原則: 条件性は決して犠牲にしません。プロンプトに「Y の場合に限り X を実行する」とある場合、その制約は圧縮後も保持されます。


必要条件

  • Python 3.10+
  • ローカルで実行中の Ollama
  • 次の 2 つのモデルを取得済みであること:
ollama pull llama3.2:1b
ollama pull nomic-embed-text
  • Python の依存関係:
pip install ollama numpy

クイックスタート

from compressor import LLMCompressEmbedValidate

pipeline = LLMCompressEmbedValidate()
result = pipeline.process("Your prompt text here...")

print(result.output_text)   # compressed (or original if validation failed)
print(result.report())      # MODE / COVERAGE / TOKENS saved

結果オブジェクト:

フィールド説明
output_textLLM に送信するテキスト
modecompressed / raw_fallback / skipped
coverageコサイン類似度(0.0~1.0)
tokens_in推定入力トークン数
tokens_out推定出力トークン数
tokens_saved差分

CLI の使用方法

echo "Your long prompt here..." | python3 cli.py

出力: 圧縮後のテキストは stdout に、統計情報は stderr に出力されます。


Claude Code フック(推奨設定)

~/.claude/settings.json の hooks → UserPromptSubmit に追加します。

{
  "type": "command",
  "command": "echo \"${CLAUDE_USER_PROMPT:-}\" | python3 /path/to/token-compressor/cli.py > /tmp/compressed_prompt.txt 2>/tmp/compress.log || true"
}

これはプロンプトを送信するたびに実行され、圧縮後のバージョンを一時ファイルに書き込みます。このファイルは、2 つ目のフックまたは MCP サーバーを介してコンテキストに挿入できます。


MCP サーバー

MCP サーバーは、Claude Code および MCP 対応のあらゆるクライアントから呼び出せるツールとして、圧縮機能を公開します。

インストール:

pip install token-compressor-mcp

ツール: compress_prompt

  • 入力: text(文字列)
  • 出力: 圧縮後のテキスト + 統計情報のフッター

Claude Code の MCP 設定(~/.claude/settings.json):

{
  "mcpServers": {
    "token-compressor": {
      "command": "uvx",
      "args": ["token-compressor-mcp"]
    }
  }
}

または、ソースから実行します。

{
  "mcpServers": {
    "token-compressor": {
      "command": "python3",
      "args": ["-m", "token_compressor_mcp"],
      "cwd": "/path/to/token-compressor"
    }
  }
}

設定

pipeline = LLMCompressEmbedValidate(
    threshold=0.85,          # cosine similarity floor (lower = more aggressive)
    min_tokens=80,           # skip pipeline below this (not worth compressing)
    compress_model="llama3.2:1b",
    embed_model="nomic-embed-text",
)

仕組み

ステージ 1 — LLM による圧縮

圧縮プロンプトでは、モデルに次のことを指示します。

  • すべての条件節(if、only if、unless、when、but only)を保持する
  • すべての否定を保持する
  • 余分な語句、婉曲表現、重複を削除する
  • 元の長さの 40~60% を目標にする

ステージ 2 — 埋め込み検証

nomic-embed-text を使用して、元のテキストと圧縮後のテキストのコサイン類似度を計算します。類似度がしきい値を下回る場合、元のテキストを変更せずに返します。これにより、意味が気づかないうちに失われるのを防ぎます。


結果

スウェーデン語と英語のプロンプトを対象に、技術文と自然言語の両方でテストしました。

入力入力トークン数出力トークン数削減率
研究概要(EN)893857%
セッションの意図(SV)321844%
技術的な指示472253%
短いコマンド(<80t)——スキップ

研究の背景

このツールは、以下のアーキテクチャを実装しています。

Wikström, B. (2026). アラインメントが不確実性を低減するとき:認識論的分散の崩壊とメタ認知 AI への影響。 DOI: 10.5281/zenodo.18731535

認識論的 AI インフラストラクチャ向けツールチェーンである Base76 Research Lab の一部です。


ライセンス

MIT — Base76 Research Lab、スウェーデン

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。