MATLAB代码管理服务器

提供AI助手创建、执行和管理MATLAB代码能力的模型上下文协议服务器,实现AI工具与MATLAB环境的无缝集成。

  • by ljo3
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 ljo3/MATLAB-mcp-server

使用说明

MATLAB MCP 服务器

一个模型上下文协议(MCP)服务器,为人工智能助手提供创建、执行和管理MATLAB代码的能力。该服务器实现了人工智能工具与MATLAB环境之间的无缝集成。

🌟 特点/功能

  • 代码验证检查MATLAB语法而不执行
  • 代码执行运行MATLAB表达式并捕获结果
  • 文件管理创建、读取和执行MATLAB文件
  • 测试支持运行MATLAB测试文件并获取详细结果
  • 工具箱检测发现已安装的MATLAB工具箱
  • 编码规范内置MATLAB最佳实践提示

📋 先决条件

在设置MATLAB MCP服务器之前,请确保您已具备:

  1. MATLAB 安装一个带有Python引擎支持的MATLAB工作安装
  2. 紫外线现代Python包管理器(从https://docs.astral.sh/uv/安装)
  3. VS Code带有用于测试的MCP扩展(可选但建议使用)

🛠️ 安装与设置

1. 克隆或创建项目目录

# Create project directory
mkdir matlab-mcp
cd matlab-mcp

# Or clone if you have a repository
git clone <your-repo-url> matlab-mcp
cd matlab-mcp

2. 设置UV环境

使用uv初始化项目并安装依赖项:

# Initialize uv project (if not already done)
uv init

# Install MCP CLI as a dependency
uv add 'mcp[cli]'

# Alternatively, install directly without project setup
# uv pip install mcp[cli]

3. 配置MATLAB Python引擎

如果未找到,服务器将自动尝试安装 MATLAB Python 引擎。为确保正确设置:

  1. 设定 MATLAB_PATH 将环境变量设置为您的MATLAB安装目录:

    # Windows
    set MATLAB_PATH=C:\Program Files\MATLAB\R2024b
    
    # macOS/Linux
    export MATLAB_PATH=/Applications/MATLAB_R2024b.app
    
  2. 如果需要,服务器将在首次运行时自动为Python安装MATLAB引擎。

4. 项目结构

你的项目应具有以下结构:

matlab-mcp/
├── main.py              # MCP server implementation
├── src/                 # MATLAB files directory (auto-created)
├── .vscode/
│   └── mcp.json        # VS Code MCP configuration
└── README.md           # This file

5. 配置VS Code的MCP集成

创建 .vscode/mcp.json 用于VS Code集成:

{
  "servers": {
    "MATLAB": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp[cli]",
        "mcp",
        "run",
        "C:\\Users\\<username>\\path\\to\\matlab-mcp\\main.py"
      ],
      "cwd": "C:\\Users\\<username>\\path\\to\\matlab-mcp",
      "env": {
        "UV_LINK_MODE": "copy"
      }
    }
  }
}

重要替换 <username> 并将路径替换为您实际系统的路径。

6. 放置 main.py 文件

确保你的 main.py 文件(MCP服务器实现)位于您的项目目录的根目录中。该文件应包含所有MATLAB MCP工具,并且能够被Python环境执行。

🚀 使用方法

启动服务器

通过 VS Code

  1. 在您的项目目录中打开 VS Code
  2. 开放 .vscode/mcp.json
  3. 点击出现的“启动MCP”按钮

通过命令行

# Run the server with uv
uv run --with mcp[cli] mcp run main.py

# Or if you have a pyproject.toml with mcp[cli] as dependency
uv run mcp run main.py

可用工具

  1. **check_matlab_code**验证MATLAB语法而不执行
  2. **evaluate_matlab_code**执行 MATLAB 表达式并返回结果
  3. **create_matlab_file**创建包含代码的新MATLAB文件
  4. **run_matlab_file**执行现有的MATLAB文件
  5. **run_matlab_test_file**运行带有结构化结果的MATLAB测试文件
  6. **detect_matlab_toolboxes**列出已安装的MATLAB工具箱

可用资源

  • **matlab://scripts/{script_name}**读取MATLAB文件内容

可用提示

  • **matlab_coding_guidelines**获取MATLAB编码的最佳实践和标准

🧪 测试服务器

使用这些示例提示与您的AI助手配合,以测试每个工具:

基本语法检查

Check this MATLAB code for syntax errors:
x = [1, 2, 3
y = sin(x
plot(x, y)

代码评估

Evaluate this MATLAB expression: 2 + 3 * 4

文件创建

Create a MATLAB function called "calculate_mean" that takes an array and returns its mean

文件执行

Run the MATLAB file "calculate_mean" with the array [1, 2, 3, 4, 5]

测试文件的创建与执行

Create and run a test file for the calculate_mean function

工具箱检测

Show me what MATLAB toolboxes are installed on my system

编码规范

Show me the MATLAB coding guidelines

📁 文件管理

  • MATLAB 文件创建于 src/ 目录
  • 自动扩展: .m 如果未指定,则自动添加扩展名
  • 路径处理支持相对路径和绝对路径
  • 文件验证为兼容MATLAB而自动验证文件名

⚙️ 配置

环境变量

  • MATLAB_PATHMATLAB 安装路径(引擎设置所需)
  • UV_LINK_MODE设置为“复制”以提高兼容性

定制化

  • MATLAB 目录改变 MATLAB_DIR 在 main.py 自定义文件存储位置
  • 输出限制修改 MAX_OUTPUT_LENGTH 控制输出截断
  • 编码规范更新 matlab_coding_guidelines 符合您标准的提示

🔧 故障排除

常见问题

  1. 未找到MATLAB引擎

    • 确保已安装MATLAB,并且 MATLAB_PATH 设置正确
    • 服务器将尝试自动安装
  2. 权限错误

    • 确保 src/ 目录可写
    • 检查项目目录的文件权限
  3. 服务器无法启动

    • 验证 uv 是否已安装并且在 PATH 中可用
    • 检查MCP CLI依赖是否已安装uv add 'mcp[cli]')
    • 确保 main.py 路径在 mcp.json 是正确的
    • 验证 cwd 路径在 mcp.json 指向你的项目目录
  4. 文件创建在错误的位置

    • 在服务器启动时检查工作目录
    • 验证 MATLAB_DIR 路径解析

📝 开发

添加新工具

要添加新的MCP工具,请使用 @mcp.tool() 装饰器:

@mcp.tool()
def your_new_tool(param: str) -> dict:
    """Your tool description."""
    # Implementation
    return {"result": "success"}

添加新资源

要添加新的MCP资源,请使用 @mcp.resource() 装饰器:

@mcp.resource("your://resource/{param}")
def get_resource(param: str) -> str:
    """Resource description."""
    # Implementation
    return "resource content"

注此MCP服务器需要有效的MATLAB安装和许可证才能正常运行。在使用服务器之前,请确保MATLAB已正确配置且可访问。

在代码空间中的初始化

curl -LsSf https://astral.sh/uv/install.sh | sh 翻译为中文是:“使用curl命令以安静(无输出)、跟随重定向(-L)、显示进度(-s可能在此上下文中与-s重复,但通常-s表示安静,这里可能强调其他选项的作用,或为保持命令格式一致)、失败时停止(-f)的方式下载https://astral.sh/uv/install.sh脚本,并执行该脚本”。不过,为了更简洁明了,可以翻译为:“使用curl安静地、跟随重定向、显示进度地、失败时停止地下载并执行https://astral.sh/uv/install.sh安装脚本” 源代码 $HOME/.cargo/env # 安装 uv 并将其添加到您的 PATH 中。安装后,请重启您的终端或运行: uv --version 翻译为中文是:“检查 uv 的版本”

UV 初始化 创建并激活虚拟环境(在Python等环境中常用,具体命令可能因环境而异,此处为通用表述) chmod +x .venv/bin/activate 的中文翻译是:“为 .venv/bin/activate 文件添加可执行权限”

清除 UV 缓存 -- 强制执行 添加 MCP 并重新安装

使用pip安装matlabengine(注:uv在此处可能是一个误写或特定上下文中的命令,通常pip是Python的包管理工具,直接翻译为“使用pip安装matlabengine”即可,若uv有特定含义,请根据实际情况调整)

1 curl -LsSf https://astral.sh/uv/install.sh | sh 2 密码 3 Python 4 运行 main.py 文件 5 UV 添加 MCP 6 UV 初始化 7个UV添加MCP 8 运行 main.py(使用 uv 命令) 9 echo $MATLAB_PATH 10 export MATLAB_PATH="/opt/matlab/R2025b" 翻译为中文是:“10 导出 MATLAB 路径为 '/opt/matlab/R2025b'" 11 echo $MATLAB_PATH 12 运行 uv main.py(注:这里的“uv”可能是一个特定环境或框架下的命令,但通常Python项目中直接使用“python main.py”来运行脚本,不过按照原文直译为“运行 uv main.py”) 13 使用python -m pip安装setuptools 14 python -m pip install setuptools --break-system-packages 翻译为中文是:14 使用python模块运行pip来安装setuptools,并允许覆盖系统包 15 运行 main.py(使用 uv 命令) 16 使用 pip 安装 mcp 17 使用 pip 安装 mcp 并允许破坏系统包 18 设置 MATLAB 路径为 "/opt/matlab/R2025b" 19 使用 Python 运行模块 mcp 的 main.py 脚本 20 哪个MCP(多点控制单元/管理控制协议等,具体含义需根据上下文确定) 21 mcp 运行 main.py 22 pip install mcp[cli] 翻译为中文是:“22 使用pip安装mcp的命令行界面(CLI)组件” 23 使用 pip 安装 mcp[cli] 并允许破坏系统包 24 pip install mcp[cli] 运行 main.py,使用 25 个微控制器单元(mcp) 26 历史

class MATLABEngineManager:(可翻译为)“MATLAB引擎管理器类:” “管理MATLAB引擎的初始化和生命周期。”

def __init__(self):
    self._engine = None
    self._initialize()

def _initialize(self):
    """Initialize MATLAB engine with proper error handling."""
    self._ensure_matlab_engine_installed()
    import matlab.engine
    self._engine = matlab.engine.connect_matlab("MATLAB_3616")
    self._engine.addpath(str(MATLAB_DIR))