内容
# 交互式绘图 MCP
该项目是一个模型上下文协议(Model Context Protocol,MCP)服务器的示例,具有交互式绘图界面。它演示了如何构建一个包含单独绘图窗口的MCP扩展,使用Tkinter作为图形界面。
## 特性
- **绘图网格界面**:
- 提供一个16x16的网格,每个单元格可以在两种状态(填充或空白)之间切换。
- 提供一个清除网格按钮以重置所有单元格。
- **服务器功能**:
- **开始绘图会话**: 初始化一个新会话并启动UI。
- **切换单元格**: 通过命令接口切换单个单元格的颜色。
- **获取网格状态**: 以文本表示形式检索当前网格配置。
- **持久性**: 网格状态保存到JSON文件(`board_state.json`)中,以保持会话之间的一致性。
- **UI和状态同步**:
- **实时UI更新**: 后台线程持续监视网格状态文件的更新,并在视觉上反映变化。
## 安装
### 选项 1: 从源代码安装
1. 克隆此代码库:
```
git clone https://github.com/AaronGoldsmith/interactive_draw_mcp
cd interactive_draw_mcp
```
2. 安装该包:
```
pip install -e .
```
## 使用
### 作为独立的 MCP 服务器
运行服务器以打开绘图窗口:
```
interactive-draw-mcp
```
### 与 Goose 一起使用
#### 选项 1: 使用 Goose CLI(推荐)
启动 Goose 并启用您的扩展:
```bash
# 本地开发
goose session --with-extension "python -m interactive-draw-mcp"
```
## 工具
- **服务器工具**:
- `start_drawing_session()`: 初始化绘图会话并打开UI。
- `toggle_cell_color(row, col)`: 切换指定 `row` 和 `col` 的单元格颜色。
- `get_grid_state()`: 提供网格当前状态的字符串表示。
### 资源和参考
- **灵感**: 此MCP的灵感来源于 [Kvadratni/tik-tak-toe-mcp](https://github.com/Kvadratni/tik-tak-toe-mcp)。
## 架构概述
该项目的架构展示了:
1. **MCP 服务器**: 管理 Goose AI 和绘图界面之间的通信,通过明确定义的工具。
2. **交互式 UI**: 提供网格的可视化界面。
3. **与 Goose AI 的集成**: 来自 Goose AI 的工具调用直接反映在网格状态上,反之亦然。
### 优势
- **职责分离**: 维护服务器逻辑和UI展示之间的清晰分离。
- **改善用户体验**: 提供直观的视觉反馈以及基于文本的命令接口。
- **适应性**: 可以扩展到涉及AI和交互式UI的更复杂应用。