Integration tests for the GroupDocs.Merger.Mcp
NuGet package — an MCP server that exposes
GroupDocs.Merger as AI-callable tools.
This repository validates the published NuGet artifact end-to-end: it
launches the server via dnx, connects as an MCP client, and exercises every
advertised tool against real document fixtures sourced from the upstream
GroupDocs.Merger-for-.NET Examples.
- how-to/ — step-by-step guides for every deployment channel (NuGet, Docker, MCP registry, Claude Desktop, VS Code / Copilot, running the tests).
- examples/ — ready-to-paste
claude-desktop.json,vscode-mcp.json, anddocker-compose.yml. - AGENTS.md — orientation for AI coding agents working in this repo.
- llms.txt — machine-readable summary for LLM tooling.
- changelog/ — one entry per change set.
- Files/README.md — provenance of real fixtures (MCP method ↔ upstream example ↔ filename).
| Area | Covered by |
|---|---|
Package installs and starts via dnx |
McpServerFixture |
| MCP handshake, server info, tool list (3 tools) | ToolDiscoveryTests |
merge — 2-way + 3-way DOCX, 2-way PDF |
MergeTests |
split — 10-page DOCX, unparseable-pages guard, protected-PDF password |
SplitTests |
get_document_info — synthetic + 5 real samples, page-count assertion |
GetDocumentInfoTests |
| Unknown / corrupted files, password parameter | ErrorHandlingTests |
Requires .NET 10 SDK.
dotnet testTest a specific published version:
dotnet test -p:McpPackageVersion=26.7.0
# or
MCP_PACKAGE_VERSION=26.7.0 dotnet testThe first run downloads the NuGet package — subsequent runs are cached.
.github/workflows/integration.yml runs
on push / PR / nightly cron / workflow_dispatch / repository_dispatch.
Matrix: ubuntu-latest, windows-latest, macos-latest. Linux runners
install libgdiplus + libfontconfig1 (Merger does structural page
operations, not text-glyph rendering — no MS core fonts needed).
GroupDocs.Merger is non-blocking in evaluation mode: merge and split
still produce their output files, the engine just stamps an evaluation
watermark on them. Tests pass either way — assertions check that the output
file is produced and the absence of the per-tool <Op> failed for ...
diagnostic prefix, not exact content.
For CI, store a base64-encoded .lic file as repo secret GROUPDOCS_LICENSE
— the workflow decodes it into $RUNNER_TEMP and exports
GROUPDOCS_LICENSE_PATH automatically.
Real fixtures live under Files/ and are sourced from the upstream
GroupDocs.Merger-for-.NET/Examples/Resources/SampleFiles/ folder. Each
fixture is documented in Files/README.md with its MCP
method ↔ upstream example ↔ filename mapping. A minimal synthetic 1-page PDF
is generated at test startup as a known-shape baseline.
MIT — see LICENSE