项目简介

Markdownify MCP Server 旨在作为一个桥梁,连接大型语言模型(LLM)客户端和各种文档及在线内容。它实现了 Model Context Protocol (MCP),充当一个上下文服务器,专注于将不同格式的文件(如 PDF、DOCX、图片、音频等)以及网页内容(如 YouTube 视频、网页、Bing 搜索结果)转换为 Markdown 文本。这使得 LLM 应用能够方便地获取和处理结构化的文本信息,从而更好地理解和利用这些内容。

主要功能点

  • 多种文件格式转换: 支持 PDF, 图片, 音频 (带转录), DOCX, XLSX, PPTX 等多种文件格式到 Markdown 的转换。
  • 网页内容转换: 支持 YouTube 视频转录, Bing 搜索结果, 普通网页等网页内容到 Markdown 的转换。
  • 获取 Markdown 文件: 提供工具直接读取已存在的 Markdown 文件。
  • 基于 MCP 协议: 遵循 Model Context Protocol 标准,易于与任何兼容 MCP 协议的 LLM 客户端集成。
  • 工具化设计: 每个转换功能都以独立工具的形式提供,方便客户端按需调用。

安装步骤

  1. 克隆仓库:

    git clone https://github.com/azkal279/slope
    cd slope
  2. 安装依赖: 确保你的系统已安装 'pnpm' 和 'node.js'。然后运行以下命令安装项目依赖:

    pnpm install

    这个命令还会安装 'uv' 和相关的 Python 依赖,'uv' 是项目依赖的工具。

  3. 构建项目: 运行以下命令编译 TypeScript 代码:

    pnpm run build
  4. 启动服务器: 运行以下命令启动 MCP 服务器:

    pnpm start

    服务器默认使用 Stdio 传输协议。

服务器配置

要将 Markdownify MCP Server 集成到 MCP 客户端应用中,你需要在客户端的服务器配置中添加以下 JSON 配置信息。请根据你的实际文件路径进行调整:

{
  "mcpServers": {
    "markdownify": {
      "command": "node",
      "args": [
        "{ABSOLUTE PATH TO FILE HERE}/dist/index.js"  // 将 {ABSOLUTE PATH TO FILE HERE} 替换为 slope 仓库 dist/index.js 文件的绝对路径
      ],
      "env": {
        "UV_PATH": "/path/to/uv" // 可选配置 uv 的路径,默认会尝试使用 uv 的默认安装位置。如果 uv 不在默认路径,请修改为 uv 可执行文件的绝对路径。
      }
    }
  }
}

配置说明:

  • '"markdownify"': 服务器名称,客户端用于标识和调用该服务器。
  • '"command": "node"': 启动服务器的命令,这里使用 Node.js 运行时。
  • '"args"': 启动命令的参数,指定了服务器入口文件 'dist/index.js' 的绝对路径。请务必将 '{ABSOLUTE PATH TO FILE HERE}' 替换为实际的 'dist/index.js' 文件在你系统中的绝对路径。 例如,如果你的 slope 仓库在 '/Users/yourname/slope',则应修改为 '/Users/yourname/slope/dist/index.js'。
  • '"env"': 环境变量配置,'UV_PATH' 用于指定 'uv' 工具的路径。如果 'uv' 可执行文件不在默认的 '/usr/local/bin' 或 '/usr/bin' 等路径下,你需要在此处指定 'uv' 的绝对路径。通常情况下,如果 'pnpm install' 成功执行,'uv' 应该会被安装在默认路径,你可以尝试不配置 'UV_PATH' 先运行,如果遇到 'uv' 相关的错误再进行配置。

基本使用方法

  1. 客户端连接: 在 MCP 客户端应用中配置上述服务器信息,客户端会尝试连接到 Markdownify MCP Server。
  2. 列出工具: 客户端可以发送 'ListToolsRequest' 请求到服务器,获取服务器支持的工具列表。Markdownify MCP Server 将返回所有可用的 Markdown 转换工具,例如 'youtube-to-markdown', 'pdf-to-markdown' 等。
  3. 调用工具: 客户端可以通过 'CallToolRequest' 请求调用具体的工具。例如,要将本地 PDF 文件转换为 Markdown,客户端可以调用 'pdf-to-markdown' 工具,并在请求参数中提供 PDF 文件的绝对路径 'filepath'。
  4. 获取结果: 服务器执行工具后,会将转换后的 Markdown 文本内容以及输出文件路径等信息封装在 'CallToolResponse' 中返回给客户端。客户端可以根据响应内容进行后续处理。

示例:调用 'pdf-to-markdown' 工具

假设客户端要调用 'pdf-to-markdown' 工具转换位于 '/path/to/your/document.pdf' 的 PDF 文件。客户端需要构造一个 'CallToolRequest',其中 'tool_name' 为 'pdf-to-markdown','arguments' 为包含 'filepath' 属性的 JSON 对象:

{
  "method": "call_tool",
  "params": {
    "tool_name": "pdf-to-markdown",
    "arguments": {
      "filepath": "/path/to/your/document.pdf"
    }
  },
  "id": "your_request_id" //  客户端自定义的请求 ID
}

服务器收到请求后,会执行 PDF 转换,并将结果返回给客户端。客户端解析 'CallToolResponse' 即可获取转换后的 Markdown 内容。

信息

分类

网页与API