项目简介

Markdownify Server 是一个基于 Model Context Protocol (MCP) 构建的后端服务器,旨在为大型语言模型(LLM)应用提供便捷的 Markdown 格式内容转换服务。它通过 MCP 协议与客户端通信,提供一系列工具,可以将多种文件类型(如 PDF, DOCX, 图片, 音频等)和网络内容(如网页, YouTube 视频, Bing 搜索结果等)转换为 Markdown 文本。

主要功能点

  • 多格式文件转 Markdown: 支持 PDF, 图片, 音频 (含转录), DOCX, XLSX, PPTX 等多种文件格式转换为 Markdown。
  • 网络内容转 Markdown: 支持 YouTube 视频转录, Bing 搜索结果, 普通网页等网络内容转换为 Markdown。
  • 获取 Markdown 文件: 可以通过文件路径直接读取已有的 Markdown 文件内容。
  • MCP 标准协议: 遵循 MCP 协议,易于与支持 MCP 的 LLM 客户端集成。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/alvinirving/seed
    cd seed
  2. 安装依赖:

    pnpm install

    这个命令会自动安装项目依赖,包括 'uv' 和相关的 Python 依赖。

  3. 构建项目:

    pnpm run build
  4. 启动服务器:

    pnpm start

    服务器默认在本地启动。

服务器配置

要将 Markdownify Server 集成到 MCP 客户端应用中,您需要在应用的服务器配置中添加以下 JSON 配置信息。请注意,您需要将 '{ABSOLUTE PATH TO FILE HERE}' 替换为 'seed' 仓库 'dist/index.js' 文件的绝对路径。

{
  "mcpServers": {
    "markdownify": {
      "command": "node",
      "args": [
        "{ABSOLUTE PATH TO FILE HERE}/dist/index.js"
      ],
      "env": {
        // UV_PATH 环境变量用于指定 uv 的安装路径。
        // 默认情况下,服务器会尝试使用 uv 的默认安装位置。
        // 如果 uv 没有安装在默认位置,您需要手动指定 UV_PATH。
        "UV_PATH": "/path/to/uv"
      }
    }
  }
}

配置参数说明:

  • server name (markdownify): 服务器名称,客户端使用此名称来引用该服务器。您可以自定义名称。
  • command (node): 启动服务器的命令,这里使用 Node.js 运行时环境。
  • args: 传递给启动命令的参数,这里指定了服务器入口文件 'dist/index.js' 的绝对路径。
  • env: 环境变量配置,'UV_PATH' 用于指定 'uv' 工具的路径。'uv' 是项目依赖的 Python 环境和包管理器,用于执行文件转换操作。如果您的 'uv' 可执行文件不在默认路径,请在此处指定其绝对路径。

基本使用方法

Markdownify Server 作为一个 MCP 服务器,需要与 MCP 客户端配合使用。客户端通过 JSON-RPC 协议向服务器发送请求,调用服务器提供的工具。

可用工具列表:

  • 'youtube-to-markdown': 将 YouTube 视频转换为 Markdown。
  • 'pdf-to-markdown': 将 PDF 文件转换为 Markdown。
  • 'bing-search-to-markdown': 将 Bing 搜索结果页面转换为 Markdown。
  • 'webpage-to-markdown': 将网页转换为 Markdown。
  • 'image-to-markdown': 将图片转换为 Markdown,包含元数据。
  • 'audio-to-markdown': 将音频文件转换为 Markdown,包含转录文本(如果可能)。
  • 'docx-to-markdown': 将 DOCX 文件转换为 Markdown。
  • 'xlsx-to-markdown': 将 XLSX 文件转换为 Markdown。
  • 'pptx-to-markdown': 将 PPTX 文件转换为 Markdown。
  • 'get-markdown-file': 获取指定路径的 Markdown 文件内容。

使用示例:

客户端可以通过 'CallToolRequest' 请求调用上述工具,例如调用 'pdf-to-markdown' 工具将 PDF 文件转换为 Markdown。具体的请求格式和工具参数定义请参考仓库 'src/tools.ts' 文件中的 'ToolSchema' 定义。客户端需要根据工具的 'inputSchema' 构造请求参数。服务器会将转换后的 Markdown 文本作为 'CallToolResponse' 返回给客户端。

信息

分类

开发者工具