Skip to main content
Glama

mcp-md-converter

MCP server exposing two tools so an AI coding agent (Claude Code, etc.) can turn a Markdown file it just wrote into a PDF or a Google Doc.

  • md_to_pdf — renders Markdown → HTML → PDF locally via headless Chromium (puppeteer). No network, no Google account needed.

  • md_to_gdoc — uploads Markdown (as HTML) to Google Drive, which auto-converts it into a native, formatted Google Doc (headings, lists, tables, code blocks).

1. Install

cd mcp-md-converter
npm install
npm run build

Related MCP server: Markdown2PDF MCP Server

2. Google auth (only needed for md_to_gdoc)

  1. In Google Cloud Console, create/select a project.

  2. Enable the Google Drive API.

  3. Create OAuth client credentials → Application type Desktop app.

  4. Download the JSON and save it as:

    ~/.mcp-md-converter/credentials.json
  5. Run the one-time login:

    npm run auth

    This opens a browser, you approve access, and a token.json is cached in ~/.mcp-md-converter/. Refresh tokens auto-renew after that — no repeat login.

Scope used: drive.file (the app can only see/create files it makes — not your whole Drive).

3. Register with Claude Code

claude mcp add md-converter -- node /Users/bheshrajneupane/Agent/mcp-md-converter/dist/main.js

Or add directly to your MCP config (.mcp.json / Claude Code settings):

{
  "mcpServers": {
    "md-converter": {
      "command": "node",
      "args": ["/Users/bheshrajneupane/Agent/mcp-md-converter/dist/main.js"]
    }
  }
}

4. Usage

Once registered, ask the agent things like:

  • "Convert README.md to a PDF at ~/Desktop/readme.pdf"

  • "Turn this markdown into a Google Doc titled 'Design Spec'"

Tool params:

Tool

Params

md_to_pdf

markdown_path | markdown, out_path (required), title

md_to_gdoc

markdown_path | markdown, title, folder_id (optional Drive folder)

Troubleshooting

  • PDF render fails to launch Chromium (sandboxed/restricted shells, some CI): point puppeteer at a system Chrome install instead of its bundled one:

    export PUPPETEER_EXECUTABLE_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

    Set this env var wherever the MCP server process launches (shell profile, or in the mcpServers config's env block).

Notes

  • PDF rendering downloads a Chromium build via puppeteer on npm install (~150MB, one-time).

  • Google Doc conversion relies on Drive's HTML→Docs import, so formatting fidelity matches what you'd get pasting HTML into Drive's "New > File upload" — solid for headings, lists, tables, bold/italic, code blocks; very exotic Markdown extensions may not map 1:1.

Available Tools

2 tools
md_to_gdocConvert Markdown to Google DocA

Upload a Markdown file (or raw Markdown text) to Google Drive as a native Google Doc, preserving headings/lists/tables/code formatting. Requires prior one-time auth (run npm run auth in the mcp-md-converter project).

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoGoogle Doc title (defaults to filename or 'Document')
markdownNoRaw markdown text to convert (alternative to markdown_path)
folder_idNoGoogle Drive folder ID to place the doc in (optional)
markdown_pathNoAbsolute path to the .md file to convert

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden. It discloses the auth prerequisite and formatting preservation, but does not mention what happens if a doc with the same title exists, whether the operation can overwrite, or error behavior. The write nature is implied by 'Upload... upload' but not explicitly flagged as a mutating action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences, front-loaded with the primary action, followed by the auth prerequisite. Every sentence earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 4 optional parameters, no output schema, and no annotations, the description covers the core purpose, input formats, formatting behavior, and prerequisite auth. It does not describe return values, but since there is no output schema, this is a minor gap. The description is sufficiently complete for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so a baseline of 3 applies. The description adds meaningful guidance by noting the two input alternatives ('Markdown file or raw Markdown text'), which clarifies the relationship between markdown_path and markdown. It also mentions title defaults, reinforcing the schema information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Upload') and clearly identifies the resource ('Markdown file... to Google Drive as a native Google Doc') and the action's scope (preserving formatting). It also distinguishes from the sibling md_to_pdf by targeting Google Docs rather than PDF output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage—converting markdown into a Google Doc—but does not explicitly state when to use this tool versus the sibling md_to_pdf. It does provide context (requires auth) but lacks exclusion criteria or alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

md_to_pdfConvert Markdown to PDFA

Render a Markdown file (or raw Markdown text) to a PDF file on disk, using a headless Chromium render. No network or Google account needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoDocument title (used in <title>)
markdownNoRaw markdown text to convert (alternative to markdown_path)
out_pathYesAbsolute path to write the output .pdf file to
markdown_pathNoAbsolute path to the .md file to convert

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full transparency burden. It discloses the render mechanism (headless Chromium), supports both file and raw text input, and clarifies offline operation. It does not mention overwrite behavior or error handling, but for a straightforward converter, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the primary action, and contains no extraneous information. Every word contributes to understanding the tool's purpose and key traits.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity, a full output schema is not necessary. The description, combined with a well-documented schema, covers the tool's purpose, mechanism, and offline nature. It lacks explicit return-value or error-handling details, but these are not critical for a conversion tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 100% coverage with clear descriptions for all 4 parameters, so the baseline is 3. The description adds minimal param-level information beyond what the schema already states, though it does highlight the dual input modes (markdown_path vs markdown), which is already captured in the schema. No significant additional semantic value is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action: 'Render a Markdown file (or raw Markdown text) to a PDF file on disk,' with a specified mechanism ('headless Chromium'). It distinguishes itself from the sibling tool md_to_gdoc by emphasizing 'No network or Google account needed,' which is a clear differentiation between a local offline converter and a Google-Docs-based one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong context for when to use this tool: it is offline and requires no network/Google account, which implicitly contrasts with the sibling tool. However, it does not explicitly name the sibling or provide 'when not to use' guidance, so it falls short of a perfect 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.2/5.0
Disambiguation5/5

Each tool targets a distinct output format: PDF via headless Chromium and Google Doc via Drive upload. No overlap in purpose, making selection unambiguous.

Naming Consistency5/5

Both tool names follow the consistent 'md_to_<format>' pattern, making the naming predictable and clear.

Tool Count3/5

With only two tools, the server feels slightly thin for a general-purpose Markdown converter, but it is still reasonably scoped for the specific PDF and Google Doc workflows.

Completeness4/5

The server covers two common conversion targets (PDF and Google Doc) with no missing operations within those workflows. Minor gaps exist such as no HTML or DOCX output, but the core purpose is satisfied.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/BheshRajNeupane/mcp-md-converter'

If you have feedback or need assistance with the MCP directory API, please join our Discord server