内容
# octave-mcp
GNU Octave 连接 Claude AI 的 MCP(模型上下文协议)服务器。
Claude Code 中可通过自然语言执行 Octave 代码,并直接进行数值计算、图形、图像处理和深度学习推理。
---
## 功能
- 使用 MCP 工具 (`run_octave`) 执行 Octave 代码
- 将文本结果(stdout/stderr)返回给 Claude
- 包含 `plot`、`imagesc`、`surf` 等图形命令时,自动保存为 PNG 文件后作为图像返回
- 通过 Python(调用 `system()`)可以连接 PyTorch/torchvision 等外部库
---
## 要求
| 项目 | 版本 |
|------|------|
| Node.js | 18 以上 |
| GNU Octave | 6.0 以上 |
| Python | 3.9 以上(使用深度学习功能时) |
### Python 可选依赖(深度学习功能)
```
torch >= 2.0
torchvision >= 0.15
scikit-image >= 0.20
scipy >= 1.10
pooch # 用于 scipy.datasets 加载图像
Pillow
```
---
## 安装
```bash
git clone <repo-url>
cd octave-mcp
npm install
```
---
## Claude Code MCP 注册
在 `~/.claude/claude_desktop_config.json`(或 MCP 设置文件)中添加以下内容。
```json
{
"mcpServers": {
"octave": {
"command": "node",
"args": ["/Users/<yourname>/octave-mcp/index.js"]
}
}
}
```
---
## 使用方法
在 Claude Code 对话框中用自然语言请求即可。
```
使用 Octave 计算 1 到 10 的总和
使用 Octave 绘制 sin 图形
进行 2D 傅里叶变换并显示频谱
使用 ResNet18 推理浣熊图像
```
---
## 服务器结构
```
octave-mcp/
├── index.js # MCP 服务器入口
├── package.json
├── resnet18_raccoon_result.png # ResNet18 推理结果图像
├── outputs/ # 生成的图形、图像存储目录
│ ├── plot_<uuid>.png
│ └── resnet18_raccoon_result.png
└── README.md
```
### 工作流程
1. Claude → MCP 调用 `run_octave` 工具(传递 Octave 代码)
2. `index.js` 生成 `octave --no-gui --eval <code>` 进程
3. 检测到图形命令时自动插入 `print(gcf, '<path>', '-dpng', '-r150')`
4. 返回 stdout / 生成的 PNG 给 Claude
---
## 主要使用示例
### 数值计算
```octave
result = sum(1:10);
printf('合计: %d\n', result);
% -> 55
```
### 2D 傅里叶变换 & 反变换
```octave
img = peaks(256);
F = fft2(img);
F_shifted = fftshift(F);
img_rec = real(ifft2(ifftshift(F_shifted)));
% 复原误差:~1e-13(浮点数级别)
```
### ResNet18 图像分类(Python 连接)
```octave
[status, out] = system('python3 /tmp/resnet_infer.py 2>&1');
% Top1: badger 35.59% / Top2: grey fox 17.83% ...
```
---
## 推理结果示例

| 排名 | 类别 | 概率 |
|------|--------|------|
| Top1 | badger(獾) | 35.59% |
| Top2 | grey fox(灰狐) | 17.83% |
| Top3 | lesser panda(小熊猫) | 8.63% |
| Top4 | three-toed sloth(树懒) | 7.69% |
| Top5 | Madagascar cat | 2.45% |
> 由于 ImageNet-1K 没有 raccoon 类别,因此分类为相似动物 badger。
---
## 输出文件
图形和推理结果图像存储在 `~/octave-mcp/outputs/` 中。
| 文件 | 内容 |
|------|------|
| `plot_<uuid>.png` | Octave 图形输出 |
| `resnet18_raccoon_result.png` | ResNet18 推理结果叠加图像 |
---
## 已知限制
- `imshow` 等部分命令未包含在绘图检测模式中,需要使用 `imread` 单独加载
- Octave 执行超时默认值:**30秒**
- `skimage.data.raccoon()` 在 scikit-image v0.20 中被移除 → 使用 `scipy.datasets.face()`
- ImageNet-1K 没有 raccoon 类别 → ResNet18 分类为相似动物(badger 等)
---
## 许可证
ISC