From 3bfb821c0962bebbc157a37bc22919dc3c5220bf Mon Sep 17 00:00:00 2001 From: afourney Date: Tue, 3 Jun 2025 09:35:33 -0700 Subject: [PATCH] Have the MarkItDown MCP server read MARKITDOWN_ENABLE_PLUGINS from ENV (#1273) * Have the MarkItdown MCP server read MARKITDOWN_ENABLE_PLUGINS from os.environ * Update the Dockerfile to enable plugins. No puglins are installed by default. --- packages/markitdown-mcp/Dockerfile | 2 ++ .../markitdown-mcp/src/markitdown_mcp/__main__.py | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/markitdown-mcp/Dockerfile b/packages/markitdown-mcp/Dockerfile index fe52a4b..773936a 100644 --- a/packages/markitdown-mcp/Dockerfile +++ b/packages/markitdown-mcp/Dockerfile @@ -3,8 +3,10 @@ FROM python:3.13-slim-bullseye ENV DEBIAN_FRONTEND=noninteractive ENV EXIFTOOL_PATH=/usr/bin/exiftool ENV FFMPEG_PATH=/usr/bin/ffmpeg +ENV MARKITDOWN_ENABLE_PLUGINS=True # Runtime dependency +# NOTE: Add any additional MarkItDown plugins here RUN apt-get update && apt-get install -y --no-install-recommends \ ffmpeg \ exiftool diff --git a/packages/markitdown-mcp/src/markitdown_mcp/__main__.py b/packages/markitdown-mcp/src/markitdown_mcp/__main__.py index e2f4b16..77ade99 100644 --- a/packages/markitdown-mcp/src/markitdown_mcp/__main__.py +++ b/packages/markitdown-mcp/src/markitdown_mcp/__main__.py @@ -1,5 +1,6 @@ import contextlib import sys +import os from collections.abc import AsyncIterator from mcp.server.fastmcp import FastMCP from starlette.applications import Starlette @@ -19,7 +20,15 @@ mcp = FastMCP("markitdown") @mcp.tool() async def convert_to_markdown(uri: str) -> str: """Convert a resource described by an http:, https:, file: or data: URI to markdown""" - return MarkItDown().convert_uri(uri).markdown + return MarkItDown(enable_plugins=check_plugins_enabled()).convert_uri(uri).markdown + + +def check_plugins_enabled() -> bool: + return os.getenv("MARKITDOWN_ENABLE_PLUGINS", "false").strip().lower() in ( + "true", + "1", + "yes", + ) def create_starlette_app(mcp_server: Server, *, debug: bool = False) -> Starlette: