mcpField
B
bookbind

bookbind

ローカル
github.com/CloudCorpRecords生産性01 週間前に更新

bookbind について

bookbindは、Epublysのホスト型電子書籍サービス向けのローカルMCPブリッジとCLIです。EPUBやPDFの変換、編集、検証、表紙生成をリモートサービスに転送し、ローカルでは処理しません。

主な機能

  1. 01EPUBファイルの結合、分割、圧縮
  2. 02EPUB、PDF、Markdown、DOCX間の変換
  3. 03電子書籍メタデータの読み取りと編集
  4. 04EPUBファイルの検証
  5. 05表紙画像の生成

活用シーン

  1. 01対応形式間での電子書籍変換
  2. 02書籍情報や表紙の編集
  3. 03EPUBファイルの仕様上の問題確認
  4. 04EPUBの章の分割や結合

MCP 対応

取得済みのEpublysツールの一部を備えたローカルstdio MCPサーバーを提供します。呼び出しをリモートMCPサーバーへ転送し、上流の結果を返します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-bookbind": {
"command": "npx",
"args": [
"-y",
"@reneturcios/bookbind"
]
}
}
}
起動コマンドnpx -y @reneturcios/bookbind

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

パッケージ
npm@reneturcios/bookbind0.1.0
ocighcr.io/cloudcorprecords/bookbind:0.1.0

ツール

12

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

パラメーター型必須説明
filesarrayはい結合する Base64 エンコード EPUB ファイルの配列(順序を保持)
namesarrayいいえ元のファイル名。files と同じ順序で指定します。出力はその名前に基づいて命名されます(「A + B.epub」、2 個を超える場合は「A + N more.epub」)。指定しない場合は merged.epub になります
titlestringいいえ結合後の EPUB のタイトル(任意)
authorstringいいえ結合後の EPUB の著者(任意)
dividersbooleanいいえ書籍の間に区切りページを挿入します

詳細

bookbind

bookbindは、EPUBやPDFの電子書籍に対応するホスト型サービスEpublysへの小規模なローカルブリッジです。このサービスでは、書籍の結合や分割、圧縮、形式変換、メタデータの編集、ファイルの仕様上の問題のチェック、表紙画像の生成を行えます。このパッケージ自体は、これらの処理を一切行いません。サービスのリモートMCPエンドポイントの前段に立ち、上流のツール一覧を取得時の内容そのままローカルに提示し、各呼び出しを中継して、上流から返されたものをそのまま返します。

この分担は、実際の利用において重要です。変換、メタデータの編集、検証結果はすべてEpublys独自の処理によるものなので、bookbind経由で得られる結果はローカルでの近似値ではなく、サービスの結果です。このブリッジは独自の処理を加えず、結果を返す際に書き換えることもありません。ほとんどのツールは、Base64でエンコードされたファイル内容(file、複数ファイルを扱うツールではfiles)を受け取り、Base64でエンコードされた出力を返します。各ツールの説明に記載されている上流サービス独自の無料プランおよびProプランの制限は、上流サービスで適用されます。

ツール

このビルドでは、取得したツール群の一部に名前を付けて提供しています。ライブ取得で確認された13個のツールのうち12個です。除外されているのはupgrade_to_proです。このツールは、ユーザーがアカウントを有料プランにアップグレードできる決済ページのリンクを返します。このプログラムの対象範囲に決済への誘導は含まれないため、意図的にツールを含めておらず、その不在をアサートするテストもあります。残りのツールはドキュメント操作であり、取得した内容をそのまま提供します。これには、取得時の説明に上流サービス独自のProプランに関する文言が含まれているepub_to_pdfも含まれます。この再構築版では、独自の決済機能やアクセス制限の仕組みは追加していません。

  • merge_epub — 2個以上のEPUBファイル(必須のfiles)を、目次と章区切りを含む1冊の電子書籍に結合します。names、title、author、dividersは任意です。
  • split_epub — 1つのEPUB(必須のfile)を分割します。章の範囲(chapterStart/chapterEnd)を指定すると、指定した章だけを含む1つのEPUBを返します。指定しない場合は、章ごとに1つのEPUBを格納したZIPを返します。
  • compress_epub — EPUB(必須のfile)を圧縮します。圧縮レベルlevelは1~9で指定でき、未使用のアセットを削除するオプションもあります。
  • read_epub_metadata — EPUBのメタデータ(必須のfile)を読み取ります。タイトル、著者、言語、出版社、説明、シリーズ、表紙の状態などをJSONで返します。
  • edit_epub_metadata — EPUBのメタデータ項目(必須のfile)を編集します。タイトル、著者(複数可)、言語、出版社、説明、シリーズ、主題、ISBN、日付、新しい表紙画像などを編集でき、変更後のEPUBを返します。
  • epub_to_pdf — EPUB(必須のfile)をPDFに変換します。ページサイズ、余白、フォント、ページ番号のオプションを指定できます。
  • pdf_to_epub — PDF(必須のfile)をEPUBに変換します。章の自動検出、章のグループ化モード、画像抽出のオプションを利用できます。
  • markdown_to_epub — Markdownファイル(必須のfiles)からEPUB3の電子書籍を作成します。配列の順序に従い、1ファイルを1章として扱います。YAMLフロントマターとObsidianのウィキリンクに対応しています。
  • docx_to_epub — Word文書(必須のfile)をEPUB3の電子書籍に変換します。見出しまたは改ページで章を分割し、書式、リスト、表、画像、脚注を保持します。
  • epub_to_markdown — EPUB(必須のfile)をMarkdownに変換します。章ごとに1ファイル、インデックス、参照されている画像を含むZIPを返します。
  • validate_epub — EPUB(必須のfile)について、エラー、互換性の問題、仕様への準拠状況を検証します。チェック結果をJSONで返し、詳細スキャンと自動修正も任意で実行できます。
  • generate_cover — 創造的なdescriptionとgenreから、AIで書籍の表紙画像を生成します。title、author、seedは任意です。取得したスキーマでは必須の引数はありませんが、上流サービスでは説明またはタイトルが必要です。

設定

  • EPUBLYS_MCP_URL(任意)— 上流エンドポイントを上書きします。デフォルトは https://epublys.com/mcp です。(上書きフックは、この再構築版独自のラベル付き再現です。)
  • EPUBLYS_API_KEY(任意)— 設定すると、すべての上流リクエストに Authorization: Bearer <key> が含まれます。設定されていない場合は、認証ヘッダーは送信されません。これは、この再構築版の基になったキーなしのキャプチャに合わせた動作です。(ヘッダーの動作はラベル付き再現です。レジストリの記録ではリモート用の任意の Authorization ヘッダーが宣言されていますが、キャプチャはヘッダーなしで取得されました。)アカウントに紐づく動作は、呼び出し元自身の認証情報を使って上流で提供されます。
転送の仕組み

最初のツール呼び出し時に、クライアントは上流にストリーミング可能な HTTP セッションを開きます。JSON-RPC の initialize リクエスト(protocolVersion 2025-03-26、 clientInfo name bookbind)、notifications/initialized 通知、続いて呼び出し元の引数を変更せずに含めた tools/call リクエストを送信します。上流が initialize に Mcp-Session-Id ヘッダーを付けて応答した場合、その値は以降のすべてのリクエストに引き継がれ、プロセスが終了するまでセッションが再利用されます。応答はプレーンな JSON またはサーバー送信イベントとして届く場合があります。どちらも読み取られ、ID が一致するメッセージが採用されます。

上流からの成功結果は、上流が設定した isError フラグや追加フィールドも含め、そのまま渡されます。JSON-RPC エラー、2xx 以外のステータス、読み取り不能な応答、完了できないリクエストなどの失敗は、テキストが bookbind error: で始まる isError 結果として返されます(このエラー表示は、この再構築版独自のラベル付き再現です)。

CLI

各ツールは、JSON 引数文字列を 1 つ取るサブコマンドとしても実行できます(引数を必要としないツールでは省略します)。

npx @reneturcios/bookbind read_epub_metadata '{"file":"<base64-epub>"}'
npx @reneturcios/bookbind generate_cover '{"description":"a lighthouse at dusk","genre":"literary"}'
npx @reneturcios/bookbind validate_epub '{"file":"<base64-epub>","deepScan":true}'
npx @reneturcios/bookbind --version

終了コード:成功時は 0、isError 結果の場合は 1、使用方法が正しくない場合は 2 です。

MCP サーバー

npx -y @reneturcios/bookbind mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "bookbind": {
      "command": "npx",
      "args": ["-y", "@reneturcios/bookbind", "mcp"]
    }
  }
}

Docker

docker run -i ghcr.io/cloudcorprecords/bookbind
docker run --rm ghcr.io/cloudcorprecords/bookbind --version

コンテナのデフォルトコマンドは mcp なので、最初の形式は stdio MCP サーバーとして動作し、それ以外の引数は通常どおり CLI に渡されます。

開発

npm install
npm run build
npm test
npm run dev

テストスイートはすべてスタブ化された JSON-RPC 上流に対して実行され、実際のネットワーク呼び出しは行いません。

ライセンス

MIT — LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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