groupdocs-assembly-mcp について
groupdocs-assembly-mcpは、テンプレートと構造化データからWord、Excel、PowerPoint、PDF、メール文書を生成するMCPサーバーです。単一文書またはレコードごとの生成が必要なエージェント利用者向けで、ファイルはローカルで読み書きします。
主な機能
- 01JSON、XML、CSV、表データでテンプレートを埋め込み
- 02Word、Excel、PowerPoint、PDF、メールを生成
- 03レコードごとに文書を生成
- 04テンプレートのフィールドとデータ形式を確認
- 05ライセンス状態を確認
活用シーン
- 01テンプレートから請求書や契約書を作成
- 02表データからPDFレポートを生成
- 03各レコード向けの手紙や証明書を作成
MCP 対応
文書の組み立て、レコードごとの生成、テンプレートの確認、文書情報、形式一覧、ライセンス状態のツールをMCPクライアントに公開します。設定されたローカルストレージからテンプレートとデータを読み、生成文書を保存します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
GroupDocs.Assembly MCP サーバー
Claude、Cursor、GitHub Copilot、その他のあらゆる MCP エージェントを使って、テンプレートとデータから Word、Excel、PowerPoint、PDF、メール文書を生成できます。契約書、請求書、書簡、レポート、証明書などを、JSON、XML、CSV、スプレッドシートのデータでテンプレートの <<[field]>>、<<foreach>>、<<if>>、表、グラフ、画像、バーコードのタグに値を入力して作成します。1件の文書、またはレコードごとに1件の文書を生成できます。
ローカルで実行:テンプレートとデータがマシンの外部に送信されることはありません。
60秒でインストール
ワンクリックインストールでは、サポート対象の設定がすべて事前入力されます。インストール後にプレースホルダーの文書フォルダーを編集してください(出力先は既定で同じフォルダーです)。GROUPDOCS_LICENSE_PATH が空の場合は評価モードで実行されます。制限を解除するには、ライセンスのパスを指定してください。
その他のクライアント — Claude Code、Codex CLI、Visual Studio 2022、Cursor、Windsurf、Cline、JetBrains Rider 用の設定済み構成は
install/generated/にあります。
ネイティブ実行には .NET 10 SDK が必要です。代わりに Docker をすぐに利用することもできます。
dnx で直接実行(推奨 — インストール不要):
dnx GroupDocs.Assembly.Mcp --yes
実行するたびに、最新の安定版リリースが取得されます。共有構成や CI での使用に推奨されるバージョン固定を行うには、@<version> を付けてください。
dnx [email protected] --yes
サーバーは GROUPDOCS_MCP_STORAGE_PATH(既定値:現在のディレクトリ)からテンプレートとデータを読み込み、生成した文書も同じ場所に書き込みます。既存のファイルを上書きすることはありません。ファイル名がすでに使用されている場合は、末尾に (1) が付きます。
Claude Desktop
claude_desktop_config.json に追加します。
{
"mcpServers": {
"groupdocs-assembly": {
"type": "stdio",
"command": "dnx",
"args": ["GroupDocs.Assembly.Mcp", "--yes"],
"env": {
"GROUPDOCS_MCP_STORAGE_PATH": "/path/to/documents"
}
}
}
}
ライセンスを使用するには、
envに"GROUPDOCS_LICENSE_PATH": "/path/to/GroupDocs.Assembly.lic"を追加します。 評価モードで実行する場合は省略してください。
Claude Code
claude mcp add groupdocs-assembly -- dnx GroupDocs.Assembly.Mcp --yes
VS Code / GitHub Copilot
上の Install in VS Code ボタンを使用するか、NuGet パッケージページから設定済みのスニペットをコピーして .vscode/mcp.json に貼り付けるか、このリポジトリの install/generated/vscode-mcp.json を使用します。
Visual Studio 2022 (17.14+)
install/generated/vs2022-mcp.json の内容を使って、ソリューションのルートに .mcp.json を作成します。
Cursor · Windsurf · Cline · Rider · Codex
- Cursor — 上の Add to Cursor ボタンを使用するか、
install/generated/claude-desktop.jsonを~/.cursor/mcp.jsonに貼り付けます。 - Windsurf —
install/generated/windsurf.mdに従います。 - Cline —
install/generated/cline.jsonを Cline の MCP 設定に貼り付けます。 - JetBrains Rider —
install/generated/rider.mdに従います。 - Codex CLI —
codex mcp add groupdocs-assembly -- dnx GroupDocs.Assembly.Mcp --yesを実行します。詳細はinstall/generated/codex.mdを参照してください。
Docker
docker run --rm -i \
-v "$(pwd)/documents:/data" \
ghcr.io/groupdocs-assembly/assembly-net-mcp:latest
イメージは、linux/amd64 と linux/arm64 向けに、GHCR(ghcr.io/groupdocs-assembly/assembly-net-mcp)および Docker Hub(groupdocs/assembly-net-mcp)で公開されています。タグは latest に加え、各 NuGet リリースに対応する変更されないバージョンタグ(例::26.11.0)が付けられます。このイメージには、エンジンに必要なすべてのネイティブライブラリとフォントが含まれています。
Linux での Docker:コンテナを自分のユーザーとして実行する
イメージは非 root ユーザー(uid 1654)として実行され、バインドマウントではホスト側の所有者が維持されます。そのため、Linux ホストでは、コンテナを自分のユーザーとして実行しない限り、サーバーが /data に書き込むすべてのドキュメントで Permission denied が発生します。
docker run --rm -i --user "$(id -u):$(id -g)" \
-v "$(pwd)/documents:/data" \
ghcr.io/groupdocs-assembly/assembly-net-mcp:latest
JSON のクライアント設定ではシェルが実行されないため、数値を指定します:"args": ["run", "--rm", "-i", "--user", "1000:1000", …]。Windows と macOS の Docker Desktop では不要です。
グローバル dotnet ツール
dotnet tool install -g GroupDocs.Assembly.Mcp
groupdocs-assembly-mcp
利用可能な MCP ツール
| ツール | 機能 |
|---|---|
assemble_document | テンプレートにデータを入力して結果を保存します。テンプレートと同じ形式、同じファミリーの別形式、または PDF で保存できます。データはインライン(dataJson)、.json、.xml、.csv/.tsv ファイル、またはドキュメントの表(data)から指定できます |
assemble_per_record | メールマージ:JSON 配列の各要素につき 1 つのドキュメントを作成します。顧客ごとのレター、注文ごとの請求書などを、連番またはレコードのフィールド名で命名します |
get_template_fields | テンプレートのタグ、データに使用する名前、読み取るフィールド、および入力するデータの JSON スケルトンを一覧表示します。エンジンの実行やデータは不要です(JSON) |
get_document_info | ファイルをテンプレートとして見た場合の情報(ファミリー、タグ数、データ名、保存先形式)と、データとして見た場合の情報(JSON キー、CSV ヘッダー、スプレッドシート、Word、プレゼンテーションドキュメントの表)を返します(JSON) |
get_supported_formats | テンプレート形式、各ファミリーで保存できる形式、データ形式を返します(JSON) |
get_license_status | ライセンスモード、従量制の使用量、エンジンのバージョンを返します(GroupDocs.Mcp.Core が提供) |
失敗すると、すべて isError が設定され、ツール固有のプレフィックスで始まります。例:Document assembly failed for 'invoice.docx': …。そのため、クライアント側で必要なチェックは 1 つだけです。データに存在しないフィールドは、メッセージ内に表示されます。
データがテンプレートに渡される仕組み
- JSON オブジェクトのキーがテンプレートの名前になります。
{"customer": {…}, "items": […]}は<<[customer.Name]>>と<<foreach [i in items]>>に値を設定します。これはget_template_fieldsがdataSkeletonとして返す構造です。 - 配列、XML、CSV、またはテーブルは 1 つのコレクションです。サーバーはテンプレートで使用されるコレクション名を付けます(
<<foreach [c in customers]>>→customers)。またはdataSourceNameを渡してください。 - JSON の値は JSON の型を維持します。
"007"はテキストのままです(エンジンのデフォルトでは7になります)。
AI エージェント向けプロンプトの例
Fill invoice-template.docx with this order and save it as a PDF: …
What data does contract-template.docx need? Give me a JSON skeleton.
Generate a welcome letter for every customer in customers.json, named after the customer.
Build the quarterly report from report-template.xlsx and sales.csv.
Turn the rows of attendees.xlsx into one certificate each from certificate.pptx.
評価モード
MCP サーバー自体は MIT ライセンスですが、GroupDocs.Assembly エンジンを本番環境で使用するにはライセンスが必要です。 ライセンスがなくてもすべてのツールを使用できますが、以下の制限があります(GroupDocs.Assembly 26.7.0 で計測):
- 生成されたドキュメントの先頭に「Evaluation Only. Created with GroupDocs.Assembly …」という行が追加されます。
- 保存されたワークブックにワークシートが 1 つ追加されます。
- メールメッセージにはプレーンテキストの本文のみが残ります。HTML 本文(通常、MSG テンプレートで表が保持される部分)は評価用の行に置き換えられ、ドキュメントとして保存されたメールのテキストも同様に置き換えられます。
行数、ページ数、ドキュメント数の制限は確認されていません(200 行のテーブル、連続して 25 件のドキュメントで確認)。生成ツールの応答は Evaluation mode: の行で始まります。アクティブなモードを確認するには、get_license_status を呼び出してください。
ライセンス
サーバーのライセンスには 2 つの方法があります。
ライセンスファイル — GROUPDOCS_LICENSE_PATH に GroupDocs.Assembly(または GroupDocs.Total)のライセンスファイルを指定します。オフラインで使用できます。
従量課金制 — GROUPDOCS_METERED_PUBLIC_KEY と GROUPDOCS_METERED_PRIVATE_KEY の両方を設定します。処理した分だけ支払うため、エージェントのワークロードに適しています。従量課金制のキーペアとライセンスファイルの両方が設定されている場合は、従量課金制が優先され、ファイルは無視されます。
従量課金制モードでは外部への接続が必要です。 使用状況は GroupDocs サーバーに報告されるため、外部ネットワークから隔離された環境やファイアウォールで保護されたデプロイでは、その通信を許可する必要があります。許可できない場合は、代わりにライセンスファイルを使用してください。
秘密鍵を設定ファイルに含めない方法
従量課金制の秘密鍵は機密情報です。MCP クライアントの設定はプレーンファイルであり、プロジェクト単位の .mcp.json は慣例としてコミットされるため、次の順に優先してください。
- OS の環境変数に値を設定し、設定ファイルには一切含めない — stdio MCP サーバーはクライアントの環境を引き継ぎます。macOS では、Finder から起動したアプリはシェルのエクスポートを引き継ぎません。
launchctl setenvを使用するか、ターミナルからクライアントを起動してください。 - クライアントが対応していれば、間接的に参照する(Claude Code は
${VAR}を展開し、VS Code は${env:VAR}と${input:...}を使用します)。 - ユーザー単位の設定ファイルに値を直接記載する(例:
~/.claude.json)方法は、個人で使用する場合に限り許容されます。 - プロジェクト単位の
.mcp.jsonにキーを直接記載してコミットすることは、絶対に避けてください。
Docker の場合は、値をファイルに書き込まずに渡してください。
docker run --rm -i \
-e GROUPDOCS_METERED_PUBLIC_KEY -e GROUPDOCS_METERED_PRIVATE_KEY \
-v /path/to/documents:/data \
ghcr.io/groupdocs-assembly/assembly-net-mcp:latest
設定
| 変数 | 説明 | デフォルト |
|---|---|---|
GROUPDOCS_MCP_STORAGE_PATH | テンプレート、データ、生成されたドキュメントのベースフォルダー | 現在のディレクトリ |
GROUPDOCS_MCP_OUTPUT_PATH | (任意) 生成されたドキュメント用の別フォルダー | GROUPDOCS_MCP_STORAGE_PATH |
GROUPDOCS_LICENSE_PATH | GroupDocs ライセンスファイルのパス | (評価モード) |
GROUPDOCS_METERED_PUBLIC_KEY | 従量課金制の公開鍵。秘密鍵も必要です。ライセンスファイルより優先されます | (未設定) |
GROUPDOCS_METERED_PRIVATE_KEY | 従量課金制の秘密鍵。機密情報 — ライセンスを参照してください | (未設定) |
ネイティブ要件
Word、スプレッドシート、電子メールのテンプレートは Aspose.Drawing と SkiaSharp を使用して描画します。これらのネイティブライブラリはパッケージに含まれています。プレゼンテーションテンプレート(PPTX、PPT、ODP、および PDF として保存されるスライド)は System.Drawing.Common を使用して描画します。Linux と macOS では、これに GDI+ ライブラリが必要です。PDF および XPS の出力ではテキストをレイアウトするため、Linux では実際のフォントも必要です。
| プラットフォーム | セットアップ |
|---|---|
| Windows | 不要です。 |
| Linux | sudo apt-get install -y libgdiplus libfontconfig1 ttf-mscorefonts-installer |
| macOS | brew install mono-libgdiplus(プレゼンテーションテンプレートのみ) |
| Docker | 不要です。イメージにすべて含まれています。 |
libgdiplus がない場合、プレゼンテーションテンプレートは「The type initializer for 'Gdip' threw an exception」というエラーで失敗します。サーバーのメッセージに解決方法が示されます。
制限事項
- テンプレートは信頼できる入力として扱ってください。 テンプレートの画像タグとドキュメントタグは、式が返すファイルパスまたは URL からファイルを読み込みます。読み込み元は、サーバープロセスがアクセスできる場所ならどこでも対象になります。式からデータ外の .NET API を呼び出すことはできません(ファイルや環境へのアクセスはできません)が、サーバーは認識させる必要のあるフォルダーだけにアクセスできるようにして実行してください。フォルダーを 1 つだけマウントする Docker イメージでは、まさにそのように動作します。
{{name}}プレースホルダーは GroupDocs.Assembly の構文ではないため、テキストとしてそのまま残ります。テンプレートでは<<[name]>>を使用します。get_template_fieldsはこれらを検出して警告します。- 空のリスト。 データ内のリストが空の場合、フィールドは存在しないため、
allowMissingMembers=trueでないと、そのリストを参照するテンプレートは失敗します。 - バイナリテンプレート(DOC、XLS、PPT、MSG)は動作しますが、生成せずにタグを一覧表示することはできません。そのため、データに配列、XML、CSV、またはテーブルを渡す場合は
dataSourceNameを指定してください。 - レコード単位のアセンブリでは JSON を読み込みます。 CSV またはスプレッドシートの行は、先に JSON 配列に変換してください。または、すべての行を一覧表示する 1 つのドキュメントを作成するには、
<<foreach>>テンプレートでassemble_documentを使用してください。 - macOS CI。 統合テストのゲート対象は Linux と Windows です。ファミリー全体に影響する macOS ランナーのハングは、別途追跡されています。
Docker Compose での使用
cd docker
docker compose up
docker/docker-compose.yml を編集し、ボリュームがドキュメントのフォルダーを指すように設定してください。
ドキュメントとガイド
手順に沿ったデプロイガイドと、公開パッケージの統合テストスイートは、関連リポジトリ GroupDocs.Assembly.Mcp.Tests にあります。
- NuGet からインストール —
dnx、グローバルツール、バージョン固定と常に最新版の使用 - Docker 経由で実行
- MCP レジストリで確認
- Claude Desktop で使用
- VS Code / GitHub Copilot で使用
- 統合テストを実行
- Cursor で使用
このリポジトリでは、公開パッケージ(Linux、Windows、macOS 上の dnx)と Docker イメージを対象に、案内されているすべてのツールをテストし、生成されたドキュメントをすべて読み戻します。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。