🚀 强大的AI驱动数据分析工具 - 通过MCP协议,使LLMs能够安全高效地执行pandas代码并生成可视化图表
如果您发现这个项目有用,请考虑给它一个⭐️星!
</div>一个全面的模型上下文协议(MCP)服务器,使LLMs能够通过标准化的工作流程执行pandas代码进行数据分析和可视化。
Pandas-MCP服务器设计为一个模型上下文协议(MCP)服务器,为LLMs提供强大的数据处理能力。MCP是一个标准化协议,允许AI模型以安全、结构化的方式与外部工具和服务进行交互。
git clone https://github.com/marlonluo2018/pandas-mcp-server.git
cd pandas-mcp-server
pip install -r requirements.txt
# 测试CLI接口
python cli.py
# 或直接测试MCP服务器
python server.py
在您的Claude Desktop设置中添加以下配置:
{
"mcpServers": {
"pandas-server": {
"type": "stdio",
"command": "python",
"args": ["/path/to/your/pandas-mcp-server/server.py"]
}
}
}
注意:用您实际克隆仓库的位置替换/path/to/your/pandas-mcp-server/server.py。
示例路径:
"C:\\Users\\YourName\\pandas-mcp-server\\server.py""/home/username/pandas-mcp-server/server.py"%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json~/.config/Claude/claude_desktop_config.json配置完成后,重启Claude Desktop。服务器应该出现在MCP工具列表中,有四个可用工具:
read_metadata_tool - 文件分析interpret_column_data - 列值解释run_pandas_code_tool - 代码执行generate_chartjs_tool - 图表生成Pandas MCP服务器遵循一个结构化的数据分析和可视化工作流:
**LLM调用read_metadata_tool**来了解文件结构:
**LLM调用interpret_column_data**来理解特定列:
何时使用interpret_column_data:
LLM基于元数据和列分析调用run_pandas_code_tool:
**LLM调用generate_chartjs_tool**来创建交互图表:
interpret_column_data补充read_metadatainterpret_column_data函数旨在通过提供对列值的深入理解来补充read_metadata_tool:
read_metadata_tool:专注于文件结构、数据类型和统计摘要
interpret_column_data:专注于特定列的详细值分析
这种两步方法确保了LLM在生成pandas代码之前既具备结构又具备值级的理解,从而实现更准确有效的数据分析操作,尤其是在处理多个CSV文件时。
服务器暴露四个主要工具供LLM集成:
read_metadata_tool - 文件分析从Excel和CSV文件中提取综合元数据包括:
目的:为LLM提供数据结构和特性的高层次理解,作为数据分析的基础。
MCP工具使用:
{
"tool": "read_metadata_tool",
"args": {
"file_path": "/path/to/sales_data.xlsx"
}
}
interpret_column_data - 列值解释解释特定列以理解其值模式:
目的:通过提供对列值的深入理解来补充read_metadata_tool,使LLM能够生成更精确的过滤、分组和分析操作,特别是在处理需要跨数据集一致值理解的多个CSV文件时。
最佳使用案例:
该函数返回以下格式的结构化响应:
{
"columns_interpretation": [
{
"column_name": "Region",
"data_type": "object",
"total_values": 1000,
"null_count": 5,
"unique_count": 4,
"unique_values_with_counts": [
["North", 350],
["South", 280],
["East", 220],
["West", 145]
]
}
]
}
MCP工具使用:
{
"tool": "interpret_column_data",
"args": {
"file_path": "/path/to/sales_data.csv",
"column_names": ["Region", "Status"]
}
}
Excel文件使用(可选工作表选择):
{
"tool": "interpret_column_data",
"args": {
"file_path": "/path/to/sales_data.xlsx",
"column_names": ["Region", "Status"],
"sheet_name": "Q3_Sales" // 可选:工作表名称或索引(默认:0)
}
}
run_pandas_code_tool - 安全代码执行执行pandas操作:
目的:利用来自read_metadata_tool和interpret_column_data的见解来执行精确的数据分析操作,特别有价值的是在处理具有一致值模式的多个CSV文件时。
出于安全原因,以下操作被阻止:
os., sys., subprocess. - 防止文件系统和系统访问open(), exec(), eval() - 阻止动态代码执行import os, import sys - 防止特定有害导入document., window., XMLHttpRequest - 阻止浏览器操作fetch(), eval(), Function() - 阻止远程代码执行script, javascript: - 阻止脚本注入尝试要求:
result变量pd)MCP工具使用:
{
"tool": "run_pandas_code_tool",
"args": {
"code": "import pandas as pd\ndf = pd.read_excel('/path/to/data.xlsx')\nresult = df.groupby('Region')['Sales'].sum()"
}
}
generate_chartjs_tool - 交互式可视化使用Chart.js生成交互图表:
./charts/目录中bar_chart_20250710_143022.html)MCP工具使用:
{
"tool": "generate_chartjs_tool",
"args": {
"data": {
"columns": [
{
"name": "Region",
"type": "string",
"examples": ["North", "South", "East", "West"]
},
{
"name": "Sales",
"type": "number",
"examples": [15000, 12000, 18000, 9000]
}
]
},
"chart_types": ["bar"],
"title": "Sales by Region"
}
}
cli.py提供了方便的命令行界面,无需MCP客户端即可测试MCP服务器的功能:
python cli.py
启动一个引导菜单系统,包括:
# 读取元数据
python cli.py metadata data.xlsx
# 解释列值(适用于多个CSV文件)
python cli.py interpret data.csv --columns "Region,Status"
# 执行pandas代码
python cli.py execute analysis.py
# 生成图表
python cli.py chart data.json --type bar --title "Sales Analysis"
使用CLI生成图表时:
./charts/目录中server.py)core/metadata.py)关键逻辑:
内存优化:
category数据类型core/execution.py)安全特性:
执行流程:
core/visualization.py)架构:
图表类型:
core/column_interpretation.py)功能:
关键特性:
core/chart_generators/)基类(base.py):
具体生成器:
BarChartGenerator:带有交互控件的条形图LineChartGenerator:带有张力和样式的折线图