mcpField
S
slimcontext-mcp-server

slimcontext-mcp-server

ローカル
github.com/agentailorAI・エージェント558 週間前に更新

slimcontext-mcp-server について

slimcontext-mcp-serverは、SlimContextのチャット履歴圧縮機能をMCPクライアント向けに提供します。トークン数による削除と、OpenAIを使った要約に対応しています。

主な機能

  1. 01トークン閾値による履歴の削除
  2. 02OpenAIによる要約生成
  3. 03システムメッセージと直近の会話を保持
  4. 04圧縮結果を構造化して返却

活用シーン

  1. 01コンテキスト上限を超える会話の短縮
  2. 02長い会話の要点を要約で保持

MCP 対応

互換クライアントに、trim_messagesとsummarize_messagesの2つのチャット履歴圧縮ツールを公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"agentailor-slimcontext": {
"command": "npx",
"args": [
"-y",
"slimcontext-mcp-server"
]
}
}
}
起動コマンドnpx -y slimcontext-mcp-server

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

パッケージ
npmslimcontext-mcp-server0.1.2

ツール

2

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
messagesarrayはい圧縮するチャットメッセージの配列
maxModelTokensnumberいいえモデルの最大トークンコンテキストウィンドウ
thresholdPercentnumberいいえ圧縮を開始する割合のしきい値(0-1)
minRecentMessagesnumberいいえ常に保持する直近メッセージの最小数

詳細

SlimContext MCP Server

SlimContext ライブラリをラップした Model Context Protocol(MCP)サーバーです。MCP 対応クライアント向けに、AI チャット履歴を圧縮するツールを提供します。

概要

SlimContext MCP Server は、強力な 2 種類の圧縮戦略を MCP ツールとして公開します。

  1. trim_messages - トークンベースの圧縮です。トークン数がしきい値を超えた場合、最も古いメッセージを削除します。
  2. summarize_messages - OpenAI を使用して簡潔な要約を作成する、AI を活用した圧縮です。

インストール

npm install -g slimcontext-mcp-server
# or
pnpm add -g slimcontext-mcp-server

開発

# Clone and setup
git clone <repository>
cd slimcontext-mcp-server
pnpm install

# Build
pnpm build

# Run in development
pnpm dev

# Type checking
pnpm typecheck

設定

MCP クライアントの設定

MCP クライアントの設定に追加します。

{
  "mcpServers": {
    "slimcontext": {
      "command": "npx",
      "args": ["-y", "slimcontext-mcp-server"]
    }
  }
}
環境変数
  • OPENAI_API_KEY:要約に使用する OpenAI API キーです(任意。ツールのパラメーターとして渡すこともできます)。

ツール

trim_messages

トークンベースのトリミング戦略を使用して、チャット履歴を圧縮します。

パラメーター:

  • messages(必須):チャットメッセージの配列
  • maxModelTokens(任意):モデルのトークンコンテキストウィンドウの最大値(デフォルト:8192)
  • thresholdPercent(任意):圧縮を開始するしきい値の割合 0~1(デフォルト:0.7)
  • minRecentMessages(任意):保持する直近のメッセージの最小数(デフォルト:2)

例:

{
  "messages": [
    { "role": "system", "content": "You are a helpful assistant." },
    { "role": "user", "content": "Hello!" },
    { "role": "assistant", "content": "Hi there! How can I help you today?" },
    { "role": "user", "content": "Tell me about AI." }
  ],
  "maxModelTokens": 4000,
  "thresholdPercent": 0.8,
  "minRecentMessages": 2
}

レスポンス:

{
  "success": true,
  "original_message_count": 4,
  "compressed_message_count": 3,
  "messages_removed": 1,
  "compression_ratio": 0.75,
  "compressed_messages": [
    { "role": "system", "content": "You are a helpful assistant." },
    { "role": "assistant", "content": "Hi there! How can I help you today?" },
    { "role": "user", "content": "Tell me about AI." }
  ]
}
summarize_messages

AI を活用した要約戦略を使用して、チャット履歴を圧縮します。

パラメーター:

  • messages(必須):チャットメッセージの配列
  • maxModelTokens(任意):モデルのトークンコンテキストウィンドウの最大値(デフォルト:8192)
  • thresholdPercent(任意):圧縮を開始するしきい値の割合 0~1(デフォルト:0.7)
  • minRecentMessages(任意):保持する直近のメッセージの最小数(デフォルト:4)
  • openaiApiKey(任意):OpenAI API キー(環境変数の OPENAI_API_KEY も使用できます)
  • openaiModel(任意):要約に使用する OpenAI モデル(デフォルト:'gpt-4o-mini')
  • customPrompt(任意):カスタムの要約プロンプト

例:

{
  "messages": [
    { "role": "system", "content": "You are a helpful assistant." },
    { "role": "user", "content": "I want to build a web scraper." },
    {
      "role": "assistant",
      "content": "I can help you build a web scraper! What programming language would you prefer?"
    },
    { "role": "user", "content": "Python please." },
    {
      "role": "assistant",
      "content": "Great choice! For Python web scraping, I recommend using requests and BeautifulSoup..."
    },
    { "role": "user", "content": "Can you show me a simple example?" }
  ],
  "maxModelTokens": 4000,
  "thresholdPercent": 0.6,
  "minRecentMessages": 2,
  "openaiModel": "gpt-4o-mini"
}

レスポンス:

{
  "success": true,
  "original_message_count": 6,
  "compressed_message_count": 4,
  "messages_removed": 2,
  "summary_generated": true,
  "compression_ratio": 0.67,
  "compressed_messages": [
    { "role": "system", "content": "You are a helpful assistant." },
    {
      "role": "system",
      "content": "The user expressed interest in building a web scraper and requested help with Python. The assistant recommended using requests and BeautifulSoup libraries for Python web scraping."
    },
    {
      "role": "assistant",
      "content": "Great choice! For Python web scraping, I recommend using requests and BeautifulSoup..."
    },
    { "role": "user", "content": "Can you show me a simple example?" }
  ]
}

メッセージ形式

どちらのツールも、SlimContext 形式のメッセージを受け取ります。

interface SlimContextMessage {
  role: 'system' | 'user' | 'assistant' | 'tool' | 'human';
  content: string;
}

エラー処理

すべてのツールは、構造化されたエラーレスポンスを返します。

{
  "success": false,
  "error": "Error message description",
  "error_type": "SlimContextError" | "OpenAIError" | "UnknownError"
}

よくあるエラーの例:

  • 要約に必要な OpenAI API キーがない
  • メッセージ形式が無効
  • OpenAI API のレート制限またはエラー
  • パラメーター値が無効

トークンの推定

SlimContext は、トークンの推定にシンプルなヒューリスティック Math.ceil(content.length / 4) + 2 を使用します。これは、ほとんどのユースケースで妥当な近似値を提供します。より正確にトークン数をカウントするには、クライアントアプリケーションでカスタムのトークン推定器を実装する必要があります。

圧縮戦略

トリミング戦略
  • すべてのシステムメッセージを保持します
  • 直近の N 件のメッセージを保持します
  • トークン数がしきい値を下回るまで、システムメッセージ以外の最も古いメッセージを削除します
  • 高速かつ決定論的です
  • 外部 API への依存はありません
要約戦略
  • すべてのシステムメッセージを保持します
  • 直近の N 件のメッセージを保持します
  • AI を使用して会話の中間部分を要約します
  • 文脈が豊かな要約を作成します
  • OpenAI API へのアクセスが必要です

ライセンス

MIT

コントリビューション

  1. リポジトリをフォークします
  2. 機能ブランチを作成します
  3. 変更を加えます
  4. 新しい機能のテストを追加します
  5. プルリクエストを送信します

関連項目

コメント

MCP は初めてですか?

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

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