Wraps the GroupDocs.Markdown library into two MCP tools: ConvertToMarkdown takes PDFs, DOCX, XLSX, EPUB, and other formats and produces clean Markdown with base64-embedded images, while GetDocumentInfo returns metadata like page count and author without conversion. Runs via dnx with no native dependencies thanks to a bundled SkiaSharp renderer. Works in Claude Desktop, VS Code, and GitHub Copilot. Note that reverse conversion (Markdown to document) isn't implemented in the underlying engine yet, so if you need Markdown to PDF or DOCX, you'll want the GroupDocs.Conversion MCP instead. Evaluation mode runs without a license but adds watermarks.
MCP server that exposes GroupDocs.Markdown as AI-callable tools for Claude, Cursor, GitHub Copilot, and other MCP agents — convert documents to clean, structured Markdown.
Requires .NET 10 SDK.
Run directly with dnx (recommended — no install step):
dnx GroupDocs.Markdown.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.Markdown.Mcp@26.5.0 --yes
Or install as a global dotnet tool:
dotnet tool install -g GroupDocs.Markdown.Mcp
groupdocs-markdown-mcp
Or run via Docker:
docker run --rm -i \
-v $(pwd)/documents:/data \
ghcr.io/groupdocs-markdown/markdown-net-mcp:latest
No native prerequisites are required on any platform — the underlying
GroupDocs.Markdown engine renders image-bearing documents through a
self-contained SkiaSharp native asset, so dnx, the global tool, and the
Docker image all run with no extra apt/brew setup.
| Tool | Description |
|---|---|
ConvertToMarkdown | Converts a document (PDF, DOCX, XLSX, EPUB, MOBI, …) to clean, structured Markdown and saves the .md to storage. Images embed as base64 by default. |
GetDocumentInfo | Returns file format, page count, title, author, and encryption flag as JSON, without converting. |
Reverse Markdown → document composition is not yet implemented in the underlying GroupDocs.Markdown 26.3.0 engine (
MarkdownConverter.FromMarkdownStringthrowsNotImplementedException), so this server does not expose aComposeFromMarkdowntool. Use the GroupDocs.Conversion MCP with a.mdsource file if you need Markdown → DOCX / PDF / HTML output today.
| 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) |
In evaluation mode (no license) the converted Markdown may be limited and can
include an evaluation notice. Supply GROUPDOCS_LICENSE_PATH for unrestricted
output.
{
"mcpServers": {
"groupdocs-markdown": {
"type": "stdio",
"command": "dnx",
"args": ["GroupDocs.Markdown.Mcp", "--yes"],
"env": {
"GROUPDOCS_MCP_STORAGE_PATH": "/path/to/documents"
}
}
}
}
To pin to a specific version, replace
"GroupDocs.Markdown.Mcp"with"GroupDocs.Markdown.Mcp@26.5.0"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-markdown": {
"type": "stdio",
"command": "dnx",
"args": ["GroupDocs.Markdown.Mcp", "--yes"],
"env": {
"GROUPDOCS_MCP_STORAGE_PATH": "${input:storage_path}"
}
}
}
}
Same pinning rule as above — swap
"GroupDocs.Markdown.Mcp"for"GroupDocs.Markdown.Mcp@26.5.0"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.Markdown.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