github marimo-team/marimo 0.17.0

3 days ago

This release delivers improvements to the AI user experience and adds support for Python 3.14.

AI autofix for cells

When AI generates code suggestions for fixing Python and SQL cells, you can now accept and run the suggested code with a single click of "Fix with AI":

Model Context Protocol (MCP) enhancements

marimo now exposes its AI tools through an MCP server endpoint, allowing external AI applications like Claude Code, Cursor, and VS Code to interact with your notebooks.

marimo edit notebook.py --mcp --no-token

See the MCP documentation to learn more. Special thanks our Resident MCP/AI Engineer @bjoaquinc for driving the implementation and improvements!

Python 3.14 support

marimo now officially supports Python 3.14, released this month. Official support for Python 3.9 has been dropped as it approaches end-of-life in October 2025, though it remains functional for the time being.

✨ Enhancements

  • Switch to msgspec_m fork (#6774)
  • Create ToolGuidelines for better Agent orientation of when and how to use marimo tools (#6793)
  • Migrate mo.ui.dataframe to narwhals; support duckdb, ibis, pandas, polars (#6772)
  • Support copying raw value for console output (#6751)
  • Add prompts and ActiveNotebooks prompt to marimo mcp server (#6760)
  • Python 3.14 support (#6712)
  • Add structured errors to frontend tools (#6748)
  • Intentional sidebar ordering (#6742)
  • Add bedrock inference profiles (#6738)
  • DRY common package managers install logic (#6685)
  • Add detailed output metadata to frontend tools (#6720)
  • floating label for AI generations in a cell (#6690)
  • Support Iceberg introspection through duckdb (#6707)
  • Add multi-tool support for all providers (#6672)
  • Reset input on submit in ai.chat (#6668)
  • AI autofix mode for sql cells (#6639)
  • Expand cache api to match functools api (#6660)
  • Rig up cache api (#6662)
  • Add multi-column sorting with stack-based behavior (#6257) (9b58a93)

🐛 Bug fixes

  • Watch for file move with watchdog and Claude Code (#6798)
  • Tutorial explanation of how to configure lazy execution (#6758)
  • Preserve cursor position when updating cell code in watch mode or auto-formatting (#6792)
  • Fix empty submits and output area (#6794)
  • Jupytext convert with markdown with quotes (#6789)
  • Use thead instead of div inside table (#6785)
  • Use event loop factory for uvicorn >= 0.36.0 (#6779)
  • Pytest-changed (#6761)
  • Send function-request when static to show Static Notebook warning (#6765)
  • Fix with ai button for all cells (#6755)
  • Support initial selection in Plotly plots (#6747)
  • Fix dependency panel edges (#6753)
  • Format OpenAPI generated files after codegen in build script (#6739)
  • Safer windows logging on PermissionErrors (#6735)
  • Update regex in Plotly template parser to handle special characters (#6728)
  • Ignore prune cache on windows (#6733)
  • Use UTF-8 encoding for subprocess calls in package managers (#6729)
  • Manually move copilot file extension from js to cjs (#6727)
  • Datetime UI element rendering in Docker containers (#6730)
  • Respect holoviews hv.output() settings when rendering in marimo (#6732)
  • Allow for cache hits from external modules (#6731)
  • Allow uv_build < 0.10.0 (#6714)
  • Handle OSErrors when seraching for pyproject.toml (#6726)
  • Typos ci (#6725)
  • New query to get duckdb databases for ducklakes (#6708)
  • Run / edit mode for docker (#6724)
  • More aggressive file reconciliation in --watch (#6701)
  • Ensure custom content in header (#6709)
  • Ensure consistent checking with unparsable cells (#6702)
  • Enable stub mechanism for caching un-pickable objects (#6657)
  • Handle big ints better (#6768)
  • Patch msgspec Python 3.14 compatibility (#6749)

📚 Documentation

  • Add documentation for mcp server, client, tools, and chat panel modes (#6744)
  • Remove duplicate phrase in SQL documentation (#6740)
  • Add async cache support (#6736)
  • Change READMEs to be more consistent for different languages (#6696)
  • Add marimo editable install in pixi env, simplify docs in CONTRIBUTING.md (#6679)
  • MCP server ui, auth, and rules (#6659)
  • uv-suitable update instructions when using uv (#6681)
  • Move sql linter to config instead of feat flag (#6665)
  • Verifying fe lints and pre-commmit hooks (#6642)
  • Update docs; resolve #6623 (#6693) (42f6183)

📝 Other changes

Contributors

Thanks to all our community and contributors who made this release possible: @akshayka, @bjoaquinc, @dmadisetti, @eamonburns, @jschfflr, @Light2Dark, @lucharo, @manzt, @mscolnick, @olad5, @Prince213, @rgasper, @schlich, @yairchu

And especially to our new contributors:

Full Changelog: 0.16.5...0.17.0

Don't miss a new marimo release

NewReleases is sending notifications on new releases.