绘制MCP
概述
Plot MCP是一个综合绘图系统,它使用大型语言模型(LLM)将Matplotlib与逻辑功能集成在一起。它允许用户通过自然语言请求生成高质量、可发布的绘图。该系统具有一个了解数据结构和绘图要求的智能后端,以及一个基于网络的交互式可视化前端。
特性
- 自然语言绘图:从简单的文本描述生成复杂的Python绘图代码。
- 智能数据解析:自动检测分隔符(CSV、TSV、空格分隔)并分析数据结构。
- 项目(原始样式):每个项目都是一个文件夹,其中包含
project.json清单(数据集、绘图历史、UI状态)。 - 线程聊天会话:多个聊天线程,具有持久的消息历史记录和每个会话的绘图上下文。
- 出版质量(可选):通过沙盒运行器为学术绘图启用一致的样式默认值。
- 交互式编辑:单击绘图元素(标题、轴标签)以使用自然语言对其进行编辑。
- 代码优先再现性:通过以下方式编辑绘图代码并确定地重新执行(无需LLM重写)
/execute_plot. - 画廊集成:浏览500多个Matplotlib官方示例,并根据您的数据进行调整。
- 本地执行:使用Ollama完全在本地运行,或连接到OpenAI或Gemini等云提供商。
- 灵活出口:下载具有自定义DPI设置的PNG、PDF或SVG格式的绘图。
- 安全执行:绘图代码在带有静态lint检查(无文件/网络访问)的沙盒子进程中运行。
- MCP服务器:将Plot MCP用作任何兼容MCP的LLM客户端的独立MCP服务器。
先决条件
- Python 3.9+(需要
ast.unparse) - Node.js和npm(用于前端)
- Ollama(提供当地法学硕士支持)
安装
- 克隆存储库。
- 安装Python依赖项:
python3 -m pip install -r requirements.txt- 安装前端依赖项:
cd frontend
npm install
cd ..用法
启动应用程序
- 启动后端服务器:
python3 backend/main.py后端在端口8000上运行。
- 启动前端接口:
cd frontend
npm start该应用程序可以在Vite-dev服务器URL上访问(通常 http://localhost:5173).
使用界面
- 创建项目:使用左侧边栏创建/选择项目。
- 添加数据:上传文件或将数据粘贴到项目中。
- 选择文件:选中一个或多个用作绘图上下文的文件。
- 描述情节:在聊天中要求一个图(例如,“a与B的散点图”)。
- 精炼:单击打印元素(标题/标签)请求编辑,或编辑代码并直接重新运行。
- 工具抽屉:使用绘图工具栏
Tools打开预览/加入/分析/图库。
环境配置
- 后端端口:set
PORT=8001跑步前python3 backend/main.py如果8000正在使用中。 - 前端API URL:set
VITE_API_URL(参见frontend/.env.example)指向后端。 - 端口自动释放:后端尝试使用以下命令终止所选端口上的进程
lsof或fuser在绑定之前。 - 沙盒内存:set
PLOT_EXEC_MEMORY_MB=1024实施内存上限;默认值为无限制。 - 沙盒风格:set
PLOT_ENFORCE_STYLE=1应用一致的样式默认值(字体/记号/刺)。 - 画廊提示接地(RAG):set
PLOT_GALLERY_RAG_MODE=off禁用将最接近的Matplotlib库代码段注入LLM提示符(默认:启用)。 - 确定性模板:set
PLOT_TEMPLATE_MODE=on启用内置模板图(波浪等)作为可选回退(默认:禁用/LLM)。 - LLM超时:set
PLOT_LLM_TIMEOUT(秒)和可选PLOT_LLM_CONNECT_TIMEOUT用于提供者调用(默认值:60s/5s)。 - 项目目录:set
PROJECTS_DIR=/path/to/projects在repo之外存储项目。
快乐之路教程(端到端)
- 创建项目:在左侧边栏中,创建一个名为
My Experiment. - 上传文件:上传
data_a.csv和data_b.csv进入项目。 - 选择文件:在项目资源管理器中检查这两个文件。
- 打开工具→ 预览:检查文件预览和推断的数据类型。
- 打开工具→ Join:打印之前,请查看联接建议(共享列和警告)。
- 要求一个阴谋:请求示例:
Plot temperature from data_a vs pressure from data_b. - 迭代:单击绘图标题/标签,使用自然语言优化输出。
- 历史记录和撤消:使用缩略图或撤消/重做以重新访问早期的绘图。
- 下载:导出高分辨率图像(PNG/PDF/SVG)。
配置
系统使用 Ollama 随着 llama3 默认情况下,模型。要在低资源环境中使用轻量级模型,请执行以下操作:
- 拉动模型:
ollama pull qwen2:0.5b- 在运行后端之前设置环境变量:
export OLLAMA_MODEL=qwen2:0.5b
python3 backend/main.py看 doc/ 用于高级配置和模型上下文协议(MCP)集成的文件夹。
文档
- 建筑:参见
doc/ARCHITECTURE.md用于系统设计图。 - MCP集成:参见
doc/MCP_INTEGRATION.md用于连接到通用LLM客户端。 - 微型模型:参见
doc/TINY_LLM_SETUP.md用于与小型本地LLM一起运行。
