bookbind について
bookbindは、Epublysのホスト型電子書籍サービス向けのローカルMCPブリッジとCLIです。EPUBやPDFの変換、編集、検証、表紙生成をリモートサービスに転送し、ローカルでは処理しません。
主な機能
- 01EPUBファイルの結合、分割、圧縮
- 02EPUB、PDF、Markdown、DOCX間の変換
- 03電子書籍メタデータの読み取りと編集
- 04EPUBファイルの検証
- 05表紙画像の生成
活用シーン
- 01対応形式間での電子書籍変換
- 02書籍情報や表紙の編集
- 03EPUBファイルの仕様上の問題確認
- 04EPUBの章の分割や結合
MCP 対応
取得済みのEpublysツールの一部を備えたローカルstdio MCPサーバーを提供します。呼び出しをリモートMCPサーバーへ転送し、上流の結果を返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
12掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| files | array | はい | 結合する Base64 エンコード EPUB ファイルの配列(順序を保持) |
| names | array | いいえ | 元のファイル名。files と同じ順序で指定します。出力はその名前に基づいて命名されます(「A + B.epub」、2 個を超える場合は「A + N more.epub」)。指定しない場合は merged.epub になります |
| title | string | いいえ | 結合後の EPUB のタイトル(任意) |
| author | string | いいえ | 結合後の EPUB の著者(任意) |
| dividers | boolean | いいえ | 書籍の間に区切りページを挿入します |
詳細
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 を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。