kitbag-mcp について
Kitbag MCPは、ドキュメント変換、OCR、ウェブスクレイピング、データ処理、開発者向けツールを一つにまとめたローカルMCPサーバーです。モジュールまたは個別ツールを選択でき、APIキーは不要です。
主な機能
- 01PDFの解析と変換
- 02ウェブスクレイピングとRSS解析
- 03画像処理とローカルOCR
- 04CSV、JSON、XML、YAMLの変換
- 05開発向けフォーマットと検証
- 06モジュールまたはツールの選択
活用シーン
- 01PDFからテキストや表を抽出
- 02ウェブページをMarkdownに変換
- 03一般的なデータ形式を変換・比較
- 04画像を処理して文字を認識
MCP 対応
ローカルプロセスが標準MCPプロトコルでクライアントに接続し、有効化したモジュールとツールのみを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
51掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| text | string | はい | チャンク分割する入力テキスト。 |
| strategy | enum | いいえ | チャンク分割方式:'character'、'word'、'sentence'、または 'paragraph'。デフォルトは 'paragraph' です。character | word | sentence | paragraph |
| chunkSize | number | いいえ | 各チャンクの最大文字数。デフォルトは 1000 です。 |
| chunkOverlap | number | いいえ | 連続するチャンク間で重複させる文字数。デフォルトは 200 です。 |
詳細
Kitbag MCP は、厳選された 50 以上の実用性の高いユーティリティツール(ドキュメント変換ツール、OCR プロセッサー、ウェブスクレイパー、データフォーマッター、AI 開発者向けユーティリティなど)をひとつにまとめた、オープンソースの Model Context Protocol サーバーです。
用途別の MCP サーバーをいくつもインストール、設定し、ホスティング費用を払う代わりに、Kitbag MCP を一度インストールするだけで、必要なモジュールだけを選んで有効化できます。すべてお使いのマシン上で実行されるため、ホスティング費用はゼロ、API キー不要、サーバーのセットアップも不要です。
📖 目次
クリックして展開
🚀 クイックスタート(設定不要)
npx を使ってすぐに実行できます(Node.js が必要です):
npx kitbag-mcp
特定のモジュールを公開する(LLM のコンテキストトークンを節約)
AI エージェントがツールの選択肢に圧倒されないよう、必要なものだけを有効にします。
# Enable PDF and Web scraping modules only
npx kitbag-mcp --enabled-modules pdf,web
⚙️ 対応クライアントのセットアップ
1. Claude Desktop
claude_desktop_config.json に次のエントリを追加します。
{
"mcpServers": {
"kitbag-mcp": {
"command": "npx",
"args": [
"-y",
"kitbag-mcp",
"--enabled-modules",
"pdf,web,image,data,utility,ai"
]
}
}
}
2. Cursor
- Settings → Beta Features → MCP に移動します。
- + Add New MCP Server をクリックします。
- 次のように設定します。
- Name:
Kitbag MCP - Type:
stdio - Command:
npx -y kitbag-mcp --enabled-modules pdf,web,data,utility
- Name:
3. Windsurf
mcp_config.json に次のエントリを追加します。
{
"mcpServers": {
"kitbag-mcp": {
"command": "npx",
"args": [
"-y",
"kitbag-mcp"
],
"env": {
"KITBAG_ENABLED_MODULES": "pdf,web,data,utility"
}
}
}
}
🎛️ 設定フラグと環境変数
Kitbag MCP は、CLI フラグ、環境変数、または JSON 設定ファイルを使って設定できます。ワークフローに合った方法をお選びください。
| 設定方法 | 使用例 |
|---|---|
| CLI フラグ | --enabled-modules pdf,web または --enabled-tools utility.qr_generate |
| 環境変数 | KITBAG_ENABLED_MODULES=pdf,web または KITBAG_ENABLED_TOOLS=utility.qr_generate |
| JSON 設定 | 現在の作業ディレクトリにある kitbag-config.json ファイル、または --config /path/to/config.json を使います |
kitbag-config.json のスキーマ:
{
"enabledModules": ["pdf", "web", "image", "data", "utility", "ai", "developer"],
"enabledTools": [],
"defaultTimeoutMs": 30000,
"maxPayloadSizeBytes": 52428800
}
🗺️ ツールカテゴリ一覧
| カテゴリ | プレフィックス | ツール数 | 主な用途 |
|---|---|---|---|
pdf.* | 6 | 解析、変換、結合、分割 | |
| 🌐 Web | web.* | 7 | スクレイピング、フィード、サイトマップ、DNS |
| 📸 画像と OCR | image.* | 5 | サイズ変更、圧縮、OCR、EXIF |
| 📊 データ | data.* | 8 | CSV / JSON / XML / YAML の変換 |
| 💻 開発者向け | developer.* | 11 | フォーマット、リンティング、差分確認、デコード |
| 🛠️ ユーティリティ | utility.* | 12 | 暗号、QR、ネットワーク、アーカイブ |
| 🧠 AI | ai.* | 1 | LLM への取り込み用のテキスト分割 |
📚 ツール一覧
📄 PDF ツール(pdf.*)
高性能なローカル PDF パーサーおよび操作ツールです。
| ツール名 | 説明 | エージェントへのプロンプト例 |
|---|---|---|
pdf.convert_to_text | PDF ドキュメントからプレーンテキストを抽出します。 | 「reports/invoice.pdf からテキストを抽出して」 |
pdf.convert_to_markdown | PDF を解析し、読みやすい Markdown に整形します。 | 「guide.pdf のレイアウトを Markdown に変換して」 |
pdf.extract_images | PDF 内に埋め込まれた画像素材を抽出します。 | 「slide_deck.pdf からすべての画像を抽出して」 |
pdf.extract_tables | PDF のページから構造化された表データを抽出します。 | 「financial_report.pdf からすべての表を取り出して」 |
pdf.merge | 複数の PDF ファイルを指定した順序で結合します。 | 「doc1.pdf と doc2.pdf を 1 つのファイルに結合して」 |
pdf.split | PDF から指定したページ範囲を分割します。 | 「main_guide.pdf の 1〜3 ページを取り出して」 |
🌐 Web スクレイピングとネットワーキング(web.*)
Web ドキュメントを生の状態で扱い、ネットワーキングシステムにクエリを実行します。
| ツール名 | 説明 | エージェントプロンプトの例 |
|---|---|---|
web.to_markdown | Web ページをスクレイピングし、余分な要素を取り除いて Markdown に変換します。 | 「https://example.com/blog の記事を Markdown に変換してください」 |
web.extract_metadata | タイトル、説明、OG タグ、JSON-LD データを抽出します。 | 「URL https://news.ycombinator.com のメタデータを取得してください」 |
web.extract_links | Web ページをスクレイピングし、内部リンクと外部リンクを一覧表示します。 | 「AI の Wikipedia ページにある外部リンクをすべて見つけてください」 |
web.rss_parser | RSS または Atom フィードの XML URL を解析して JSON に変換します。 | 「https://github.blog/feed/ から最新のフィード項目を取得してください」 |
web.sitemap_generator | sitemap.xml の URL を取得して解析し、すべての URL を抽出します。 | 「google.com のサイトマップにある URL をすべて取得してください」 |
web.dns_lookup | DNS 名前解決(A、AAAA、MX、TXT など)を実行します。 | 「ドメイン gmail.com の MX レコードを検索してください」 |
web.youtube_transcript | タイムスタンプ付きでテキストの文字起こしと字幕を抽出します。 | 「https://www.youtube.com/watch?v=dQw4w9 の文字起こしを取得してください」 |
📸 画像と OCR ツール(image.*)
画像を操作し、テキストをローカルで抽出します。
| ツール名 | 説明 | エージェントプロンプトの例 |
|---|---|---|
image.ocr | Tesseract OCR を使用して、画像からテキストをローカルで抽出します。 | 「screenshot.png からテキストを抽出してください」 |
image.resize | 画像のサイズ(幅と高さ)を変更します。 | 「avatar.png を 200x200 ピクセルにサイズ変更してください」 |
image.compress | 独自の品質設定で画像ファイルのサイズを圧縮します。 | 「banner.jpg を品質 80% で圧縮してください」 |
image.convert_format | 画像を形式間(PNG、JPEG、WebP など)で変換します。 | 「logo.png を WebP 形式に変換してください」 |
image.exif_metadata | 画像ファイルから EXIF のカメラ情報と位置情報のメタデータを抽出します。 | 「photo.jpg の GPS 座標とカメラモデルを表示してください」 |
📊 データ変換(data.*)
標準的なデータ形式間の変換を高速かつオフラインで行います。
| ツール名 | 説明 | エージェントプロンプトの例 |
|---|---|---|
data.csv_to_json | CSV ファイルまたは生テキストを JSON に変換します。 | 「users.csv を解析して JSON として返してください」 |
data.json_to_csv | オブジェクトの JSON 配列を CSV 出力に変換します。 | 「このユーザー配列を CSV テーブルに変換してください」 |
data.xml_to_json | XML ドキュメントを構造化された JSON オブジェクトに変換します。 | 「この設定 XML テキストを JSON に変換してください」 |
data.json_to_xml | JSON オブジェクトを整った XML 出力に変換します。 | 「この JSON オブジェクトを XML タグ形式でエクスポートしてください」 |
data.yaml_to_json | YAML ドキュメントを JSON に変換します。 | 「Kubernetes の設定 YAML を JSON に変換してください」 |
data.json_to_yaml | JSON オブジェクトを整った YAML 形式に変換します。 | 「このデータベースの JSON ブロックを YAML 形式にしてください」 |
data.deduplicate | 指定したキーに基づいて、JSON オブジェクトの配列から重複を取り除きます。 | 「このユーザーオブジェクトのリストから、ID に基づいて重複を削除してください」 |
data.diff_arrays | 2 つの JSON 配列を比較して差分を一覧表示します。 | 「配列 A と B を比較して、追加と削除を表示してください」 |
💻 開発者向けユーティリティ(developer.*)
開発者向けの標準フォーマット、検証、レイアウトツールです。
| ツール名 | 説明 | エージェントへのプロンプト例 |
|---|---|---|
developer.json_formatter | カスタムのインデントで JSON 文字列を整形し、見やすくします。 | 「この JSON 文字列をインデント幅 4 のスペースで整形してください」 |
developer.jwt_decoder | JWT トークンをデコードして、ペイロードやヘッダーのクレームを読み取ります。 | 「この JWT トークンをデコードしてください:eyJhbGciOiJI...」 |
developer.sql_formatter | 複数のデータベース方言に対応して SQL 文字列を整形します。 | 「この乱雑な SELECT クエリを PostgreSQL 用に整形してください」 |
developer.mermaid_generate | Mermaid ダイアグラム(フローチャート、シーケンス図など)を作成します。 | 「このユーザーフローを表すフローチャートを生成してください」 |
developer.openapi_parser | OpenAPI/Swagger 仕様ファイルを解析し、整形します。 | 「この openapi.yaml のエンドポイントとリクエストスキーマを一覧表示してください」 |
developer.regex_tester | テキストに対する正規表現の一致をテストします。 | 「このメールアドレス用の正規表現が [email protected] に一致するかテストしてください」 |
developer.cron_parser | Cron 式を解析し、次回以降の実行時刻を一覧表示します。 | 「Cron ジョブ '0 9 * * 1-5' の次回実行時刻を教えてください」 |
developer.diff_files | テキストファイル間の行の差分を表示します。 | 「fileA.txt と fileB.txt の差分を表示してください」 |
developer.diff_json | JSON スキーマ間の差分を表示します。 | 「config1.json と config2.json の構造上の変更点を強調表示してください」 |
developer.code_detector | プログラミング言語と構文構造を検出します。 | 「このコードは何のプログラミング言語で書かれていますか?」 |
developer.markdown_lint | Markdown ファイルの書式をチェックし、検証します。 | 「index.md のスタイルエラーや行末の空白を見つけてください」 |
🛠️ ユーティリティツール(utility.*)
システム、ネットワーク、暗号化のヘルパー関数です。
| ツール名 | 説明 | エージェントへのプロンプト例 |
|---|---|---|
utility.qr_generate | QR コードをファイルまたは base64 Data URL として生成します。 | 「https://github.com を指す QR コードを作成してください」 |
utility.qr_read | ファイルまたはストリームから QR コードを読み取り、デコードします。 | 「code.png 内の QR コードには何が書かれていますか?」 |
utility.base64_encode | 文字列やファイルを base64 形式に変換します。 | 「文字列 'Hello World' を base64 にエンコードしてください」 |
utility.base64_decode | base64 文字列をデコードしてテキストに戻します。 | 「'SGVsbG8gV29ybGQ=' をデコードしてください」 |
utility.uuid_generate | 安全な UUID(v4/v1)または安全なパスワードを生成します。 | 「長さ 16 の安全なパスワードを生成してください」 |
utility.file_hash | テキストやデータの md5、sha1、sha256 ハッシュを計算します。 | 「この文字列の sha256 ハッシュを計算してください」 |
utility.email_validate | メールアドレスの構文を検証し、MX レコードを確認します。 | 「[email protected] に有効な MX レコードがあるか確認してください」 |
utility.ssl_check | 任意のドメインの証明書の有効期限と情報を照会します。 | 「google.com の SSL 証明書の有効期限を確認してください」 |
utility.unit_convert | 物理単位やデータ単位間で値を変換します。 | 「1024 メガバイトをギガバイトに変換してください」 |
utility.url_parser | URL をプロトコル、ドメイン、パラメーターなどに分解します。 | 「この検索クエリの URL を構成要素に分解してください」 |
utility.zip_create | ファイルやフォルダーを単一の ZIP アーカイブに圧縮します。 | 「source/ と assets/ を workspace.zip に圧縮してください」 |
utility.zip_extract | ZIP アーカイブを指定先のフォルダーに展開します。 | 「archive.zip のファイルを build_dir/ に展開してください」 |
🧠 AI チャンカー(ai.*)
取り込み用に、大きなテキスト構造を動的に分割します。
| ツール名 | 説明 | エージェントへのプロンプト例 |
|---|---|---|
ai.text_chunker | 段落、文、単語の方式で長いテキストをチャンクに分割します。 | 「このテキスト文書を、重複部分を 50 文字として 500 文字単位に分割してください」 |
🏗️ 仕組み
flowchart LR
A[AI Agent / Client] -->|MCP Protocol| B(Kitbag MCP Server)
B --> C{Enabled Modules}
C --> D[📄 pdf.*]
C --> E[🌐 web.*]
C --> F[📸 image.*]
C --> G[📊 data.*]
C --> H[💻 developer.*]
C --> I[🛠️ utility.*]
C --> J[🧠 ai.*]
D & E & F & G & H & I & J --> K[Local Execution<br/>No External API Calls]
K --> A
Kitbag MCP は単一のローカルプロセスとして動作します。AI クライアントは標準の MCP プロトコルを介して接続し、有効にしたモジュールだけがツールとして公開されるため、トークンの使用量を抑え、ワークフローを高速かつプライベートに保てます。
🛠️ ローカル開発とコントリビューション
各ツールは完全に自己完結しています。新しいツールを追加するには、src/tools/<category>/<tool_name>/ 内にフォルダーを作成するだけです。
コントリビューションの要件
| ファイル | 用途 |
|---|---|
tool.ts | メインの実行コードで、ToolDefinition をエクスポートします。 |
README.md | ツールの直接的な説明とパラメーターの説明です。 |
example.json | 入力例と期待される出力です。 |
tests.ts | 必要に応じてモックを使用し、すぐに実行できる自己完結型の単体テストです。 |
コマンドガイド
# Build compiler output
npm run build
# Run all 50 module tests
npm test
# Run real-life execution checks (makes live API and DNS requests)
npx tsx src/tests/run_real_life.ts
⚖️ ライセンス
MIT License の下で配布されています。詳しくは LICENSE をご覧ください。完全なオープンソースで、個人利用にも商用利用にも自由に適用できます。
⭐ Kitbag MCP が時間の節約に役立ったら、リポジトリにスターを付けてください! ⭐
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。