项目简介
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 客户端集成。
安装步骤
-
克隆仓库:
git clone https://github.com/alvinirving/seed cd seed -
安装依赖:
pnpm install这个命令会自动安装项目依赖,包括 'uv' 和相关的 Python 依赖。
-
构建项目:
pnpm run build -
启动服务器:
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' 返回给客户端。
信息
分类
开发者工具