Skip to content

Releases: HanSur94/matlab-mcp-server-python

v2.1.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 09:30
0201c86

v2.1.0

81 changes since the previous release.

New Features

  • re-add plotly package as a runtime dependency (maintainer request)
  • add pixi engine-free job, gate docker build behind license flag, re-home publish smoke onto pip
  • add CI version-drift guard and clean-venv offline smoke test
  • rebuild vendor/ wheelhouse to the fastmcp 3.4.4 closure
  • fix update_vendor.bat and regenerate requirements-lock.txt to fastmcp 3.4.4 closure
  • rewrite docker-compose to network-license mathworks/matlab story
  • rewrite Dockerfile to honest mathworks/matlab + network license
  • emit structured output + ToolResult(is_error=True) on MATLAB errors
  • add ExecuteResult/CheckResult schema-additive models
  • generate and commit pixi.lock
  • add pixi.toml workspace manifest with matlabengine deliberately absent
  • delegate MATLAB engine install to shared script
  • register TimingMiddleware in create_server behind monitoring flag
  • add TimingMiddleware for per-tool-call metrics
  • bump fastmcp to 3.4.4 and drop unused plotly runtime dep
  • implement scripts/install_matlab_engine.py — GREEN
  • add scale-down tests, replace sleep races, strengthen assertions
  • convert asyncio.run tests to async def, consolidate mock_pool fixture
  • fix server.py deprecations, session errors, CORS wiring, double-timeout docs
  • fix config model — dead attrs, YAML errors, CORS origins, inspect_mode
  • background task tracking, executor workspace API, shutdown
  • add job state transition guards and TOCTOU-safe session creation
  • add workspace API and _needs_replacement flag to MatlabEngineWrapper
  • wire security validator into JobExecutor in server.py
  • add security parameter to JobExecutor and centralize check_code

Bug Fixes

  • lean sdist + changelog that never hard-fails
  • clear pre-existing ruff F401/F841 in test files
  • add pip to pixi env so pixi run install-engine works
  • stop generic CI building the licensed image for the trivial client (#2)
  • map MATLAB_RELEASE to matching matlabengine pin in Dockerfile (#3)
  • export detected MATLAB_RELEASE to the engine script (#4)
  • let offline install bypass whitelist; catch pip failures in main (#5, #6)
  • match 6-char MATLAB release dirs in install glob (#1)
  • drop blanket --trusted-host, echo resolved dirs, reconcile banner
  • close verification gaps — replace last asyncio.sleep, mark plans complete
  • update _make_mock_pool references to conftest make_mock_pool after merge
  • fix engine release leak, start timeout, acquire race, and status count
  • session ID sanitization against path traversal
  • expand blocklist, fix empty-token auth, add security-disable warning
  • deduplicate route handlers, fix error count, prime cpu_percent
  • add SQL LIMIT, clamp query params, fix path traversal

Documentation

  • rework all wiki pages from the current codebase
  • record phase executed, verification deferred to user's Win10/MATLAB env
  • phase context, research, validation, verification (human_needed) + plan progress
  • add plan summary for CI drift guard + offline smoke + pixi + license-gated docker
  • add plan summary for conda deprecation + wiki reconciliation
  • reconcile wiki Installation.md to R2022b+ and pixi-first
  • deprecate conda env files toward pixi
  • complete vendor rebuild + update_vendor.bat fix plan summary
  • complete Docker rewrite to honest mathworks/matlab plan
  • complete structured output for execute_code/check_code plan
  • complete pixi manifest/lock/README plan summary
  • add pixi quickstart and streamablehttp/sse transport guidance
  • complete install.bat delegation plan summary
  • complete TimingMiddleware for per-tool-call metrics plan
  • complete FastMCP 3.4.4 bump + plotly cleanup plan
  • reconcile FastMCP version string in CLAUDE.md to 3.4.4
  • complete MATLAB engine install script plan
  • create phase plan — 10 plans in 3 waves (pixi/docker/fastmcp 3.4.4)
  • mark phase complete — 7/7 plans, 39 issues resolved
  • complete test quality improvements plan summary and state update
  • add self-check result to SUMMARY
  • complete server and config cleanup plan summary and state update
  • complete job/session state machine fixes plan
  • complete pool resource safety plan summary and state update
  • complete centralize-security-in-executor plan
  • complete security hardening plan summary and state update
  • complete monitoring subsystem security and accuracy fixes plan
  • create phase plan — 7 plans across 4 waves for 39 codebase review issues
  • add validation strategy and update roadmap for phase 7
  • research phase 7 fix all HIGH and MEDIUM codebase review issues
  • auto-generated context (infrastructure phase)

CI/CD

  • remove AI wiki-gen workflow (docs.yml)
  • exercise the real MATLAB release-detection path (no license needed)

Other Changes

  • add failing tests for MATLAB engine install script
  • Merge pull request #7 from HanSur94/claude/fix-release-pipeline
  • Merge pull request #6 from HanSur94/claude/release-2.1.0
  • bump version to 2.1.0
  • Merge pull request #5 from HanSur94/claude/rework-wiki
  • Merge pull request #4 from HanSur94/claude/win10-install-lean-3d6b8f
  • Create SECURITY.md

v2.0.2 — Conda/Miniconda Support

Choose a tag to compare

@HanSur94 HanSur94 released this 03 Apr 17:24

What's Changed

Added Anaconda/Miniconda installation support — users can now set up the server with a single conda command.

Conda Support

For end users (no repo clone needed):

conda env create -f environment.yml
conda activate matlab-mcp
matlab-mcp --inspect

For developers (from repo clone):

conda env create -f environment-dev.yml
conda activate matlab-mcp-dev
pytest tests/ -x -q

CI

  • conda-test-pypi — validates environment.yml installs from PyPI and server loads
  • conda-test-dev — validates environment-dev.yml installs from source and all tests pass
  • 19 CI jobs total across Linux, Windows, macOS, Docker, conda

Full Changelog

v2.0.1...v2.0.2

v2.0.1 — CI & Integration Testing

Choose a tag to compare

@HanSur94 HanSur94 released this 03 Apr 16:41

What's Changed

Post-milestone improvements to CI pipeline and test coverage. No production code changes except one bug fix (monitoring routes on streamablehttp).

Bug Fixes

  • Monitoring routes on streamablehttp/dashboard, /health, /metrics now registered for the new transport (was SSE-only)
  • 12 ruff lint errors — unused imports and f-string placeholders cleaned up

CI & Testing

  • MCP integration test — live server subprocess + MCP client on localhost (Linux + Windows)
  • Docker Compose remote test — client container connects to server container over Docker network with bearer auth
  • Windows install.bat smoke test — validates the real user install path produces a working installation
  • 17 CI jobs across Linux, Windows (2022 + latest), macOS, Docker

Full Changelog

v2.0...v2.0.1

v1.5.0

Choose a tag to compare

@HanSur94 HanSur94 released this 23 Mar 10:47

What's New

Inspect Mode

  • Added --inspect flag to start the server without MATLAB for tool discovery and CI inspection

Glama Integration

  • Added glama.json for MCP server listing metadata
  • Server is now listed and inspectable on Glama

Security

  • Removed unused diskcache dependency (medium severity vulnerability)

v1.4.1

Choose a tag to compare

@HanSur94 HanSur94 released this 22 Mar 12:43

v1.4.1 — Documentation

Comprehensive Docstrings

Improved documentation across all source modules:

  • server.py: MatlabMCPServer.__init__, lifespan context manager, main entry point, background tasks
  • pool/engine.py: EngineState lifecycle, state property
  • pool/manager.py: _make_engine, get_status return dict
  • jobs/models.py: JobStatus terminal states, Job attributes
  • jobs/executor.py: _inject_job_context, _wait_for_completion, _safe_serialize
  • jobs/tracker.py: thread safety, pruning strategy
  • monitoring/: collector init, store init, health evaluation, route handlers, dashboard factory + all inner handlers
  • output/plotly_style_mapper.py: mapping tables, all trace converters
  • tools/monitoring.py: all three tool functions with Parameters/Returns
  • tools/custom.py: inner handler docstring
  • config.py: all 11 Pydantic models, load_config, validate_pool

README Updates

  • Added Windows one-click installer section (install.bat)
  • Updated MATLAB version requirement to R2022b+
  • Added offline install instructions

Full Changelog: v1.4.0...v1.4.1

v1.4.0

Choose a tag to compare

@HanSur94 HanSur94 released this 22 Mar 12:30

What's New in v1.4.0

One-Click Windows Installer

  • install.bat — fully offline, no-admin-rights installer for Windows 10/11
  • Bundles all 100+ Python wheels in vendor/ for zero-network installation
  • Auto-detects MATLAB R2022b+ and Python 3.10/3.11/3.12
  • Handles corporate SSL proxies, ancient pip versions, and read-only Program Files
  • Generates start-matlab-mcp.bat launcher and prints ready-to-paste config for Claude Desktop, Claude Code, and Cursor

MATLAB Engine API Install Improvements

  • Copies Engine source to temp with directory junctions to avoid access-denied errors in Program Files
  • Patches _arch.txt to point to real MATLAB after temp-dir build
  • Works fully offline with --no-build-isolation

CI/CD

  • Added Windows test matrix: windows-2022 (Win10) + windows-latest (Win11) × Python 3.10 + 3.12
  • Cross-platform test fixes for Windows path handling

Bug Fixes

  • Fixed .gitignore excluding monitoring/ subpackage from wheel
  • Fixed unused imports in monitoring/dashboard.py
  • Added missing Windows-only dependencies: pywin32, pywin32-ctypes, colorama, tzdata, async-timeout, tomli, taskgroup

Full Changelog: v1.3.0...v1.4.0

v1.3.0

Choose a tag to compare

@HanSur94 HanSur94 released this 18 Mar 20:52

What's Changed

Test Coverage

  • Increased code coverage from 63% to 90% with 385 new tests across 11 test files
  • Added comprehensive tests for all previously untested modules:
    • tools/jobs, tools/discovery, tools/custom, tools/files, tools/admin
    • server (MatlabMCPServer, create_server, main)
    • monitoring/dashboard, monitoring/store, monitoring/collector
    • jobs/executor, output/formatter, output/thumbnail
    • session/manager, pool/engine, monitoring/health
  • 755 tests now passing (up from 378)

Modules at 100% Coverage

tools/jobs, tools/discovery, tools/admin, tools/core, jobs/models, jobs/tracker, monitoring/health, monitoring/routes, output/formatter, output/thumbnail, session/manager

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 18 Mar 20:17

v1.2.0

This release introduces automated wiki generation and enhances documentation with MATLAB-to-Plotly plot conversion features.

New Features

  • Auto-generate all 11 wiki pages via Claude API on push to master

Documentation

  • Add MATLAB-to-Plotly plot conversion feature section to README
  • Add Plotly conversion screenshot to README
  • Add comprehensive specification for full wiki auto-generation with file mappings, validation, and error handling

v1.0.1 — CI fixes & security hardening

Choose a tag to compare

@HanSur94 HanSur94 released this 16 Mar 18:42

What's Changed

Security

  • Fixed incomplete blocklist in shipped config.yaml — all 11 blocked functions (system, unix, dos, !, eval, feval, evalc, evalin, assignin, perl, python) are now listed, matching code defaults and documentation

Fixes

  • Fixed 35 ruff lint errors (unused imports/variables) across src/ and tests/
  • Bumped minimum Python from 3.9 to 3.10 (fastmcp requires 3.10+)
  • Added psutil and uvicorn to [dev] extras so monitoring works out of the box
  • Fixed get_error_log docs to show actual default (20, not "varies")
  • Fixed README workspace isolation description to include all 5 cleanup commands
  • Added PyPI keywords and classifiers for better discoverability

Upgrade

pip install --upgrade matlab-mcp-python

Full changelog: v1.0.0...v1.0.1

v1.0.0 — First stable release

Choose a tag to compare

@HanSur94 HanSur94 released this 16 Mar 18:36

MATLAB MCP Server v1.0.0

Connect any AI agent (Claude, Cursor, Copilot) to MATLAB via the Model Context Protocol.

Highlights

  • 20 MCP tools — execute code, async jobs, file I/O, toolbox discovery, code checking, monitoring
  • Elastic engine pool — scales 2–10+ MATLAB engines based on demand
  • Interactive Plotly plots — MATLAB figures auto-converted to Plotly JSON with WebGL for large datasets
  • Async job system — long-running simulations with progress reporting
  • Custom tools — expose your .m functions as first-class AI tools via YAML
  • Monitoring dashboard — live gauges, time-series charts, execution log, health/metrics endpoints
  • Security — function blocklist, workspace isolation, filename sanitization, upload limits
  • Multi-user support — SSE transport with session isolation
  • Docker support — Dockerfile and docker-compose.yml included
  • Cross-platform — macOS, Windows, Linux (MATLAB 2020b+)

Install

pip install matlab-mcp-python

Requires MATLAB 2020b+ with the Engine API for Python installed.

Quick Start

# Run the server
matlab-mcp

# Connect to Claude Code
claude mcp add matlab -- matlab-mcp

See the README and Wiki for full documentation.