文档处理工具

Docsmith-MCP 是一个基于 Python 的多格式文档处理工具,支持 Excel、Word、PDF、PowerPoint 等多种文档的读写和查看,提供交互式 MCP 应用。

  • by mcpc-tech
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 mcpc-tech/docsmith-mcp

使用说明

医生史密斯mcp

使用MCP应用程序进行Python驱动的文档处理MCP——使用Python轻松处理Excel、Word、PDF、PowerPoint文档,并通过交互式MCP应用程序美观地查看它们。

特性

  • Excel:读/写 .xlsx 支持工作表和分页的文件
  • 字:读/写 .docx 支持段落和表格的文件
  • PDF:阅读 .pdf 具有文本提取和分页功能的文件
  • 幻灯片:阅读 .pptx 带有幻灯片内容提取功能的文件
  • 文本文件:读/写 .txt, .csv, .md, .json, .yaml, .yml 支持分页
  • 运行Python:执行Python代码以实现灵活的文件操作和数据处理
  • MCP应用程序:漂亮的React+Tailwind CSS应用程序,用于查看所有文档类型
  • 灵活的阅读模式:大文件的原始完全读取或分页
  • 由Pyodide提供技术支持:通过代码运行器mcp在安全的WebAssembly沙盒中运行

快速开始

MCP配置

添加到您的MCP客户端配置中(例如,Claude Desktop、Cline等):

通过npx(推荐):

{
  "mcpServers": {
    "docsmith": {
      "command": "npx",
      "args": ["-y", "docsmith-mcp"],
      "env": {
        "DOC_PAGE_SIZE": "100"
      }
    }
  }
}

通过全局安装:

npm install -g docsmith-mcp
{
  "mcpServers": {
    "docsmith": {
      "command": "docsmith-mcp",
      "env": {
        "DOC_PAGE_SIZE": "100"
      }
    }
  }
}

通过本地路径:

{
  "mcpServers": {
    "docsmith": {
      "command": "node",
      "args": ["/path/to/docsmith-mcp/dist/index.js"]
    }
  }
}

然后使用 read_document 工具:

{
  "file_path": "/path/to/document.xlsx",
  "mode": "paginated",
  "page": 1,
  "page_size": 50
}

MCP应用程序将自动打开,以美观的方式显示文档内容。

支持的格式

格式 扩展 读 写 注释
Excel .xlsx ✅ ✅ 多页支持,分页
Word .docx ✅ ✅ 段落和表格
PDF .pdf ✅ ❌ 带分页的文本提取
PowerPoint .pptx ✅ ❌ 幻灯片内容提取
CSV .csv ✅ ✅ -
文本 .txt, .md ✅ ✅ 分页支持
JSON .json ✅ ✅ -
YAML .yaml, .yml ✅ ✅ -

工具

read_文档

通过自动格式检测读取文档内容。

参数:

  • file_path (字符串,必填):文档的路径
  • mode (字符串,可选): "paginated" 或 "raw" (默认值: "paginated")
  • page (数字,可选):分页模式的页码(默认值:1)
  • page_size (数量,可选):每页项目数(默认值:100)
  • sheet_name (字符串,可选):Excel文件的工作表名称

例子:

{
  "file_path": "/path/to/document.xlsx",
  "mode": "paginated",
  "page": 1,
  "page_size": 50,
  "sheet_name": "Sheet1"
}

write_文档

写文档内容。

参数:

  • file_path (字符串,必填):输出路径
  • format (字符串,必填): "excel", "word", "csv", "txt", "json", "yaml"
  • data (数组/对象,必填):文档内容

例子:

{
  "file_path": "/path/to/output.xlsx",
  "format": "excel",
  "data": [
    ["Product", "Q1", "Q2"],
    ["Laptop", 100, 150],
    ["Mouse", 500, 600]
  ]
}

get_document_info

在不读取完整内容的情况下获取文档元数据。

参数:

  • file_path (字符串,必填):文档的路径

例子:

{
  "file_path": "/path/to/document.pdf"
}

run_python

执行Python代码以实现灵活的文件操作、数据处理和自定义任务。支持任何文件格式和Python库。

参数:

  • code (string,必填):要执行的Python代码
  • packages (对象,可选):所需依赖项的包映射(import_name->pypi_name)
  • file_paths (array,可选):代码需要访问的文件路径

示例:

读取并处理任何文件:

{
  "code": "import json\nwith open('/path/to/file.json') as f:\n    data = json.load(f)\n    result = len(data)\n    print(json.dumps({'count': result}))",
  "file_paths": ["/path/to/file.json"]
}

使用正则表达式批量重命名文件:

{
  "code": "import os, re\nfolder = '/path/to/files'\nfor name in os.listdir(folder):\n    new_name = re.sub(r'old_', 'new_', name)\n    os.rename(os.path.join(folder, name), os.path.join(folder, new_name))\nprint(json.dumps({'success': True}))",
  "file_paths": ["/path/to/files"]
}

使用pandas处理数据:

{
  "code": "import pandas as pd\ndf = pd.read_csv('/path/to/data.csv')\nsummary = df.describe().to_dict()\nprint(json.dumps(summary))",
  "packages": {"pandas": "pandas"},
  "file_paths": ["/path/to/data.csv"]
}

提取存档文件:

{
  "code": "import zipfile, os\nwith zipfile.ZipFile('/path/to/archive.zip', 'r') as z:\n    z.extractall('/path/to/output')\nfiles = os.listdir('/path/to/output')\nprint(json.dumps({'extracted_files': files}))",
  "file_paths": ["/path/to/archive.zip", "/path/to/output"]
}

MCP应用程序

内置的MCP应用程序为查看文档提供了一个美观的交互式界面:

  • Excel:带有粘性标题的交互式表格
  • PDF:逐页文本查看
  • 字:段落和表格渲染
  • 幻灯片:滑动导航

使用React 19、Tailwind CSS v4和Lucide图标构建。

配置

用于自定义行为的环境变量:

变量 描述 默认值
DOC_RAW_FULL_READ 启用完全原始读取模式 false
DOC_PAGE_SIZE 每页默认项目数 100
DOC_MAX_FILE_SIZE 最大文件大小(MB) 50

贡献

看 贡献.md 用于开发设置和贡献指南。

许可证

麻省理工学院