Excel到Polars MCP服务器
一种模型上下文协议(MCP)服务器,使用FastMCP将Excel文件转换为Polars DataFrames。包括全面的精算数据示例和高级分析功能。
特性
- 将Excel文件(.xlsx、.xls)转换为Polars DataFrames
- 支持自动检测多张纸
- 可配置的数据类型推断和模式验证
- 使用Polars的内存高效处理
- 多种输出格式:Parquet、CSV、JSON
- 使用统计信息和元数据生成模式
- 专业精算数据示例
- 高级Polars分析和报告
- 具有真实数据的全面测试套件
安装
此项目使用 uv 用于依赖性管理。确保你有 uv 安装:
curl -LsSf https://astral.sh/uv/install.sh | sh然后安装项目:
uv sync用法
运行MCP服务器
uv run excel-polars-mcp可用的MCP工具
read_excel:使用可配置选项将Excel文件转换为Polars DataFramelist_sheets:列出Excel文件中的所有工作表名称read_excel_sheet:从Excel文件中读取特定工作表
API使用
import polars as pl
# Load converted actuarial data
life_table = pl.read_parquet('output/life_table.parquet')
policies = pl.read_parquet('output/policies.parquet')
claims = pl.read_parquet('output/claims.parquet')
reserves = pl.read_parquet('output/reserves.parquet')
# Perform actuarial analysis
loss_ratios = policies.join(claims, on='Policy_ID').group_by('Policy_Type').agg([
pl.col('Claim_Amount').sum() / pl.col('Face_Amount').sum() * 100
])
# High-value claims analysis
high_value_claims = claims.filter(pl.col('Claim_Amount') > 400000)
# Mortality analysis
high_mortality = life_table.filter(pl.col('Mortality_Rate_qx') > 0.1)输出格式
每个Excel工作表都转换为多种格式:
| 格式 | 用例 | 文件扩展名 |
|---|---|---|
| 镶木地板 | 高性能分析、数据科学 | .parquet |
| CSV文件 | 人类可读,Excel兼容 | .csv |
| 对象符号 | Web API,结构化数据交换 | .json |
| 模式 | 元数据、统计、数据验证 | _schema.json |
样品数据
该项目包括全面的精算数据集:
| 数据集 | 记录 | 描述 |
|---|---|---|
| 生命表 | 101 | 按年龄划分的死亡率、生存概率(0-100岁) |
| 政策 | 1000 | 包含人口统计和财务数据的保险单 |
| 索赔 | 150 | 保险索赔,包括金额、状态和调查数据 |
| 储备 | 25 | 按产品类型和估值年度划分的财务准备金 |
例子
基本用法
python3 examples/demo.py精算数据示例
创建样本精算数据并将其转换为Polars格式的综合示例:
python3 run_actuarial_example.py这个例子:
- 产生 一个包含真实精算数据的多页Excel文件:
- 寿命表 死亡率、生存概率和预期寿命(101岁) - 保险单 包括人口统计、保费、票面金额(1000份保单) - 索赔数据 包括类型、金额、状态和调查时间(150项索赔) - 储量计算 按产品类型和估值年份(25条记录)
- 转换 将每张纸转换为多种格式:
- 镶木地板 用于高效数据分析的文件 - CSV文件 用于人类可读性和Excel兼容性的文件 - 对象符号 web应用程序和API的文件 - 模式 包含元数据、统计信息和数据类型的文件
- 产生 综合分析:
- 统计摘要和数据质量报告 - 按保单类型分析损失率 - 死亡率分析和高风险识别 - 储备充足性和趋势分析
高级分析示例
对转换后的数据进行全面的精算分析:
python3 analyze_polars_data.py功能包括:
- 索赔分析:按状态、类型和高价值索赔
- 政策分析:保费率、票面金额和状态分布
- 死亡率分析:高死亡率年龄和预期寿命统计
- 储备分析:按年份和产品类型分列的趋势
- 赔付率:使用高级联接进行索赔分析的政策
- 数据导出:筛选的数据集和摘要报告
项目结构
├── excel_polars_mcp/ # Core MCP server implementation
│ ├── __init__.py
│ └── server.py # FastMCP server with Excel conversion tools
├── examples/ # Example scripts and demos
│ ├── demo.py # Basic usage demonstration
│ ├── create_actuarial_data.py # Generate sample actuarial Excel file
│ └── convert_actuarial_data.py # Convert Excel to Polars formats
├── sample_data/ # Generated sample data
│ └── actuarial_data.xlsx # Multi-sheet actuarial Excel file
├── output/ # Converted data in multiple formats
│ ├── *.parquet # Efficient binary format
│ ├── *.csv # Human-readable format
│ ├── *.json # Structured data format
│ ├── *_schema.json # Metadata and statistics
│ └── conversion_summary.md # Detailed conversion report
├── tests/ # Comprehensive test suite
├── run_actuarial_example.py # One-command actuarial demo
├── analyze_polars_data.py # Advanced analytics demonstration
├── view_actuarial_data.py # Data inspection utility
└── pyproject.toml # Project configuration with uv
## Development
Install development dependencies:
uv sync --dev
运行测试:
uv run pytest
格式代码:
uv run black . uv run ruff check --fix .
类型检查:
uv run mypy .
## 快速开始
1. **克隆和设置**:
git clone cd python-mcp-excel-polars uv sync
1. **运行精算示例**:
python3 run_actuarial_example.py
1. **分析结果**:
python3 analyze_polars_data.py
1. **探索数据**:
python3 view_actuarial_data.py
## 依赖项
- **极地**:高性能DataFrames
- **FastMCP**:模型上下文协议实现
- **openpyxl**:Excel文件读/写
- **xlsxwriter**:多页Excel创建
- **fastexcel**:优化Excel处理
## 用例
- **精算分析**生命表、死亡率研究、储量计算
- **保险分析**:政策分析、索赔处理、损失率
- **数据迁移**:Excel转换为现代数据格式(Parquet、JSON)
- **财务模型**:风险评估、统计分析
- **商业智能**:自动报告和数据转换
## 许可证
MIT许可证-有关详细信息,请参阅许可证文件。