Licensing

The GroupDocs.Search MCP server runs in evaluation mode out of the box — no sign-up, no key. Your existing GroupDocs.Search license unlocks it: mount the .lic file into the container and point GROUPDOCS_LICENSE_PATH at it.

The MCP server itself is open source (MIT); the underlying GroupDocs.Search engine requires a license for production use.

There are three modes. The server takes the first one that is configured:

ModeConfigureResult
Metered (pay-per-use)GROUPDOCS_METERED_PUBLIC_KEY and GROUPDOCS_METERED_PRIVATE_KEYBilled for what you process; no evaluation limits
License fileGROUPDOCS_LICENSE_PATHFully licensed; works offline
EvaluationnothingAn index holds at most 100 documents and a search returns at most 10 — every response says so
Note
Metered wins. If both metered keys and a license file are configured, the server uses metered licensing and ignores the file — and says so in its startup log.

Evaluation mode limitations

Without a license:

  • An index holds at most 100 documents, and a search returns at most 10 documents. Results past the cap are not shown — the answer looks complete and is not.
  • Every response carries an evaluation note while the limits apply, so an agent can tell you.
  • Text extracted from some formats (DOCX and PDF in our tests) gains a line “Evaluation only. Created with GroupDocs.Parser for .NET…”, and it can appear in get_text_fragments output. After you license the server, re-index with create_index (recreate: true) and add_to_index to drop it.
  • The library’s own evaluation terms: evaluation limitations and licensing.

The evaluation note every response carries, verbatim:

Evaluation mode: an index holds at most 100 documents and a search returns
at most 10 documents. Set GROUPDOCS_LICENSE_PATH, or
GROUPDOCS_METERED_PUBLIC_KEY and GROUPDOCS_METERED_PRIVATE_KEY, to lift
both limits.

(Wrapped for width.) An empty license path is always safe — the server continues in evaluation mode; it never errors because a license is absent.

Applying a license file

Mount the license folder read-only and point the variable at the file inside the container:

docker run --rm -i -v /path/to/documents:/data \
  -v /path/to/license-folder:/license:ro \
  -e GROUPDOCS_LICENSE_PATH=/license/GroupDocs.Search.lic \
  ghcr.io/groupdocs-search/search-net-mcp:latest

In a client config, the same three arguments go into args before the image name. Your license file is read from local disk by the local container — like your documents, it never leaves your machine.

After licensing, rebuild indexes that were built in evaluation mode — create_index with recreate: true, then add_to_index — so the evaluation text drops out of the stored content and indexes can grow past 100 documents.

Metered (pay-per-use) licensing

Metered licensing bills you for what you actually process, which suits AI agents: their usage is bursty and hard to size in advance. One key pair covers every GroupDocs product and platform. Forward the two variables to the container by name — -e VAR with no value copies it from the launching process, so the key never appears in a config file:

docker run --rm -i -v /path/to/documents:/data \
  -e GROUPDOCS_METERED_PUBLIC_KEY -e GROUPDOCS_METERED_PRIVATE_KEY \
  ghcr.io/groupdocs-search/search-net-mcp:latest

Set both variables in your OS environment (a stdio server inherits its client’s environment). Never commit a literal private key in a project-scoped .mcp.json.

Warning
Both keys are required, and metered mode needs outbound connectivity. With only one key set the server stays in evaluation mode and says so. Usage — never document content — is reported to GroupDocs servers, so firewalled deployments must allow that egress or use a license file.

Confirming which mode is active

Ask your agent “is the search server licensed?”. The get_license_status tool answers without touching an index — captured from server 26.10.1, unlicensed:

{
  "mode": "evaluation",
  "licensed": false,
  "server": { "name": "GroupDocs.Search.Mcp", "version": "26.10.1" },
  "engine": { "name": "GroupDocs.Search", "version": "26.10" },
  "note": "No license configured — output may carry evaluation limitations. ..."
}

If a key pair is rejected, the mode stays evaluation and note says why — so a mistyped key surfaces here instead of as a search that quietly stops at 10 documents.

Getting a license