{
  "markdown": "# GroupDocs.Watermark MCP Server\n\nMCP server that exposes [GroupDocs.Watermark](https://products.groupdocs.com/watermark) as AI-callable tools\nfor Claude, Cursor, GitHub Copilot, and other MCP agents.\n\n[![NuGet](https://img.shields.io/nuget/v/GroupDocs.Watermark.Mcp?label=NuGet)](https://www.nuget.org/packages/GroupDocs.Watermark.Mcp)\n[![NuGet downloads](https://img.shields.io/nuget/dt/GroupDocs.Watermark.Mcp?label=downloads)](https://www.nuget.org/packages/GroupDocs.Watermark.Mcp)\n[![Docker pulls](https://img.shields.io/docker/pulls/groupdocs/watermark-net-mcp?label=docker%20pulls)](https://hub.docker.com/r/groupdocs/watermark-net-mcp)\n[![MCP Registry](https://img.shields.io/badge/MCP_Registry-listed-6f42c1)](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.groupdocs-watermark/groupdocs-watermark-mcp)\n[![Integration tests](https://github.com/groupdocs-watermark/GroupDocs.Watermark.Mcp.Tests/actions/workflows/integration.yml/badge.svg)](https://github.com/groupdocs-watermark/GroupDocs.Watermark.Mcp.Tests/actions/workflows/integration.yml)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n\n<!-- TODO(manual): record 30s demo per improvement-plan M1 -->\n<!-- ![Demo](assets/demo.gif) -->\n\n## Installation\n\n<!-- install-buttons:start - generated by install/generate-install-links.ps1; do not edit by hand -->\n[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF)](https://vscode.dev/redirect/mcp/install?name=groupdocs-watermark&config=%7B%22command%22%3A%22dnx%22%2C%22args%22%3A%5B%22GroupDocs.Watermark.Mcp%22%2C%22--yes%22%5D%2C%22env%22%3A%7B%22GROUPDOCS_MCP_STORAGE_PATH%22%3A%22%2Fpath%2Fto%2Fdocuments%22%2C%22GROUPDOCS_MCP_OUTPUT_PATH%22%3A%22%2Fpath%2Fto%2Fdocuments%22%2C%22GROUPDOCS_LICENSE_PATH%22%3A%22%22%7D%7D) [![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5)](https://insiders.vscode.dev/redirect/mcp/install?name=groupdocs-watermark&config=%7B%22command%22%3A%22dnx%22%2C%22args%22%3A%5B%22GroupDocs.Watermark.Mcp%22%2C%22--yes%22%5D%2C%22env%22%3A%7B%22GROUPDOCS_MCP_STORAGE_PATH%22%3A%22%2Fpath%2Fto%2Fdocuments%22%2C%22GROUPDOCS_MCP_OUTPUT_PATH%22%3A%22%2Fpath%2Fto%2Fdocuments%22%2C%22GROUPDOCS_LICENSE_PATH%22%3A%22%22%7D%7D&quality=insiders) [![Add to Cursor](https://img.shields.io/badge/Cursor-Add_MCP-111111)](https://cursor.com/en/install-mcp?name=groupdocs-watermark&config=eyJjb21tYW5kIjoiZG54IiwiYXJncyI6WyJHcm91cERvY3MuV2F0ZXJtYXJrLk1jcCIsIi0teWVzIl0sImVudiI6eyJHUk9VUERPQ1NfTUNQX1NUT1JBR0VfUEFUSCI6Ii9wYXRoL3RvL2RvY3VtZW50cyIsIkdST1VQRE9DU19NQ1BfT1VUUFVUX1BBVEgiOiIvcGF0aC90by9kb2N1bWVudHMiLCJHUk9VUERPQ1NfTElDRU5TRV9QQVRIIjoiIn19) [![Codex CLI setup](https://img.shields.io/badge/Codex_CLI-Setup-e5541b)](install/generated/codex.md) [![Windsurf setup](https://img.shields.io/badge/Windsurf-Setup-0e8a7d)](install/generated/windsurf.md)\n\n> One-click installs pre-fill every supported setting: edit the placeholder documents\n> folder after install (output defaults to the same folder); an empty\n> GROUPDOCS_LICENSE_PATH runs in evaluation mode - point it at your license to lift limits.\n>\n> **More clients** - ready-made configs for Claude Code, Codex CLI, Visual Studio 2022,\n> Cursor, Windsurf, Cline, and JetBrains Rider live in [`install/generated/`](install/generated/).\n<!-- install-buttons:end -->\n\nRequires [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0).\n\n**Run directly with `dnx` (recommended — no install step):**\n\n```bash\ndnx GroupDocs.Watermark.Mcp --yes\n```\n\nPulls the latest stable release on every invocation. To pin to a specific\nversion (recommended for shared configs and CI), append `@<version>`:\n\n```bash\ndnx GroupDocs.Watermark.Mcp@26.9.0 --yes\n```\n\n**Or install as a global dotnet tool:**\n\n```bash\ndotnet tool install -g GroupDocs.Watermark.Mcp\ngroupdocs-watermark-mcp\n```\n\n**Or run via Docker:**\n\n```bash\ndocker run --rm -i \\\n  -v $(pwd)/documents:/data \\\n  ghcr.io/groupdocs-watermark/watermark-net-mcp:latest\n```\n\n## Native prerequisites\n\nThe underlying GroupDocs engine uses `System.Drawing` (GDI+) for some\noperations. When you run the server **natively** (via `dnx` or the global\ndotnet tool) on Linux or macOS, install the native `libgdiplus` library first:\n\n| Platform | Setup |\n|---|---|\n| Windows | Nothing — GDI+ is built into the OS. |\n| Linux | `sudo apt-get install -y libgdiplus libfontconfig1 ttf-mscorefonts-installer` |\n| macOS | `brew install mono-libgdiplus` |\n| Docker | Nothing — the image already bundles `libgdiplus`. |\n\nSkipping this on Linux/macOS surfaces as `DllNotFoundException: libgdiplus` in\nthe tool response. The simplest zero-setup option on Linux/macOS is the\n**Docker image**.\n\n## Available MCP Tools\n\n| Tool | Description |\n|---|---|\n| `AddWatermark` | Adds a text watermark (Arial, configurable size + rotation) to a document and saves the watermarked file to storage |\n| `AddImageWatermark` | Adds an image watermark (logo, signature scan, stamp) to a document and saves the watermarked file. Configurable opacity + rotation |\n| `SearchWatermarks` | Finds existing watermarks (text + image) in a document and returns their details (type, text, page, position, size, rotation) as JSON |\n| `RemoveWatermarks` | Removes existing watermarks from a document and saves the cleaned copy. Optional text filter to remove only matching watermarks |\n| `GetDocumentInfo` | Returns the file type, page count, and per-page dimensions of a document as JSON — without modifying it |\n\nAll tools support PDF, DOCX, XLSX, PPTX, PNG, JPG, VSDX, and 50+ more document and image formats.\n\n## Example prompts for AI agents\n\nCopy any of these into Claude Desktop, Cursor, or GitHub Copilot Chat after the\nserver is connected. The AI agent will pick the right tool and arguments\nautomatically — file names are resolved against `GROUPDOCS_MCP_STORAGE_PATH`.\n\n1. **Add a DRAFT text watermark**: *\"Add a watermark with the text 'DRAFT' to report.pdf.\"*\n2. **Stamp a logo image**: *\"Use company-logo.png as an image watermark on every page of contract.docx, opacity 30%.\"*\n3. **Inspect existing watermarks**: *\"What watermarks does invoice.pdf contain?\"*\n4. **Strip old watermarks**: *\"Remove all watermarks from final-draft.docx so I can ship it.\"*\n5. **Inspect document structure**: *\"How many pages does presentation.pptx have, and what are their dimensions?\"*\n\n## Licensing\n\n**The MCP server itself is MIT; the underlying GroupDocs.Watermark engine requires a license\nfor production use.** Without one the server runs in **evaluation mode**:\n\n- The engine adds an extra evaluation watermark to processed output.\n- A single server process can load at most **10 documents**; further calls fail until the server restarts.\n\nThere are two ways to license the server.\n\n**License file** — point `GROUPDOCS_LICENSE_PATH` at your `GroupDocs.Total.lic`. Works offline.\n\n**Metered (pay-per-use)** — set both `GROUPDOCS_METERED_PUBLIC_KEY` and\n`GROUPDOCS_METERED_PRIVATE_KEY`. You are billed for what you actually process, which suits AI\nagents well because their usage is bursty and hard to predict up front. If both a metered key pair\nand a license file are configured, **metered wins** and the file is ignored.\n\n> **Metered mode needs outbound connectivity.** Usage is reported to GroupDocs servers, so\n> air-gapped or firewalled deployments must allow that egress — or use a license file instead.\n\nCall the **`get_license_status`** tool at any time to see which mode is active, and — under\nmetered — the consumed quantity and remaining credit.\n\n### Keeping the private key out of your config\n\nThe metered private key is a secret. MCP client configs are plain files on disk, and a\nproject-scoped `.mcp.json` is committed by convention, so prefer, in order:\n\n1. **Set the variables in your OS environment and leave them out of the config entirely.** An\n   stdio MCP server inherits its client's environment, so this works in every client.\n   On macOS note that an app launched from Finder does not inherit shell exports — use\n   `launchctl setenv`, or launch the client from a terminal.\n2. **Reference them indirectly** if your client supports it (Claude Code expands `${VAR}`;\n   VS Code uses `${env:VAR}` and `${input:...}`).\n3. **A literal value in a user-scoped config** (for example `~/.claude.json`) is acceptable for a\n   single developer.\n4. **Never** commit a literal key in a project-scoped `.mcp.json`.\n\nFor Docker, forward the values without writing them into any file:\n\n```bash\ndocker run --rm -i \\\n  -e GROUPDOCS_METERED_PUBLIC_KEY -e GROUPDOCS_METERED_PRIVATE_KEY \\\n  -v /path/to/documents:/data \\\n  ghcr.io/groupdocs-watermark/watermark-net-mcp:latest\n```\n\nTo lift the limits with a license file:\n\n- [Get a free 30-day temporary license](https://purchase.groupdocs.com/temporary-license/)\n- [Purchase a license](https://purchase.groupdocs.com/pricing/watermark/net) | [Product page](https://products.groupdocs.com/watermark/net/)\n\n## Configuration\n\n| Variable | Description | Default |\n|---|---|---|\n| `GROUPDOCS_MCP_STORAGE_PATH` | Base folder for input and output files | current directory |\n| `GROUPDOCS_MCP_OUTPUT_PATH` | *(Optional)* separate folder for output files | `GROUPDOCS_MCP_STORAGE_PATH` |\n| `GROUPDOCS_LICENSE_PATH` | Path to GroupDocs license file. In evaluation mode, output documents may include an additional evaluation watermark alongside the user-requested one | (evaluation mode) |\n| `GROUPDOCS_METERED_PUBLIC_KEY` | Metered public key. Requires the private key too; takes precedence over the license file | (unset) |\n| `GROUPDOCS_METERED_PRIVATE_KEY` | Metered private key. **Secret** - see [Licensing](#licensing) | (unset) |\n\n## Usage with Claude Desktop\n\n```json\n{\n  \"mcpServers\": {\n    \"groupdocs-watermark\": {\n      \"type\": \"stdio\",\n      \"command\": \"dnx\",\n      \"args\": [\"GroupDocs.Watermark.Mcp\", \"--yes\"],\n      \"env\": {\n        \"GROUPDOCS_MCP_STORAGE_PATH\": \"/path/to/documents\"\n      }\n    }\n  }\n}\n```\n\n> To pin to a specific version, replace `\"GroupDocs.Watermark.Mcp\"` with\n> `\"GroupDocs.Watermark.Mcp@26.9.0\"` in `args`. Pinning is recommended for\n> shared / committed configs to avoid surprise upgrades.\n\n## Usage with VS Code / GitHub Copilot\n\nNuGet.org generates a ready-to-use `mcp.json` snippet on the [package page](https://www.nuget.org/packages/GroupDocs.Watermark.Mcp).\nCopy it directly into your `.vscode/mcp.json`.\n\nAlternatively, add manually to `.vscode/mcp.json`:\n\n```json\n{\n  \"inputs\": [\n    {\n      \"type\": \"promptString\",\n      \"id\": \"storage_path\",\n      \"description\": \"Base folder for input and output files.\",\n      \"password\": false\n    }\n  ],\n  \"servers\": {\n    \"groupdocs-watermark\": {\n      \"type\": \"stdio\",\n      \"command\": \"dnx\",\n      \"args\": [\"GroupDocs.Watermark.Mcp\", \"--yes\"],\n      \"env\": {\n        \"GROUPDOCS_MCP_STORAGE_PATH\": \"${input:storage_path}\"\n      }\n    }\n  }\n}\n```\n\n> Same pinning rule as above — swap `\"GroupDocs.Watermark.Mcp\"` for\n> `\"GroupDocs.Watermark.Mcp@26.9.0\"` to lock to a specific release.\n\n## Usage with Docker Compose\n\n```bash\ncd docker\ndocker compose up\n```\n\nEdit `docker/docker-compose.yml` to point volumes at your local documents folder.\n\n## Documentation & guides\n\nStep-by-step deployment guides and a published-package integration test suite\nlive in the companion repo\n[**GroupDocs.Watermark.Mcp.Tests**](https://github.com/groupdocs-watermark/GroupDocs.Watermark.Mcp.Tests):\n\n- [Install from NuGet](https://github.com/groupdocs-watermark/GroupDocs.Watermark.Mcp.Tests/blob/master/how-to/01-install-from-nuget.md) — `dnx`, global tool, pinned vs always-latest\n- [Run via Docker](https://github.com/groupdocs-watermark/GroupDocs.Watermark.Mcp.Tests/blob/master/how-to/02-run-via-docker.md)\n- [Verify on the MCP registry](https://github.com/groupdocs-watermark/GroupDocs.Watermark.Mcp.Tests/blob/master/how-to/03-verify-mcp-registry.md)\n- [Use with Claude Desktop](https://github.com/groupdocs-watermark/GroupDocs.Watermark.Mcp.Tests/blob/master/how-to/04-use-with-claude-desktop.md)\n- [Use with VS Code / GitHub Copilot](https://github.com/groupdocs-watermark/GroupDocs.Watermark.Mcp.Tests/blob/master/how-to/05-use-with-vscode-copilot.md)\n- [Run the integration tests](https://github.com/groupdocs-watermark/GroupDocs.Watermark.Mcp.Tests/blob/master/how-to/06-run-integration-tests.md)\n\nThat repo also exercises every advertised tool against the **published** NuGet\nartifact on Linux, macOS, and Windows in CI — so the snippets above are\nverified end-to-end on every release.\n\n## License\n\nMIT — see [LICENSE](LICENSE)\n\n<!-- mcp-name: io.github.groupdocs-watermark/groupdocs-watermark-mcp -->\n",
  "bytes": 12619,
  "sha": "f8a86a9774359623183b9a313ff4e05dc074ab9c3970cadeca4bca94c0c4e4dd",
  "repo_slug": "groupdocs-watermark/groupdocs.watermark.mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_groupdocs_watermark_groupdocs__00b398e4/readme"
}