Wraps the GroupDocs.Metadata .NET library as an MCP server so AI agents can read and strip metadata from documents. Exposes two tools: ReadMetadata pulls all properties (author, title, dates, custom fields) as JSON, and RemoveMetadata writes a cleaned copy back to disk. Runs via dnx (no install), as a global .NET tool, or in Docker. Configure storage paths through environment variables and optionally point to a license file to exit evaluation mode. Most useful when you're building document workflows that need metadata inspection or sanitization and want Claude or Copilot to handle it directly without writing extraction code.
MCP server that exposes GroupDocs.Metadata as AI-callable tools for Claude, Cursor, GitHub Copilot, and other MCP agents.
Requires .NET 10 SDK.
Run directly with dnx (recommended — no install step):
dnx GroupDocs.Metadata.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.Metadata.Mcp@26.5.1 --yes
Or install as a global dotnet tool:
dotnet tool install -g GroupDocs.Metadata.Mcp
groupdocs-metadata-mcp
Or run via Docker:
docker run --rm -i \
-v $(pwd)/documents:/data \
ghcr.io/groupdocs-metadata/metadata-net-mcp:latest
| Tool | Description |
|---|---|
ReadMetadata | Reads all metadata properties (author, title, creation date, custom properties) and returns them as JSON |
RemoveMetadata | Removes all metadata from a document and saves the cleaned file to storage |
| Variable | Description | Default |
|---|---|---|
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) |
{
"mcpServers": {
"groupdocs-metadata": {
"type": "stdio",
"command": "dnx",
"args": ["GroupDocs.Metadata.Mcp", "--yes"],
"env": {
"GROUPDOCS_MCP_STORAGE_PATH": "/path/to/documents"
}
}
}
}
To pin to a specific version, replace
"GroupDocs.Metadata.Mcp"with"GroupDocs.Metadata.Mcp@26.5.1"inargs. Pinning is recommended for shared / committed configs to avoid surprise upgrades.
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-metadata": {
"type": "stdio",
"command": "dnx",
"args": ["GroupDocs.Metadata.Mcp", "--yes"],
"env": {
"GROUPDOCS_MCP_STORAGE_PATH": "${input:storage_path}"
}
}
}
}
Same pinning rule as above — swap
"GroupDocs.Metadata.Mcp"for"GroupDocs.Metadata.Mcp@26.5.1"to lock to a specific release.
cd docker
docker compose up
Edit docker/docker-compose.yml to point volumes at your local documents folder.
Step-by-step deployment guides and a published-package integration test suite live in the companion repo GroupDocs.Metadata.Mcp.Tests:
dnx, global tool, pinned vs always-latestThat 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.
MIT — see LICENSE
GROUPDOCS_MCP_STORAGE_PATHGROUPDOCS_MCP_OUTPUT_PATHGROUPDOCS_LICENSE_PATHcsoai-org/pdf-document-mcp
xt765/mcp-document-converter
io.github.xjtlumedia/markdown-formatter
io.github.ai-aviate/better-notion
suekou/mcp-notion-server
meterlong/mcp-doc