Skip to main content

MCP server for unifiles - unified file operations library. Provides Excel, PDF, Word, and SQLite file operations through Model Context Protocol.

Project description

unifiles-mcp

MCP server for unifiles - unified file operations library.

简介

unifiles-mcp 是一个基于 MCP Python SDK 官方 SDK 构建的 Model Context Protocol (MCP) 服务器,为 AI 助手提供统一的文件操作能力。它使用官方的 FastMCP 高级接口,封装了 unifiles 库的功能,支持 Excel、PDF、Word、SQLite 等多种文件格式的读取、写入、查询和管理。

功能特性

  • 统一接口: 通过 MCP 协议提供标准化的文件操作接口
  • 多格式支持: Excel (.xlsx, .xls), PDF (.pdf), Word (.docx), SQLite (.db, .sqlite)
  • 类型安全: 完整的类型注解,基于 Pydantic V2
  • 异步优先: 所有操作使用异步方式,提高性能
  • LLM 友好: 优化的工具设计,减少调用次数

环境要求

  • Python: 3.10+
  • 操作系统: Windows 10+, Linux, macOS 10.14+

安装

从源码安装(开发模式,含测试与类型检查等依赖):

git clone https://github.com/Asheng008/unifiles-mcp.git
cd unifiles-mcp
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e ".[dev]"

仅安装运行依赖:

pip install -e .

使用依赖锁文件安装(推荐用于生产环境):

pip install -r requirements.txt

若已发布到 PyPI:

pip install unifiles-mcp

快速开始

启动服务器

安装后可在终端直接运行:

unifiles-mcp

或从代码启动:

from unifiles_mcp.main import mcp

if __name__ == "__main__":
    mcp.run()

使用 MCP 客户端连接

服务器启动后,可以通过 MCP 客户端(如 Claude Desktop)连接使用。

使用示例

Excel 文件操作

# 1. 检查 Excel 文件结构
result = await excel_inspect_file({
    "file_path": "data.xlsx",
    "include_preview": True,
    "preview_rows": 3
})
# 返回:文件信息,包括所有工作表名称、列名和预览数据

# 2. 读取工作表内容
result = await excel_read_sheet({
    "file_path": "data.xlsx",
    "sheet_name": "Sheet1"
})
# 返回:JSON 格式的工作表数据

SQLite 数据库操作

# 1. 检查数据库结构
result = await sqlite_inspect_database({
    "db_path": "database.db",
    "include_preview": True
})
# 返回:数据库信息,包括所有表的结构和数据预览

# 2. 获取表结构
result = await sqlite_get_schema({
    "db_path": "database.db",
    "table_name": "users"
})
# 返回:字段名到类型的映射

# 3. 执行查询
result = await sqlite_query({
    "db_path": "database.db",
    "sql": "SELECT * FROM users WHERE age > :age",
    "params": {"age": 18}
})
# 返回:JSON 格式的查询结果

PDF 文本提取

# 提取所有页面
result = await pdf_extract_text({
    "file_path": "document.pdf"
})

# 提取指定页面范围
result = await pdf_extract_text({
    "file_path": "document.pdf",
    "page_range": (1, 5)  # 第 1 到第 5 页
})

Word 文档读取

result = await word_read_document({
    "file_path": "document.docx"
})
# 返回:文档的文本内容

核心工具(v0.1.2)

Excel 工具

  • excel_inspect_file - 检查 Excel 文件结构("上帝视角")
  • excel_read_sheet - 读取 Excel 工作表内容

PDF 工具

  • pdf_extract_text - 提取 PDF 文本内容

Word 工具

  • word_read_document - 读取 Word 文档内容

SQLite 工具

  • sqlite_inspect_database - 检查 SQLite 数据库("上帝视角")
  • sqlite_get_schema - 获取表结构
  • sqlite_query - 执行 SQL 查询

通用工具

  • ping - 健康检查,返回 pong 表示服务运行中

开发

代码格式化与静态检查

# 激活虚拟环境
.\.venv\Scripts\Activate.ps1

# 使用 black 格式化代码
black src/

# 使用 ruff 检查代码
ruff check src/

类型检查

# 使用 mypy 进行类型检查
mypy src/unifiles_mcp/

项目结构

unifiles-mcp/
├── src/
│   └── unifiles_mcp/
│       ├── __init__.py
│       ├── main.py              # MCP 服务器入口
│       ├── tools/               # MCP 工具
│       │   ├── __init__.py
│       │   ├── excel.py
│       │   ├── pdf.py
│       │   ├── word.py
│       │   └── sqlite.py
│       └── utils/               # 工具函数
│           ├── __init__.py
│           ├── async_wrapper.py
│           └── validators.py
├── docs/                       # 文档
│   ├── API.md                  # API 文档
│   ├── PYPI_RELEASE_CHECKLIST.md
│   └── README.md
├── .cursor/                    # Cursor IDE 配置
│   ├── commands/               # Cursor 命令
│   ├── rules/                  # 项目规则
│   ├── skills/                 # Cursor Skills
│   └── mcp.json                # MCP 配置
├── LICENSE                     # MIT 许可证
├── publish_pypi.bat           # 一键发布到 PyPI 脚本
├── requirements.txt            # 生产依赖
├── requirements-dev.txt        # 开发依赖(可选)
├── pyproject.toml              # 项目配置
├── CHANGELOG.md                # 更新日志
├── HISTORY.md                  # 对话与变更历史
├── AGENTS.md                   # AI Agent 开发规范
└── README.md                   # 本文档

文档

作者与维护者

许可证

本项目采用 MIT License

相关项目

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

unifiles_mcp-0.1.3.tar.gz (14.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

unifiles_mcp-0.1.3-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

File details

Details for the file unifiles_mcp-0.1.3.tar.gz.

File metadata

  • Download URL: unifiles_mcp-0.1.3.tar.gz
  • Upload date:
  • Size: 14.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for unifiles_mcp-0.1.3.tar.gz
Algorithm Hash digest
SHA256 e702c25c4cfdb9d80261a265780aaf7105c1ff9a7ea3e4db4ccd8f4b87bee335
MD5 897468ced0ac2e6144a1642208f42cf5
BLAKE2b-256 8faabade0acca43a389939fb3028ceae8a9b9ca1ad7c6fdb51c77668923f49eb

See more details on using hashes here.

File details

Details for the file unifiles_mcp-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: unifiles_mcp-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 15.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for unifiles_mcp-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 ae17bb3638aa3e791a4386c98ba13f2595d04bbf19cb860dece026bb6772307b
MD5 323f7b32eb6ae53db477f4608eb2e3b2
BLAKE2b-256 e7b5481457ca7b5e6658123ccbd47aec5ab6e5c8ad56ddbdfe083bc264e958ac

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page