docmcp — Word & Excel files について
docmcpは、構造化データから書式付きのWord・Excelファイルを生成するMCPサーバーです。ローカルのstdioとホスト型HTTPダウンロードに対応し、ヘブライ語とアラビア語のRTLレイアウトも扱えます。
主な機能
- 01見出し・リスト・表を含むDOCX生成
- 02複数シートのXLSX作成
- 03ヘブライ語・アラビア語のRTL対応
- 04期限付きダウンロードリンクの発行
- 05月間利用量と上限の確認
活用シーン
- 01構造化データから書式付きWordレポートを作成
- 02固定ヘッダーとフィルター付き表計算ファイルを作成
- 03ヘブライ語やアラビア語のRTL文書を生成
MCP 対応
MCPクライアントに `create_docx`、`create_xlsx`、`usage` ツールを公開します。ローカルのstdio、またはAPIキー認証を使うホスト型HTTPで動作します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://docmcp.onrender.com/mcpclaude mcp add --transport http adirdavi-docmcp https://docmcp.onrender.com/mcp{"mcpServers":{"adirdavi-docmcp":{"type":"http","url":"https://docmcp.onrender.com/mcp"}}}Cursor で開く{"servers":{"adirdavi-docmcp":{"type":"http","url":"https://docmcp.onrender.com/mcp"}}}VS Code で開く{"mcpServers":{"adirdavi-docmcp":{"type":"http","url":"https://docmcp.onrender.com/mcp"}}}{"mcpServers":{"adirdavi-docmcp":{"serverUrl":"https://docmcp.onrender.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://docmcp.onrender.com/mcp認証が必要ツール
詳細
docmcp
稼働中:https://docmcp.onrender.com — POST /keys/free で無料キーを取得できます。月10件まで。
有料プラン:月額10ドルで100件、30ドルで500件です。クォータは src/store.ts の PLANS にあります。
構造化データを実際の .docx ファイルや .xlsx ファイルに変換する、有料の MCP サーバーです。
エージェントは文章の作成は得意ですが、ファイル形式の扱いは苦手です。Markdown を出力して、うまくいくことを期待します。
このサーバーを使うと、実際の見出し、表、太字のヘッダー、固定ウィンドウ、RTL 対応を備えた Word ファイルまたは Excel ファイルを返すツールを利用できます。
base64 の blob ではなく、有効期間の短いダウンロード URL を返します。200KB の docx をツールの結果にインラインで含めると、呼び出し元のコストは約70kトークンになります。
1つのコードベースで、2つのモードを利用できます。
--stdio— ローカルクライアント(Claude Desktop / Code)向けです。認証、クォータ、有効期限はありません。 ファイルはOUT_DIRに書き込まれ、ツールはそのパスを返します。- デフォルト —
/mcpでホストされる HTTP です。API キーが必要で、クォータが適用されます。ファイルは24時間で有効期限が切れる URL として提供されます。これが製品です。
ローカル
npm install
Claude Desktop には docmcp としてすでに登録されています(出力先 → ~/Documents/docmcp)。
ほかの場所に登録するには:
{
"mcpServers": {
"docmcp": {
"command": "/usr/local/bin/node",
"args": ["<repo>/node_modules/tsx/dist/cli.mjs", "<repo>/src/index.ts", "--stdio"],
"env": { "DATABASE_URL": "postgres://…", "OUT_DIR": "<somewhere>" }
}
}
}
絶対パスが重要です。クライアントは最小限の PATH で起動します。
ホスト環境
npm start # http://localhost:8787/mcp
curl -X POST localhost:8787/keys/free
{
"mcpServers": {
"docmcp": {
"type": "http",
"url": "https://your-host/mcp",
"headers": { "Authorization": "Bearer dk_..." }
}
}
}
ツール
| ツール | 内容 |
|---|---|
create_docx | 見出し、段落、箇条書き/番号付きリスト、表、改ページ、ヘブライ語/アラビア語向けの rtl |
create_xlsx | 複数シート、太字のヘッダーと固定表示、自動フィルター、列幅の調整、数値を数値のまま保持 |
usage | 今月の使用回数/クォータ |
環境変数
| 変数 | デフォルト | 備考 |
|---|---|---|
PORT | 8787 | |
BASE_URL | http://localhost:$PORT | 公開 URL を指定してください。ダウンロードリンクに使用されます |
DATABASE_URL | — | 必須。 任意の Postgres(Koyeb、Neon、Supabase) |
OUT_DIR | out | 生成ファイルの保存先。1時間ごとに削除され、有効期間は24時間です |
STRIPE_SECRET_KEY | — | 課金なしで実行する場合は省略します |
STRIPE_WEBHOOK_SECRET | — | /stripe/webhook 用 |
STRIPE_PRICE_STARTER、STRIPE_PRICE_PRO | — | /buy/:plan で使用する価格 ID |
プランとクォータは src/store.ts の PLANS にあります。
デプロイ
Postgres URL を利用できる Docker ホストであれば、どこにでもデプロイできます。永続ディスクは不要です。 生成ファイルはコンテナのファイルシステム上に保存され、いずれにせよ24時間で有効期限が切れるため、 再起動によって影響を受けるのは、まもなく期限切れになるリンクだけです。保持が必要な情報はすべて、 キー、クォータ、IP ソルトを含め、Postgres に保存されます。
現在は Render(Web サービス、無料枠)と Neon(Postgres、無料、期限なし)を利用しています。 あえて2つのプロバイダーを使っています。状態を、今月コンテナをホストしているサービスに依存しない場所に保存するためです。Render は GitHub から Dockerfile を直接ビルドします。
BASE_URL には公開 URL を指定してください。すべてのダウンロードリンクに埋め込まれるため、
間違えると存在しないホストへのリンクが生成されます。URL は最初のデプロイ後にわかるため、
その時点で設定して再デプロイしてください。
Render の無料枠では、15分間アイドル状態が続くとスリープし、復帰に30〜50秒かかります。 これはカード情報を登録しない場合の代償です。顧客の支払いがあったらアップグレードして解消してください。
課金フロー
/buy/starter → Stripe Checkout → Webhook checkout.session.completed → キー発行 →
顧客は /success に移動し、そこにキーが表示されます。メールプロバイダーは不要です。
customer.subscription.deleted を受け取るとキーは無効化されます。ユーザーアカウントはありません。キーがアカウントです。
テスト
npm test
両方のジェネレーターを対象とします(不揃いな表の行と、シート名の / も含みます。どちらもいずれ LLM から送られてくるものです)。xlsx のラウンドトリップで数値が保持されること、そしてクォータがプランの上限に達した時点で正確に停止することも確認します。
既知の課題
- PDFには対応していません。 PDFを適切に出力するには、ヘッドレス Chrome または LibreOffice が必要で、デプロイの負荷が3倍になります。本当に不足しているのは Word と Excel への対応です。Markdown から PDF への変換には、すでに誰もが対応しています。料金を支払うユーザーから要望があれば追加します。
- 紛失したキーは復旧できません。
/successで一度だけ表示されます。最初の顧客から要望があれば、メールでの送信または「メールで再送」するルートを追加します。 - ファイルはコンテナのファイルシステムに保存されます。 これは意図的なものです。Deploy を参照してください。再起動による24時間リンクの無効化が実際に問題になった場合にのみ、オブジェクトストレージへ移行します。
- 無料キーにはレート制限がありますが、不正利用を完全には防げません。 IPアドレスごとに24時間あたり1つ、さらに全体の日次上限(
FREE_KEYS_PER_DAY、デフォルトは200)を設定しています。VPNを切り替えれば回避できてしまいますが、それを止める方法はなく、どの無料プランも、攻撃者が執拗に試みれば耐えられません。上限は最悪のケースを抑えるためのものであり、不正利用をなくすためのものではありません。 /adminにはADMIN_TOKENが必要です。 未設定の場合、ルートは404を返すため、設定されていないデプロイで公開されることはありません。/admin?token=…にアクセスしてください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。