Sarup について
Sarupは、Claude Codeや他のMCPクライアント向けのタイ語中心のコンテキスト圧縮MCPサーバーです。長いタイ語・英語のテキストを圧縮しつつ原文を保存してバイト単位で復元でき、Ollamaを使うモードとオフライン時の代替処理もあります。
主な機能
- 01タイ語と英語のテキスト圧縮
- 02ハッシュによる保存済み原文の取得
- 035種類の圧縮モード
- 04コードフェンスの保持とJSON圧縮
- 05大きなツール出力の自動圧縮
- 06セッションのトークン削減量の集計
活用シーン
- 01モデルのコンテキスト内にある長いツール出力を削減
- 02非可逆圧縮後に原文を復元
- 03Claude Code向けにタイ語文書を圧縮
- 04セッション全体の削減量を確認
MCP 対応
圧縮、原文取得、セッション統計のツールをMCPクライアントに提供します。Claude Code用のオプションのフックは、大きなツール出力を圧縮し、復元用に原文を保存します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 2 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| mode | enum | いいえ | 散文の圧縮戦略。'extractive'(デフォルト):オフライン TF-IDF、原文の部分抽出、約 1ms。'semantic':埋め込みの中心性を利用し、圧縮率が最良(Ollama が必要)。'abstractive':ローカル LLM による書き換え(Ollama が必要、低速)。'pipeline':semantic -> abstractive の順に実行し、最大限に削減。'auto':Ollama が起動中なら semantic、それ以外は extractive。すべてのモードで sarup_retrieve により 100% 復元可能です。Ollama またはモデルがないためにモードがフォールバックした場合、インストールすべきものを示す 'setup' フィールドが結果に含まれます。extractive | semantic | abstractive | pipeline | auto |
| query | string | いいえ | 任意のコンテキストクエリ。クエリに関連する文には高いスコアが付与され、保持されやすくなります。 |
| content | string | はい | 圧縮する内容 |
| lossless | boolean | いいえ | 可逆変換(空白文字/JSON の圧縮)のみを適用します。デフォルトは false です。 |
| target_ratio | number | いいえ | 保持する散文の割合(0.3–0.7)。デフォルトは 0.5。 |
詳細
สรุป · Sarup
Claude Code 向けのタイ語優先コンテキスト圧縮。 タイ語を実際に圧縮し(トークン数を50~78%削減)、元データをすべてキャッシュするMCPサーバーです。データが失われることはありません。重要な指標も測定しています。Claudeが引き続き正しく回答できるかどうかです。
สรุป は「要約する」という意味です。Headroomは空白区切りのトークナイザーではタイ語の単語境界を見つけられないため、タイ語を
noop(削減率0%)に回します。SarupはPyThaiNLPのセグメンテーションを使うため、英語だけでなくタイ語も圧縮できます。また、元データをすべてキャッシュするため、データが失われることはありません。
目次
- 主な特長
- 安全性の理由 — 2段階の保証
- 仕組み
- ツール
- 圧縮モード
- 測定結果
- 使用例
- インストール
- Claude Code への登録
- 自動圧縮フック
- プライバシーとデータ
- 設定
- プロジェクト構成
- 技術スタックと手法
- テスト
- ロードマップ
- ライセンス
主な特長
- 🇹🇭 本格的なタイ語圧縮 — 空白ではなく、PyThaiNLPの
newmm単語セグメンテーションを使用します。 - ♻️ 保証付きの可逆性 — 圧縮のたびに元データをキャッシュします。
verified: trueはバイト単位で完全に元に戻せることを証明します。 - 🎚️ 5つのモード:オフラインで1ミリ秒のTF-IDFから、削減率78%のカスケードまで対応します。
- 🧠 オプションのローカルLLM — Ollamaによる埋め込みと書き換えに対応し、オフライン時には自動でフォールバックします。
- 📏 正確な指標:実行時には実際のトークナイザー(tiktoken)を使用します。公開数値にはClaude独自のトークナイザーとタイ語QA評価を使用しています(Claudeは引き続き正しく回答できるのか?)。
- 🕳️ 欠落箇所を明示:文が省略された箇所には
[…]を付けます。これにより、Claudeは近くにある事実を回答と誤認せず、検索して情報を取得できます。 - 🔌 コンテンツを認識 — JSONの圧縮、ログの重複排除、コードフェンスの逐語的な保持を標準で備えています。
- 🛟 Claudeの動作を妨げません — これはAPIプロキシではなくMCPツールです。サーバーが停止してもツールが使えなくなるだけで、Claudeはそのまま動作します。
安全性の理由 — 2段階の保証
| 階層 | 内容 | 保証 |
|---|---|---|
| 圧縮ビュー | モデルが処理する圧縮テキスト | 損失あり · 小容量 · 低コスト |
| 取得ストア | 安定したハッシュをキーとする元データ | 損失なし · 復元可能 |
元データは常に sarup_retrieve(hash) で取得できるため、積極的な非可逆圧縮も安全です。この仕組みによって、「最大限の削減」と「100%の精度」が両立します。それぞれ別の階層で実現されています。
仕組み
2つの入口から1つのエンジンに入力します。モデルが読む低コストな圧縮ビューと、元データをバイト単位で完全に復元できる取得ストアです。
flowchart TD
M["🧑 Manual<br/>sarup_compress()"]:::entry --> R
A["⚙️ Automatic<br/>PostToolUse hook<br/>(Read · Bash · Grep)"]:::entry --> R
R{"Sarup compress<br/>extractive · semantic · abstractive · pipeline"}:::engine
R -- "compressed view<br/>50–78% fewer tokens" --> V["📄 Model context"]:::lossy
R -. "cache original" .-> S[("🗄️ Retrieval store<br/>hash → original")]:::lossless
V -. "need full detail?" .-> RET["🔑 sarup_retrieve(hash)"]:::lossless
RET --> S
S == "byte-for-byte ✓" ==> V
classDef entry fill:#e0e7ff,stroke:#6366f1,color:#111
classDef engine fill:#fde68a,stroke:#d97706,color:#111
classDef lossy fill:#fef3c7,stroke:#f59e0b,color:#111
classDef lossless fill:#bbf7d0,stroke:#16a34a,color:#111
- 手動 — モデル自身が
sarup_compress/sarup_retrieveを呼び出します。 - 自動 — フックが大きなツール出力を検出し、元データを
SARUP_DB_PATHにキャッシュして、圧縮ビューと取得用ハッシュに置き換えます。ソースコードは処理をスキップし、小さな出力はそのまま通します。
ツール
| ツール | 用途 |
|---|---|
sarup_compress(content, target_ratio?, lossless?, query?, mode?) | 圧縮します。圧縮後のテキスト、ハッシュ、トークン指標、verified、token_methodを返します。 |
sarup_retrieve(hash) | 元のコンテンツをバイト単位で完全に復元します。 |
sarup_stats() | セッションで累積した削減量です。 |
sarup_compress の引数
| 引数 | 型 | デフォルト | 意味 |
|---|---|---|---|
content | string | — | 圧縮するテキストです(必須)。 |
target_ratio | number | 0.5 | 保持する文章の割合(0.1~0.9)です。 |
lossless | boolean | false | 可逆変換(空白文字/JSON のコンパクト化)のみ適用します。 |
query | string | "" | テキストから必要な情報です。一致する文は保持されます。分かっている場合は常に指定してください。同じサイズで QA 評価が 69% から 100% に向上しました。 |
mode | string | extractive | 以下のモードを参照してください。 |
圧縮モード
| モード | 方法 | Ollama が必要 | 削減率¹ | 速度¹ | 出力 |
|---|---|---|---|---|---|
extractive (デフォルト) | TF-IDF スコアリング + 事実の加点 + n-gram 重複排除 | いいえ | 52.7% | ~1 ms | 原文の一部 |
semantic | 埋め込みの中心性 + コサイン類似度による重複排除 | はい | 63.8% | ~2 s | 原文の一部 |
abstractive | ローカル LLM による書き換え | はい | 44.4% | ~8 s | 言い換え |
pipeline | カスケード:semantic → abstractive | はい | 78.2% | ~6 s | 言い換え |
auto | Ollama が起動中なら semantic、そうでなければ extractive | 任意 | 63.8% | ~2 s | 一部 |
¹ 10 文から成るタイ語の段落(522 トークン)で測定。書き換えモデルは gemma4:12b です。すべてのモードでストアを使って 100% 復元可能です。Ollama モードはバックエンド停止時に適切に機能を低下させ、extractive に切り替わります。(gemma4:e4b:pipeline 82.2%、2026 年 6 月、gemma3:12b:88.1%。)
Extractive と semantic の出力は、入力文の原文そのままの一部です。文が削除された箇所には、独立した行に […] が表示されます。具体的な情報(数字、タイ語の数字、X-Api-Key などの識別子)を含む文は、一般的な記述より高いスコアになります。質問ではそうした情報が求められるためです。
測定結果
$ .\.venv\Scripts\python.exe bench\benchmark.py
sample before after savings verify
Thai prose 522 247 52.7% OK
Thai prose (aggressive) 522 189 63.8% OK
English prose 105 60 42.9% OK
JSON (lossless) 67 44 34.3% OK
Logs 563 300 46.7% OK
TOTAL 1779 840 52.8% ALL OK → 100% recoverable
Mode comparison (Thai prose, 522 tok):
extractive 52.7% (1ms) · semantic 63.8% (2.1s) · auto 63.8% (2.1s)
abstractive 44.4% (8.3s) · pipeline 78.2% (5.8s) ← gemma4:12b
トークン数は tiktoken の cl100k_base を使用しています。これは OpenAI のトークナイザーであり、特にタイ語では Claude のトークン数を過小評価します。bench\benchmark.py --claude を使うと、Claude 独自のトークナイザー(Anthropic の count_tokens。API キーが必要)による列が追加されます。
Claudeは今でも正しく答えられるのでしょうか?
トークン数を減らしても、事実が保たれなければ意味がありません。bench\eval_qa.py は8件のタイ語文書
(インシデント報告書、会議メモ、APIドキュメント、人事ポリシー、製品仕様書、サポートチャット、README、営業報告書。半分は1文ごとの行、半分は密な段落)を圧縮し、圧縮後の内容だけをもとにClaude Opus 5.5に32問を尋ね、決定論的に採点します。
$ .\.venv\Scripts\python.exe bench\eval_qa.py # uses your local `claude` login
mode claude tok saved correct abstain wrong
──────────────────────────────────────────────────────────────
original 4601 0.0% 100% 0% 0
extractive:0.5 3204 30.4% 69% 31% 0
extractive:0.3 1969 57.2% 44% 56% 0
semantic:0.5 3214 30.1% 62% 38% 0
extractive:0.5+q 3207 30.3% 100% 0% 0
abstractive:0.5 2697 41.6% 91% 9% 0 ← gemma4:12b
pipeline:0.5 1854 59.8% 59% 41% 0 ← gemma4:12b
(gemma4:e4bも同じスコアでした:抽象化91%、パイプライン59%、誤答0。)
- 誤答 = 0 は安全性を示す性質です。事実が削除されていた場合、Claudeはその旨を伝え(回答を保留)、実際の利用では
sarup_retrieveを呼び出します。残された情報から推測することはありませんでした。 - 回答を保留 することが、盲目的な圧縮の実質的なコストです。具体的な質問の約3分の1では、
0.5で検索の往復が必要です。探している内容がわかっている場合は、queryとして渡してください(+q行)。 - 抽象化 はトークンあたりの事実を最も多く保持します(42%削減で91%)。書き換えなら、単語を削りながら数字をすべて残せる一方、抽出では文全体を削るしかないためです。文書ごとに数秒かかるので、フックではなく
sarup_compress経由で使用してください。 - どちらの評価でも、言い換えによって事実が誤った内容に変わることはありませんでした。しかし、8件の文書だけでは、書き換えでそのようなことが決して起きないとは証明できません。そのため、元の文書には
sarup_retrieveを1回呼び出すだけでアクセスできる状態にしています。 - ここでのトークン数はClaude自身の数値(回答呼び出しの使用量から取得)で、約40トークンの
[sarup: …]フッターも含みます。短い(約570トークンの)文書ではこのフッターの比重が大きくなりますが、フックが実際に圧縮する大きな出力では影響が薄れます。 - 8件の文書はサンプルとして少なく、モード間の数問程度の差はノイズです。
この評価をきっかけに修正する前(2026年10月)は、密なタイ語の段落はまったく圧縮されませんでした(文分割用のモデルがインストールされていませんでした)。extractive:0.5 は59%の質問に回答しましたが、自信のある誤答が1件あり、semantic:0.5 は47%でした。
使用例
タイ語の段落に対する実際の sarup_compress 呼び出し(mode="auto"、Ollamaが起動している場合 → semantic):
// → sarup_compress(content="…518-token Thai paragraph…", mode="auto")
{
"compressed": "จุดเด่นที่สำคัญที่สุดคือมันไม่มีทางทำให้ Claude พัง…",
"hash": "caa568140bec0ff734937cf5",
"original_tokens": 518,
"compressed_tokens": 154,
"tokens_saved": 364,
"savings_percent": 70.3,
"transforms": ["semantic_extractive", "embeddings", "thai"],
"lossy": true,
"verified": true, // round-trip proven byte-for-byte
"token_method": "tiktoken:cl100k_base"
}
モデルは154トークンのビューで処理を続けます。元の518トークンの全文には、呼び出し1回でアクセスできます。
// → sarup_retrieve(hash="caa568140bec0ff734937cf5")
{ "content": "…the exact original text, restored byte-for-byte…" }
インストール
Claude Codeプラグインとして(最も簡単)
uv が必要です。このプラグインは uvx 経由でSarupを実行し、初回使用時にPythonと依存関係を取得します。クローンする必要はありません。Claude Codeで次を実行してください。
/plugin marketplace add PHUICMT/sarup
/plugin install sarup@sarup
これにより、MCP サーバー、自動圧縮フック、/sarup:sarup-setup スキルがインストールされます。キャッシュはプラグインのデータディレクトリに保存されるため、プラグインを更新しても保持されます。初回起動時は、uvx が環境を構築するため数秒かかります。代わりにシェルから実行する場合:
claude plugin marketplace add PHUICMT/sarup、続けて claude plugin install sarup@sarup を実行します。
Ollamaは任意です。Ollamaなしでもすべてオフラインで動作します。フックとデフォルトの extractive モードはOllamaにアクセスせず、semantic、abstractive、pipeline を指定した場合は抽出的な方法にフォールバックし、何をインストールすればよいかを示す setup フィールドを返します。sarup_stats で利用可能なものを確認でき、/sarup:sarup-setup でOllamaと以下のモデルの追加手順を確認できます。
PyPIから(任意のMCPクライアント)
このパッケージはPyPI上の sarupです。uvを使えば手動でインストールする必要はありません。任意のMCPクライアントから uvx sarup を指定してください。
{
"mcpServers": {
"sarup": {
"command": "uvx",
"args": ["sarup"],
"env": { "SARUP_DB_PATH": "/home/me/.sarup-cache.db" }
}
}
}
プラグインを使わずにClaude Codeで利用する場合:claude mcp add sarup -s user -- uvx sarup。フックは uvx --from sarup sarup-hook --db <same file as SARUP_DB_PATH> です。pip install sarup でもインストールでき、sarup と sarup-hook が PATH に追加されます。
クローンから
ワンコマンド(仮想環境を作成し、すべてをインストールして、すべてのプロジェクトで MCP サーバーを登録します。何度実行しても安全です):
.\scripts\setup.ps1 -All # Windows (-All also adds the hook, the /sarup-setup skill, pulls Ollama models)
./scripts/setup.sh --all # Linux / WSL / macOS
ヒント:
-All/--allを指定すると、グローバルな/sarup-setupスキルがインストールされます。そのため、別のマシンでは Claude Code で/sarup-setupと入力するだけで、インストール手順が案内されます。(または、scripts/install-skill.ps1/install-skill.shを単独で実行してください。)
アンインストールも同様に簡単です(Sarup が追加したものだけを削除します。-Purge/--purge を指定すると、仮想環境とキャッシュも削除されます):
.\scripts\uninstall.ps1 # Windows
./scripts/uninstall.sh # Linux / WSL / macOS
手動インストール
py -3.11 -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
オプションのローカル LLM モード(semantic/abstractive/pipeline)には、Ollama が必要です:
ollama pull nomic-embed-text # embeddings → semantic mode
ollama pull gemma4:12b # rewrite → abstractive / pipeline, 7.6 GB (or gemma4:e4b / gemma3:12b)
Claude Code への登録
ワンコマンドセットアップ(推奨)。 このマシンのパスを検出し、Ollama を確認して(最適なモードとモデルを選択)、既存の設定を上書きせずに .mcp.json/.claude/settings.json に統合します(最初に .bak が作成されます):
.\.venv\Scripts\python.exe scripts\install.py --with-hook --pull
- Ollama がありませんか?オフラインの
extractiveモードが設定されます。それでもすべての機能を利用できます。 - Ollama が起動していますか?
sarup_compress用に、nomic-embed-text(semantic)と、インストール済みの中で最適な書き換えモデル(gemma4:12b→gemma4:e4b→gemma3:12b→qwen3)が自動選択されます。フックはどちらの場合もextractiveのままです(すべてのツール呼び出しで実行されます)。不足しているモデルは--pullで取得できます。 - 何度実行しても安全です。再実行できます。
--globalを指定すると、~/.claudeに書き込みます。
手動 — または、MCP 設定(例:.mcp.json や ~/.claude.json)に自分で追加してください。<SARUP_DIR> は、このリポジトリをクローンした絶対パスに置き換えます(上記のインストーラーで自動入力されます):
{
"mcpServers": {
"sarup": {
"command": "<SARUP_DIR>/.venv/Scripts/python.exe",
"args": ["-m", "sarup.server"],
"env": { "SARUP_DB_PATH": "<SARUP_DIR>/.sarup-cache.db" }
}
}
}
Linux/macOS では、インタープリターは
<SARUP_DIR>/.venv/bin/pythonです。
または、stdio 経由で直接実行します:
.\.venv\Scripts\python.exe -m sarup.server
自動圧縮フック
手動でのツール呼び出しをすべて省略できます。PostToolUse フックをインストールすると、大きな Read/Bash/Grep の出力がコンテキストに入る前に圧縮され、元の内容は取得用にキャッシュされます。安全のため、ソースコードの読み取りはスキップされます。セットアップの詳細は hooks/README.md をご覧ください。
2026 年 10 月に修正されました。 以前のバージョンでは、圧縮されたテキストを通常の文字列として返していました。 Claude Code が受け付けるのは、ツール本来の形式に従った
updatedToolOutput(Bash の場合は{stdout, stderr, …}、Read の場合は{type, file: {content, …}})だけです。通常の文字列は黙って破棄されるため、どの環境でもフックが適用されていませんでした。現在は各ツールの形式が保持されます。CLI(2.1.289)で検証済みです。モデルには圧縮された内容と取得用ハッシュが渡されます。お使いのビルドでフックの動作を確認するには、SARUP_HOOK_LOGにファイルパスを設定してください(呼び出しごとに JSON が 1 行記録されます)。
プラグインがこの設定を行います。クローンから設定する場合は、<SARUP_DIR> をクローン先のパスに置き換えるか、install.py --with-hook を実行してください:
{
"hooks": {
"PostToolUse": [
{ "matcher": "Read|Bash|Grep",
"hooks": [{ "type": "command",
"command": "<SARUP_DIR>/.venv/Scripts/sarup-hook --db <SARUP_DIR>/.sarup-cache.db" }] }
]
}
}
プライバシーとデータ
復元を保証するため、Sarup は元の内容をストアにキャッシュします。次の 2 点にご注意ください。
SARUP_DB_PATHを設定すると、元の内容は暗号化されず平文でその SQLite ファイルに書き込まれます。圧縮した内容を保存したキャッシュとして扱ってください。- 秘密情報を含むツール出力(例:
.envのダンプやログ内の認証情報)を圧縮すると、それらもキャッシュに保存されます。自動フックはソースコード/設定ファイルの読み取りをスキップしますが、Bashの出力は対象になります。何を処理するか確認してください。
*.db は Git の対象外に設定されているため、キャッシュがコミットされることはありません。ディスク上にデータを一切残したくない場合は、SARUP_DB_PATH を未設定のままにしてください(メモリのみで動作します。MCP サーバーの再起動時にキャッシュは失われ、フックによる置き換えも行われません。フックのドキュメントをご覧ください)。
設定
| 変数 | デフォルト | 意味 |
|---|---|---|
SARUP_DB_PATH | (メモリ内) | 永続的なプロセス間ストア用の SQLite パスです。フックによる取得には必須です。 |
OLLAMA_HOST | http://localhost:11434 | Ollama のエンドポイントです。 |
SARUP_ABSTRACTIVE_MODEL | インストール済みの最適なモデル | 抽象化/パイプライン書き換え用のモデルです。未設定の場合、インストール済みの gemma4:12b、gemma4:e4b、gemma3:12b、qwen3 のうち最初のモデルが使われます。 |
SARUP_EMBED_MODEL | nomic-embed-text | セマンティック埋め込み用のモデルです。 |
SARUP_HOOK_MODE | extractive | フックの圧縮モードです。auto/semantic では Ollama が必要で、ツール呼び出しあたり約 2 秒かかります。 |
SARUP_HOOK_MIN_TOKENS | 400 | フックは、少なくともこの数のトークンを含む出力のみを圧縮します(言語間で公平になるよう、トークン数に基づきます)。 |
SARUP_HOOK_LOG | (オフ) | フック呼び出しごとに 1 行の JSON(イベント、ツール、サイズ、置換の有無)を追記するファイルです。 |
プロジェクト構成
sarup/
├── src/sarup/
│ ├── server.py # MCP stdio server — 3 tools
│ ├── compressor.py # router + modes (extractive/semantic/abstractive/pipeline/auto)
│ ├── thai.py # PyThaiNLP tokenization, sentence split, TF-IDF
│ ├── semantic.py # embedding centrality + cosine dedup
│ ├── llm.py # optional Ollama backend (generate + embed)
│ ├── tokens.py # real token counting (tiktoken)
│ └── store.py # CCR store: hash → original (memory + SQLite)
├── hooks/
│ ├── sarup_hook.py # PostToolUse auto-compression hook
│ └── README.md # hook install guide
├── bench/benchmark.py # before/after measurement
├── tests/ # test_thai, test_mcp, test_hook, ...
├── README.md
└── STACK.md # full stack + techniques
技術スタックと手法
Python 3.11 · MCP · PyThaiNLP newmm · tiktoken · Ollama(任意)· SQLite · hatchling · pytest。
各モードの手法(TF-IDF スコアリング、埋め込みの中心性、カスケードパイプライン、コンテンツルーティング、グレースフルデグラデーション)については、STACK.md に記載されています。
テスト
.\.venv\Scripts\python.exe -m pytest tests/ -q
テストスイートでは、タイ語 NLP、MCP ツールのコントラクト、すべてのモード(Ollama へのフォールバック経路を含む)、ラウンドトリップ検証の保証、自動圧縮フック(プロセス間の取得を含む)を網羅しています。
品質はモデルが必要なため、別途測定します。bench\eval_qa.py を実行してください(Claude は今でも正しく答えられる?を参照)。デフォルトではローカルの claude CLI で実行されます。Anthropic API キーがある場合は --backend api を指定できます。--dry-run と --limit を使うと、手軽に確認できます。全件実行すると Claude を約 170 回呼び出します。
リリース
pyproject.tomlとserver.json(その中の両方の箇所)のversionを更新します。- 対応するタグをプッシュします:
git tag v0.2.0 && git push origin v0.2.0。publishワークフローがテスト、ビルドを行い、トークンなしの信頼された公開を通じて PyPI にアップロードします。 - MCP レジストリにリリースを登録します:
mcp-publisher login githubを実行してから、mcp-publisher publishを実行します(server.jsonを読み込みます。この README の先頭にあるmcp-nameコメントは、PyPI パッケージがその名前に属することを証明します)。
プラグインにはこれらの作業は不要です。リポジトリからインストールされ、コミットごとに更新されます。
ロードマップ
- QA 評価を 8 件のドキュメント以上に拡大する(長いツール出力、ログ、コードの混在など)。その結果を根拠に
auto→ semantic などのデフォルトを変更する前に実施します。 -
mcp2.x に移行する(現時点では<2に固定しています。2.x ではServer.list_toolsが削除されました)。 - Typhoon 2.1 の抽象化を任意で追加する(Ollama のテンプレート修正待ち)。
- コンテンツごとに
target_ratioを適応させる。 - PyPI パッケージ (
sarup) と MCP レジストリの掲載情報(io.github.PHUICMT/sarup)を公開済みです。 - Claude Code プラグインとしてインストール可能です。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。