-
Notifications
You must be signed in to change notification settings - Fork 0
Installation
- Python 3.10+ (tested on 3.10, 3.11, 3.12)
- MATLAB 2020b+ installed locally
- MATLAB Engine API for Python — comes with MATLAB, needs separate install
The MATLAB Engine API lets Python call MATLAB. Install it from your MATLAB installation:
cd /Applications/MATLAB_R2024a.app/extern/engines/python
pip install .Adjust the path for your MATLAB version (e.g.,
R2023b,R2024b).
cd "C:\Program Files\MATLAB\R2024a\extern\engines\python"
pip install .cd /usr/local/MATLAB/R2024a/extern/engines/python
pip install .import matlab.engine
eng = matlab.engine.start_matlab()
result = eng.eval("2 + 2", nargout=1)
print(result) # Should print 4
eng.quit()pip install matlab-mcp-pythongit clone https://github.com/HanSur94/matlab-mcp-server-python.git
cd matlab-mcp-server-python
pip install -e ".[dev]"Installation variants:
-
pip install -e .— Minimal install (core dependencies only) -
pip install -e ".[dev]"— Full install with testing, linting, and monitoring tools -
pip install -e ".[monitoring]"— Add monitoring support (health checks, metrics dashboard)
Core dependencies:
fastmcp>=2.0.0,<3.0.0pydantic>=2.0.0pyyaml>=6.0Pillow>=9.0.0aiosqlite>=0.19.0plotly>=5.9.0
# Single user (stdio transport) — simplest setup
matlab-mcp
# Multi-user (SSE transport) — shared server on localhost:8765
matlab-mcp --transport sse
# With custom config
matlab-mcp --config my_config.yaml
# With custom tools
matlab-mcp --custom-tools custom_tools.yamlAdd to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"matlab": {
"command": "matlab-mcp"
}
}
}claude mcp add matlab -- matlab-mcpAdd to .cursor/mcp.json in your project:
{
"mcpServers": {
"matlab": {
"command": "matlab-mcp"
}
}
}Start the server:
matlab-mcp --transport sseThen point your client to http://localhost:8765/sse.
# Build the image
docker build -t matlab-mcp .
# Run with your MATLAB mounted
docker run -p 8765:8765 -p 8766:8766 \
-v /path/to/MATLAB:/opt/matlab:ro \
-e MATLAB_MCP_POOL_MATLAB_ROOT=/opt/matlab \
matlab-mcp --transport sse# Clone the repo (if not already done)
git clone https://github.com/HanSur94/matlab-mcp-server-python.git
cd matlab-mcp-server-python
# Edit docker-compose.yml to set your MATLAB installation path
# macOS: /Applications/MATLAB_R2024a.app:/opt/matlab:ro
# Linux: /usr/local/MATLAB/R2024a:/opt/matlab:ro
docker compose upExample docker-compose.yml volumes section (macOS):
volumes:
- /Applications/MATLAB_R2024a.app:/opt/matlab:ro
- ./config.yaml:/app/config.yaml:ro
- ./custom_tools.yaml:/app/custom_tools.yaml:ro
- results:/app/results
- monitoring_data:/app/monitoring- The Docker image does not include MATLAB — you must mount your own installation
- Expose ports:
8765(SSE),8766(monitoring health endpoint) - Set
MATLAB_MCP_POOL_MATLAB_ROOTto the path where MATLAB is mounted inside the container - The image uses
python:3.12-slimas the base
python -m venv .venv
source .venv/bin/activate # macOS/Linux
# .venv\Scripts\activate # Windows
# Install MATLAB Engine API into the venv
cd /Applications/MATLAB_R2024a.app/extern/engines/python
pip install .
# Install server
cd /path/to/matlab-mcp-server-python
pip install -e ".[dev]"
# Run
matlab-mcpAll settings can be overridden via environment variables or a config.yaml file:
# Override pool size
export MATLAB_MCP_POOL_MIN_ENGINES=4
export MATLAB_MCP_POOL_MAX_ENGINES=16
# Override sync timeout (promote to async after 60s)
export MATLAB_MCP_EXECUTION_SYNC_TIMEOUT=60
# Override transport
export MATLAB_MCP_SERVER_TRANSPORT=sse
# Override MATLAB root
export MATLAB_MCP_POOL_MATLAB_ROOT=/path/to/MATLABSee Configuration in the wiki for all available settings.
Expose your proprietary MATLAB functions as first-class AI tools via a YAML file:
matlab-mcp --custom-tools custom_tools.yamlExample custom_tools.yaml:
tools:
- name: analyze_signal
matlab_function: mylib.analyze_signal
description: "Analyze a signal and return frequency components, SNR, and peak detection"
parameters:
- name: signal_path
type: string
required: true
- name: sample_rate
type: float
required: true
- name: window_size
type: int
default: 1024
returns: "Struct with fields: frequencies, magnitudes, snr, peaks"Ensure the MATLAB Engine API is installed:
python -c "import matlab.engine; print(matlab.engine.__file__)"If not found, reinstall from your MATLAB installation directory.
If port 8765 is busy, override it:
export MATLAB_MCP_SERVER_PORT=8766
matlab-mcp --transport sseEnsure the volume mount path is correct and MATLAB Engine API is installed inside the container or in your mounted MATLAB installation.
If you previously installed as matlab-mcp-server, uninstall first:
pip uninstall matlab-mcp-server
pip install matlab-mcp-python