Skip to content
Back to skills

2766 Pandoc Server A65d4d68

ASecurity

The Pandoc MCP Server provides powerful document conversion capabilities using the versatile pandoc tool. This Go-based server enables text conversion between 30+ document formats with support for standalone documents, table of contents generation, and custom metadata. It serves as a bridge between the MCP protocol and pandoc's extensive format conversion capabilities.

  • 9 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added October 11, 2026
researchpythongoshellbashdockertestinggitsecurityperformancedocumentation

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 2766-pandoc-server_a65d4d68 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 2766 Pandoc Server A65d4d68?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 2766 Pandoc Server A65d4d68
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-2766-pandoc-server-a65d4d68/badge)](https://www.skillsdirectory.com/skills/tools-only-2766-pandoc-server-a65d4d68)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
# Pandoc Server

## Overview

The Pandoc MCP Server provides powerful document conversion capabilities using the versatile pandoc tool. This Go-based server enables text conversion between 30+ document formats with support for standalone documents, table of contents generation, and custom metadata. It serves as a bridge between the MCP protocol and pandoc's extensive format conversion capabilities.

### Key Features

- **Convert between 30+ document formats**: Supports markdown, HTML, LaTeX, PDF, DOCX, EPUB, and many more
- **Standalone document generation**: Create complete, self-contained documents
- **Table of contents support**: Automatically generate TOCs for supported formats
- **Custom metadata handling**: Add titles, authors, and other metadata to documents
- **Format discovery tools**: List available input and output formats
- **Health monitoring**: Check pandoc installation and version information

## Quick Start

### Prerequisites

**Pandoc must be installed on the system:**

```bash
# Ubuntu/Debian
sudo apt install pandoc

# macOS
brew install pandoc

# Windows: Download from pandoc.org

# Verify installation
pandoc --version
```

**Go 1.23 or later for building from source.**

### Installation

#### From Source

```bash
# Clone the repository
git clone <repository-url>
cd pandoc-server

# Install dependencies
go mod download

# Build the server
make build
```

#### Using Docker

```bash
# Build the Docker image
docker build -t pandoc-server .

# Run the container
docker run -i pandoc-server
```

### Running the Server

```bash
# Run the built server
./dist/pandoc-server

# Or with ContextForge for HTTP/SSE access
python3 -m mcpgateway.translate --stdio "./dist/pandoc-server" --port 9000
```

## Available Tools

### pandoc
Convert text from one format to another using pandoc.

**Parameters:**

- `from` (required): Input format (e.g., markdown, html, latex, rst, docx, epub)
- `to` (required): Output format (e.g., html, markdown, latex, pdf, docx, plain)
- `input` (required): The text content to convert
- `standalone`: Produce a standalone document (default: false)
- `title`: Document title for standalone documents
- `metadata`: Additional metadata in key=value format
- `toc`: Include table of contents (default: false)

### list-formats
List available pandoc input and output formats.

**Parameters:**

- `type`: Format type to list - 'input', 'output', or 'all' (default: 'all')

### health
Check if pandoc is installed and return version information.

**Returns:**

- Pandoc installation status
- Version information
- Available features and extensions

## Configuration

### MCP Client Configuration

```json
{
  "mcpServers": {
    "pandoc-server": {
      "command": "./dist/pandoc-server"
    }
  }
}
```

### Via ContextForge

```json
{
  "mcpServers": {
    "pandoc-server": {
      "command": "python3",
      "args": ["-m", "mcpgateway.translate", "--stdio", "./dist/pandoc-server", "--port", "9000"]
    }
  }
}
```

## Examples

### Convert Markdown to HTML

```json
{
  "tool": "pandoc",
  "arguments": {
    "from": "markdown",
    "to": "html",
    "input": "# Hello World\n\nThis is **bold** text.",
    "standalone": true,
    "title": "My Document"
  }
}
```

**Response:**
```html
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
  <meta charset="utf-8" />
  <title>My Document</title>
</head>
<body>
<h1 id="hello-world">Hello World</h1>
<p>This is <strong>bold</strong> text.</p>
</body>
</html>
```

### Convert HTML to Markdown

```json
{
  "tool": "pandoc",
  "arguments": {
    "from": "html",
    "to": "markdown",
    "input": "<h1>Title</h1><p>This is a <em>paragraph</em> with <strong>formatting</strong>.</p>"
  }
}
```

### Create LaTeX Document with TOC

```json
{
  "tool": "pandoc",
  "arguments": {
    "from": "markdown",
    "to": "latex",
    "input": "# Introduction\n\nThis is the introduction.\n\n# Main Content\n\nThis is the main content.\n\n# Conclusion\n\nThis is the conclusion.",
    "standalone": true,
    "title": "Research Paper",
    "toc": true,
    "metadata": "author=John Doe,date=2024-01-15"
  }
}
```

### Convert DOCX to Plain Text

```json
{
  "tool": "pandoc",
  "arguments": {
    "from": "docx",
    "to": "plain",
    "input": "<base64-encoded-docx-content>"
  }
}
```

### List Available Formats

```json
{
  "tool": "list-formats",
  "arguments": {
    "type": "input"
  }
}
```

**Response:**
```json
{
  "success": true,
  "format_type": "input",
  "formats": [
    "markdown",
    "html",
    "latex",
    "rst",
    "docx",
    "epub",
    "json",
    "csv",
    "mediawiki",
    "org"
  ]
}
```

### Check Pandoc Health

```json
{
  "tool": "health",
  "arguments": {}
}
```

**Response:**
```json
{
  "success": true,
  "pandoc_installed": true,
  "version": "2.19.2",
  "features": ["pdf-engine", "lua-filters", "bibliography"],
  "status": "healthy"
}
```

## Integration

### With ContextForge

The Pandoc server integrates seamlessly with ContextForge for HTTP and SSE access:

```bash
# Start pandoc server via ContextForge
python3 -m mcpgateway.translate --stdio "./dist/pandoc-server" --port 9000

# Register with ContextForge
curl -X POST http://localhost:8000/gateways \
  -H "Content-Type: application/json" \
  -d '{
    "name": "pandoc-server",
    "url": "http://localhost:9000",
    "description": "Document conversion server using Pandoc"
  }'
```

### Programmatic Usage

```go
// Example Go client usage
package main

import (
    "context"
    "fmt"
    "log"

    "github.com/your-org/mcp-go-client"
)

func main() {
    client, err := mcp.NewStdioClient("./dist/pandoc-server")
    if err != nil {
        log.Fatal(err)
    }
    defer client.Close()

    // Convert markdown to HTML
    result, err := client.CallTool(context.Background(), "pandoc", map[string]any{
        "from":       "markdown",
        "to":         "html",
        "input":      "# Hello\n\nWorld!",
        "standalone": true,
    })
    if err != nil {
        log.Fatal(err)
    }

    fmt.Println(result)
}
```

## Supported Formats

Pandoc supports numerous input and output formats. Use the `list-formats` tool to see all available formats on your system.

### Common Input Formats

- **markdown**: Pandoc's extended Markdown
- **html**: HTML documents
- **latex**: LaTeX documents
- **rst**: reStructuredText
- **docx**: Microsoft Word documents
- **epub**: EPUB e-books
- **json**: Pandoc JSON format
- **csv**: Comma-separated values
- **mediawiki**: MediaWiki markup
- **org**: Emacs Org mode

### Common Output Formats

- **html**: HTML documents
- **markdown**: Markdown format
- **latex**: LaTeX documents
- **pdf**: PDF documents (requires LaTeX)
- **docx**: Microsoft Word documents
- **epub**: EPUB e-books
- **plain**: Plain text
- **json**: Pandoc JSON format
- **asciidoc**: AsciiDoc format
- **rst**: reStructuredText

## Advanced Features

### Metadata Handling

```json
{
  "tool": "pandoc",
  "arguments": {
    "from": "markdown",
    "to": "html",
    "input": "# Document\n\nContent here.",
    "standalone": true,
    "title": "My Article",
    "metadata": "author=John Doe,date=2024-01-15,keywords=documentation pandoc"
  }
}
```

### Table of Contents Generation

```json
{
  "tool": "pandoc",
  "arguments": {
    "from": "markdown",
    "to": "html",
    "input": "# Chapter 1\n\n## Section 1.1\n\n### Subsection 1.1.1\n\n# Chapter 2\n\n## Section 2.1",
    "standalone": true,
    "toc": true,
    "title": "Technical Manual"
  }
}
```

### Batch Processing

```go
// Example batch conversion
documents := []struct {
    input  string
    format string
}{
    {"# Doc 1\n\nContent 1", "html"},
    {"# Doc 2\n\nContent 2", "latex"},
    {"# Doc 3\n\nContent 3", "docx"},
}

for i, doc := range documents {
    result, err := client.CallTool(context.Background(), "pandoc", map[string]any{
        "from":       "markdown",
        "to":         doc.format,
        "input":      doc.input,
        "standalone": true,
        "title":      fmt.Sprintf("Document %d", i+1),
    })
    if err != nil {
        log.Printf("Error converting doc %d: %v", i+1, err)
        continue
    }

    // Process result...
}
```

## Use Cases

### Documentation Workflows
- Convert Markdown documentation to HTML for web publishing
- Generate PDF versions of documentation from Markdown sources
- Transform reStructuredText to various output formats

### Content Publishing
- Convert blog posts between different markup formats
- Generate e-books (EPUB) from Markdown sources
- Create presentation slides from Markdown

### Academic Writing
- Convert between LaTeX and Word formats for collaboration
- Generate bibliographies and citations
- Create formatted academic papers

### Report Generation
- Convert data reports to multiple output formats
- Generate executive summaries in different formats
- Create standardized document templates

### Migration Projects
- Convert legacy document formats to modern alternatives
- Batch process document archives
- Standardize document formats across organizations

## Error Handling

The server provides comprehensive error handling for:

- **Missing Pandoc Installation**: Clear error messages with installation guidance
- **Unsupported Format Combinations**: Validation of input/output format compatibility
- **Invalid Input Content**: Proper error reporting for malformed documents
- **Conversion Failures**: Detailed pandoc error messages
- **Resource Limits**: Handling of large documents and memory constraints

## Development

### Building from Source

```bash
# Format code
make fmt

# Run tests
make test

# Tidy dependencies
make tidy

# Build binary
make build
```

### Testing

```bash
# Run all tests
make test

# Test specific functionality
go test -v ./...

# Test with coverage
go test -cover ./...
```

### Docker Development

```bash
# Build development image
docker build -t pandoc-server:dev .

# Run tests in container
docker run --rm pandoc-server:dev make test

# Interactive development shell
docker run --rm -it pandoc-server:dev /bin/sh
```

## Performance Considerations

- **Pandoc Startup Overhead**: Each conversion spawns a new pandoc process
- **Large Documents**: Memory usage scales with document size
- **Complex Formats**: PDF generation requires LaTeX installation and is slower
- **Concurrent Requests**: The server can handle multiple simultaneous conversions
- **Caching**: Consider implementing caching for frequently converted content

## Security Considerations

- **Input Validation**: The server validates input formats and content
- **Process Isolation**: Each pandoc conversion runs in a separate process
- **Resource Limits**: Consider implementing timeouts for long-running conversions
- **File System Access**: Pandoc may access local files for includes and templates

## Limitations

- **Format Support**: Available formats depend on pandoc installation and features
- **Binary Content**: Some formats require special handling for binary content
- **Template Dependencies**: Custom templates and includes may require additional setup
- **PDF Generation**: Requires LaTeX installation for PDF output
- **Large Files**: Very large documents may hit memory or processing limits

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.