Pandas Data Analysis MCP 服务器使用说明
项目简介
本项目是一个MCP(Model Context Protocol)服务器的实现,旨在为大型语言模型(LLM)客户端提供使用 Pandas 进行数据分析和可视化的能力。它通过 JSON-RPC 协议与客户端通信,允许 LLM 调用预定义的工具来处理 CSV 数据,并返回分析结果或图表。
主要功能点
- CSV 数据读取: 支持上传 CSV 文件并将其内容转换为 JSON 格式,以便后续分析。
- 描述性统计: 生成 CSV 数据的描述性统计信息,例如均值、中位数、标准差等。
- 数据可视化: 支持生成多种类型的图表,包括折线图、散点图、直方图和热力图,帮助用户直观理解数据。
- 综合数据分析: 提供全面的数据分析功能,包括描述性统计、相关性分析以及数据类型和非空值计数。
- 工具注册与调用: 遵循 MCP 协议,服务器注册 'analyze_data' 工具,客户端可以通过 'call_tool' 方法调用该工具执行数据分析任务。
安装步骤
-
安装 Python 依赖: 确保你的系统已安装 Python 和 pip。在仓库的 'python' 目录下,运行以下命令安装 Python 服务器所需的依赖:
pip install fastapi uvicorn pandas numpy matplotlib seaborn -
安装 Node.js 依赖: 确保你的系统已安装 Node.js 和 npm。在仓库根目录下,运行以下命令安装 Node.js 服务器所需的依赖:
npm install axios form-data -
启动 Python 服务器: 在 'python' 目录下,运行以下命令启动 Python FastAPI 服务器:
python server.py默认情况下,Python 服务器将在 'http://0.0.0.0:8000' 启动。
-
启动 Node.js MCP 服务器: 在仓库根目录下,运行以下命令启动 Node.js MCP 服务器:
node src/index.ts或者,如果你的环境配置了 'npm' 可以直接运行脚本,可以使用:
npm startNode.js MCP 服务器默认监听标准输入输出 (stdio)。
服务器配置
MCP 客户端需要配置以下 JSON 格式的信息才能连接到 Pandas Data Analysis MCP 服务器。
{ "serverName": "pandas_data_analysis", "command": "node", "args": ["src/index.ts"], "transport": "stdio" }
配置参数注释:
- 'serverName': 服务器的名称,可以自定义,用于在客户端标识该服务器。例如: '"pandas_data_analysis"'。
- 'command': 启动 MCP 服务器的命令。这里使用 'node' 命令来运行 Node.js 脚本。
- 'args': 传递给启动命令的参数,以数组形式提供。这里指定了 Node.js 服务器脚本的路径 'src/index.ts'。 请确保路径相对于 MCP 客户端的工作目录是正确的。
- 'transport': 指定 MCP 服务器使用的传输协议。这里使用 'stdio',表示通过标准输入输出进行通信。
基本使用方法
-
客户端发起 'list_tools' 请求: 客户端可以发送 'list_tools' 的 JSON-RPC 请求到 MCP 服务器,以获取服务器支持的工具列表。服务器会返回包含 'analyze_data' 工具的响应,其中描述了工具的名称、描述和输入参数 Schema。
-
客户端发起 'call_tool' 请求: 客户端可以使用 'call_tool' 方法调用 'analyze_data' 工具,并提供相应的参数。例如,要分析本地 CSV 文件 'data.csv' 并生成描述性统计信息,客户端可以发送如下 JSON-RPC 请求:
{ "jsonrpc": "2.0", "id": "1", "method": "call_tool", "params": { "name": "analyze_data", "arguments": { "file_path": "data.csv", "analysis_type": "describe" } } }'analyze_data' 工具参数说明:
- 'file_path': CSV 文件路径,需要 MCP 客户端能够访问到该文件。例如: '"data.csv"'。
- 'analysis_type': 指定分析类型,可选值包括 '"describe"' (描述性统计), '"plot"' (绘图), '"analyze"' (综合分析)。
- 'plot_type' (当 'analysis_type' 为 '"plot"' 时可选): 指定图表类型,可选值包括 '"line"', '"scatter"', '"histogram"', '"heatmap"'。
- 'x' (当 'analysis_type' 为 '"plot"' 且 'plot_type' 为 '"scatter"' 或 '"histogram"' 时可选): 指定 x 轴的列名。
- 'y' (当 'analysis_type' 为 '"plot"' 且 'plot_type' 为 '"scatter"' 时可选): 指定 y 轴的列名。
- 'title' (当 'analysis_type' 为 '"plot"' 时可选): 图表标题。
- 'columns' (当 'analysis_type' 为 '"analyze"' 时可选): 指定要分析的列名数组。
-
服务器返回响应: MCP 服务器接收到 'call_tool' 请求后,会调用 Python 后端服务进行数据分析,并将分析结果封装在 JSON-RPC 响应中返回给客户端。如果分析类型是绘图,响应会包含 Base64 编码的图表图像。
注意: 确保 Python 服务器和 Node.js MCP 服务器都已成功启动,并且 MCP 客户端能够正确地与 Node.js MCP 服务器通过 stdio 进行通信。
信息
分类
AI与计算