GroupDocs.Viewer MCP Server
MCP server that exposes GroupDocs.Viewer as AI-callable tools
for Claude, Cursor, GitHub Copilot, and other MCP agents.

Installation

One-click installs pre-fill every supported setting: edit the placeholder documents
folder after install (output defaults to the same folder); an empty
GROUPDOCS_LICENSE_PATH runs in evaluation mode - point it at your license to lift limits.
More clients - ready-made configs for Claude Code, Codex CLI, Visual Studio 2022,
Cursor, Windsurf, Cline, and JetBrains Rider live in install/generated/.
Requires .NET 10 SDK.
Run directly with dnx (recommended — no install step):
dnx GroupDocs.Viewer.Mcp --yes
Pulls the latest stable release on every invocation. To pin to a specific
version (recommended for shared configs and CI), append @<version>:
dnx GroupDocs.Viewer.Mcp@26.7.2 --yes
Or install as a global dotnet tool:
dotnet tool install -g GroupDocs.Viewer.Mcp
groupdocs-viewer-mcp
Or run via Docker:
docker run --rm -i \
-v $(pwd)/documents:/data \
ghcr.io/groupdocs-viewer/viewer-net-mcp:latest
Native prerequisites
The underlying GroupDocs engine uses System.Drawing (GDI+) for some
operations. When you run the server natively (via dnx or the global
dotnet tool) on Linux or macOS, install the native libgdiplus library first:
| Windows | Nothing — GDI+ is built into the OS. |
| Linux | sudo apt-get install -y libgdiplus libfontconfig1 ttf-mscorefonts-installer |
| macOS | brew install mono-libgdiplus |
| Docker | Nothing — the image already bundles libgdiplus. |
Skipping this on Linux/macOS surfaces as DllNotFoundException: libgdiplus in
the tool response. The simplest zero-setup option on Linux/macOS is the
Docker image.
Available MCP Tools
RenderPage | Renders a single document page as a PNG image and returns it inline (plus saves a copy to storage as <source-stem>_page<N>.png). Supports PDF, Word, Excel, PowerPoint, ODT, RTF, HTML, and 170+ more formats; optional password for protected documents. |
GetViewInfo | Returns file type, page count, and per-page dimensions as JSON — without rendering. Useful as a pre-flight check before deciding which page(s) to render. Optional password for protected documents. |
Example prompts for AI agents
Once the server is wired up to your MCP client (Claude Desktop, Cursor, VS Code Copilot, …), try:
Render page 1 of report.pdf — show me the image.
How many pages does contract.docx have? What size is each page?
Show me page 5 of the slide deck quarterly.pptx.
Inspect /docs/legal-brief.pdf — what file type and page count?
Render the first three pages of presentation.pptx as PNGs.
The client picks RenderPage for "show me a page" requests and
GetViewInfo for inspection-only questions.
Licensing
The MCP server itself is MIT; the underlying GroupDocs.Viewer engine requires a license
for production use. Without one the server runs in evaluation mode:
- Rendering processes a limited number of pages per document, and output may carry evaluation notices.
- A single server process can open at most 15 documents; further calls fail with an evaluation-cap error until the server restarts.
To lift the limits, point GROUPDOCS_LICENSE_PATH at your GroupDocs.Total.lic:
Configuration
GROUPDOCS_MCP_STORAGE_PATH | Base folder for input and output files | current directory |
GROUPDOCS_MCP_OUTPUT_PATH | (Optional) separate folder for output files | GROUPDOCS_MCP_STORAGE_PATH |
GROUPDOCS_LICENSE_PATH | Path to GroupDocs license file | (evaluation mode) |
Usage with Claude Desktop
{
"mcpServers": {
"groupdocs-viewer": {
"type": "stdio",
"command": "dnx",
"args": ["GroupDocs.Viewer.Mcp", "--yes"],
"env": {
"GROUPDOCS_MCP_STORAGE_PATH": "/path/to/documents"
}
}
}
}
To pin to a specific version, replace "GroupDocs.Viewer.Mcp" with
"GroupDocs.Viewer.Mcp@26.7.2" in args. Pinning is recommended for
shared / committed configs to avoid surprise upgrades.
Usage with VS Code / GitHub Copilot
NuGet.org generates a ready-to-use mcp.json snippet on the package page.
Copy it directly into your .vscode/mcp.json.
Alternatively, add manually to .vscode/mcp.json:
{
"inputs": [
{
"type": "promptString",
"id": "storage_path",
"description": "Base folder for input and output files.",
"password": false
}
],
"servers": {
"groupdocs-viewer": {
"type": "stdio",
"command": "dnx",
"args": ["GroupDocs.Viewer.Mcp", "--yes"],
"env": {
"GROUPDOCS_MCP_STORAGE_PATH": "${input:storage_path}"
}
}
}
}
Same pinning rule as above — swap "GroupDocs.Viewer.Mcp" for
"GroupDocs.Viewer.Mcp@26.7.2" to lock to a specific release.
Usage with Docker Compose
cd docker
docker compose up
Edit docker/docker-compose.yml to point volumes at your local documents folder.
Documentation & guides
Step-by-step deployment guides and a published-package integration test suite
live in the companion repo
GroupDocs.Viewer.Mcp.Tests:
That repo also exercises every advertised tool against the published NuGet
artifact on Linux, macOS, and Windows in CI — so the snippets above are
verified end-to-end on every release.
License
MIT — see LICENSE